PC端python监听微信群消息,满足条件自动回复,扣排器
python监听微信群消息,python自动发送微信消息,自动回复微信消息,扣排器。
·
开头警告
记录一下最近开发的一个简易扣排器(监听微信群消息,当出现特定消息时给予回复)遇到的问题。用到一个工具wxauto,实际上是操作了微信客户端从界面上获取相关消息,并且发送消息。
pip install wxauto
或者git下载https://github.com/cluic/wxauto
from wxauto import WeChat
#要监听的微信群/个人微信 的名称
listen_list = ['相亲相爱一家人','张三','李四']
wx = WeChat()
for i in listen_list:
#添加监听对象,监听成功会自动打开监听对象的聊天窗口
wx.AddListenChat(who=i, savepic=False)
# 设置1秒查看一次是否有新消息
wait = 1
while True:
#获取所有监听群/个人消息
msgs = wx.GetListenMessage()
for chat in msgs:
who = chat.who # 获取聊天窗口名(人或群名)
one_msgs = msgs.get(chat) # 获取消息内容
for msg in one_msgs:
msgtype = msg.type # 获取消息类型
content = msg.content # 获取消息内容,字符串类型的消息内容
print(f'【{who}】【{msg.sender}】:{content}')
if 'xxx' in content: #根据消息内容设置要回复的条件,也可以根据发送人msg.sender决定是否回复
chat.SendMsg('要回复的内容')
time.sleep(wait)
实际在操作的过程中发现一个bug,就是程序刚启动的时候,偶尔会把监听窗口的当前页面的消息当成“新消息”监听到,导致启动程序时对历史消息进行了回复,但是也不知道复现条件是什么,于是设置了一个延迟执行判断,当程序启动十秒后再对拉取的信息处理决定要不要回复,修改后代码如下:
from wxauto import WeChat
from datetime import datetime
#要监听的微信群/个人微信 的名称
listen_list = ['相亲相爱一家人','张三','李四']
wx = WeChat()
for i in listen_list:
#添加监听对象,监听成功会自动打开监听对象的聊天窗口
wx.AddListenChat(who=i, savepic=False)
delay_second = 10
# 设置1秒查看一次是否有新消息
wait = 1
begin_time = datetime.now()
while True:
#获取所有监听群/个人消息
msgs = wx.GetListenMessage()
for chat in msgs:
who = chat.who # 获取聊天窗口名(人或群名)
one_msgs = msgs.get(chat) # 获取消息内容
for msg in one_msgs:
msgtype = msg.type # 获取消息类型
content = msg.content # 获取消息内容,字符串类型的消息内容
print(f'【{who}】【{msg.sender}】:{content}')
if (datetime.now()-begin_time).total_seconds() > delay_second:
if 'xxx' in content: #根据消息内容设置要回复的条件,也可以根据发送人msg.sender决定是否回复
chat.SendMsg('要回复的内容')
time.sleep(wait)
然后打包成exe文件,使用的是pyinstaller
pip install pyinstaller
pyinstaller --onefile your_script.py
生成的exe文件位于dist文件夹中,发现在我的电脑上能运行,但是在我朋友的电脑上会报错,最终发现是我朋友的微信客户端太旧了。然后说明文档是说支持以下版本:
但是我自己的微信版本是以下版本,仍然支持。
还发现一个问题,就是如果鼠标不小心在终端选中了文字,程序就会卡住,导致无法继续执行代码,右击终端,属性,取消以下两个选项
还还还有一个问题,在聊天窗口滚动到最上方加载历史消息的时候,会导致后加载出来的信息被当成新消息被获取到,这个暂时不知道怎么解决。
还有好多其他功能,详见文档https://wxauto.loux.cc/docs/intro
更多推荐
所有评论(0)