使用Python脚本自动发送个性化微信消息通知

2024-01-09 15:40:16

需求:

需要向单位同事定期(每周一次)发送每个人的业务情况提醒,同时也要发送新的登录token。如果采用邮件大家也不常看,提醒效果很差,同时邮件传输非常不安全,单位很多人邮箱默认密码不改,用来发送登录token不合适。这里采用了微信方式

1.数据表设计

CREATE TABLE [t_members] (
	[id] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
	[Name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
	[NickName] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
	[GroupName] [char] (30) COLLATE Chinese_PRC_CI_AS NULL ,
	[wxEnabled] [bit] NOT NULL CONSTRAINT [DF_t_members_wxEnabled] DEFAULT (1),
	[wxName] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
	[roleID] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
	[token] [char] (40) COLLATE Chinese_PRC_CI_AS NULL ,
	[tokenDate] [datetime] NULL CONSTRAINT [DF_t_members_tokenDate] DEFAULT (0),
	[tokenUsedTimes] [int] NOT NULL CONSTRAINT [DF_t_members_tokenUsedTimes] DEFAULT (0),
	[loginTimes] [int] NOT NULL CONSTRAINT [DF_t_members_loginTimes] DEFAULT (0),
	[lastLogin] [datetime] NULL 
) ON [PRIMARY]
GO

以上是一个用户的表,其中

【Name】:实际姓名,比如“张三”;

【NickName】:称呼,比如张三可以称为“张主任”、“老张”,人性化一点;

【wxName】:自己的微信中大家的名字,用于脚本中搜索使用。这里如果自己在这个数据库中的话要把自己的wxName设置为“文件传输助手”;

【GroupName】:分组信息,用于区分不同的业务组,发的消息内容可能不同;

其他的字段不大相关,不说了,,,

2.发送脚本

# 引入pyautogui模块以操作快捷键
import pyautogui
# 引入pyperclip模块以操作剪切板
import pyperclip
from datetime import datetime
import time

HotkeyDelay = 1
targets = ["文件传输助手","王五","张三","李四"]
msgs = ["自己你好!testTXT1",
         "小王你好!testTXT2",
         "张主任你好!testTXT3",
         "李四你好!testTXT4"]
def sendWxMessages(targets, msgs):
    try:
        # 打开微信窗
        pyautogui.hotkey("ctrl", "alt", "w")
        time.sleep(HotkeyDelay)
        i = 0
        while i < len(targets):
            # 清空剪切板并将目标写入到剪切板
            target = targets[i]
            pyperclip.copy("")
            pyperclip.copy(target)
            # 使用快捷键ctrl+f定位到微信搜索栏
            pyautogui.hotkey("ctrl", "f")
            time.sleep(HotkeyDelay)
            # 使用快捷键ctrl+v将目标粘贴到微信搜索栏,微信将自动搜索
            pyautogui.hotkey("ctrl", "v")
            time.sleep(HotkeyDelay)
            # 按回车键打开搜索出的目标
            pyautogui.press("enter")
            time.sleep(HotkeyDelay)
            # 清空剪切板并将未点检信息写入到剪切板
            msg = msgs[i]
            pyperclip.copy("")
            pyperclip.copy(msg)
            # 使用快捷键ctrl+v将信息粘贴到微信输入框,按回车发送消息
            pyautogui.hotkey("ctrl", "v")
            time.sleep(HotkeyDelay)
            #以下行可以注释掉用于测试所有人是否找到
            pyautogui.press("enter")
            i += 1                
    except Exception as ex:
        # logWriter("发送微信消息出现异常: " + str(ex))
        print("发送微信消息出现异常")
        # sys.exit(0)
        

curr_time = datetime.now()
print(curr_time)
sendWxMessages(targets, msgs)
curr_time2 = datetime.now()
print("执行时间", curr_time2-curr_time)

以上脚本从(利用Python发送微信消息的方法_python实现微信发送消息-CSDN博客)改写

其中 pyautogui.press("enter") 这句可以注释掉以试试搜索效果。

3.生成发送内容

这个简单,根据业务特点和人员表生成如下数组的字符串,拷贝至python中替换运行即可。

targets = ["文件传输助手","王五","张三","李四"]
msgs = ["自己你好!testTXT1",
         "小王你好!testTXT2",
         "张主任你好!testTXT3",
         "李四你好!testTXT4"]

总结

这种方法以自己的微信向大家发送个性化的消息,一来提醒效果好,二来安全,同时可能也体现了一种尊重。当HotkeyDelay = 1时,发送80个左右消息耗时约6分钟,这段时间不能进行屏幕操作。

后面可能会生成发送内容文件作为中介,将以上脚本改为从文件中读取发送内容,省的老是要打开python开发工具了。

文章来源:https://blog.csdn.net/bill_lee_sh_cn/article/details/135479513
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。