当前位置:   article > 正文

Python 微信自动化工具开发系列06_根据用户信息自动回复升级版本(2024年2月可用 支持3.9最新微信)_csdn私信自动回复

csdn私信自动回复

前言

一个需求

需要利用Python+第三方库wxauto 用于微信上自动获取聊天信息,从而根据自己需求对信息自动进行二次处理,
比如自动回复,再比如自动发送文件或者其他。

																--- 记录于2022年08月
																--- 2024年2月再次测试可用
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

使用Python3的第三方库wxauto, 它适用于Windows的微信客户端

官网: https://github.com/cluic/wxauto


功能

*这篇是微信自动化工具开发系列的第六篇

对上面的第五篇进行了简单的扩展,对于多个关键词进行多个不同的回复

代码的主要功能

  • Python自动根据微信群或者微信好友的信息自动回复(对于多个关键词进行多个不同的回复)

    比如: 有人在群里发了@223,自动回复aaa

    有人发了@123,自动回复bbb

报错处理

  • 运行报错
raise LookupError('Find Control Timeout({}s): {}'.format(maxSearchSeconds, self.GetSearchPropertiesStr()))
LookupError: Find Control Timeout(10.0s): {Name: '输入', ControlType: EditControl}
  • 1
  • 2
  • 解决方法
    修改本地的第三方库wxauto.py第145行self.EditMsg = self.UiaAPI.EditControl(Name='输入')
# self.EditMsg = self.UiaAPI.EditControl(Name='输入')
# 修改为了
self.EditMsg = self.UiaAPI.ButtonControl(Name='发送文件').GetParentControl().GetNextSiblingControl().GetFirstChildControl()
  • 1
  • 2
  • 3

保存即可。


原因

这边使用wxauto来进行开发,而不是itchat,原因如下

itchat都是之前的教程,
本质上是用的微信的网页端的接口来进行数据交互的。

如果你想要使用itchat的代码的话,

  • 1、先测试下你的账号是否还可以登录微信网页端

https://wx.qq.com/
腾讯官方虽然没有正式的发表声明,但是你搜一下可以看到相关信息
大概从去年开始(时间不太确定),大部分微信账号都不可以继续登录微信网页端,只有少部分账号还可以登录。
原因未知。

  • 2、如果可以登录微信网页版 那么你可以关闭这个博客去网上找下itchat的代码来学习运行下,

如果登录失败,那么或许你可以尝试下wxauto也就是这里所说的方法来运行下。


环境

Windows 10
Python 3.8.10
Windows 10的微信客户端版本:3.9.9.43 (英文版本)
  • 1
  • 2
  • 3

注:微信客户端中文版跟英文版都可以
没什么太大区别。
目前wxauto对wechat 3.9版本已支持,可以使用wechat 最新版本的
wechat 3.7 版本的安装包(可以网上寻找):https://wechat-for-windows.en.uptodown.com/windows/download

安装

安装Python3的第三方库wxauto,具体步骤如下

官网: https://github.com/cluic/wxauto

在cmd窗口执行下面命令进行安装

  • 安装第三方库wxauto
python3 --version
python3 -m pip uninstall wxauto
python3 -m pip install wxauto -i https://pypi.tuna.tsinghua.edu.cn/simple 
  • 1
  • 2
  • 3
  • 查看wxauto是否安装成功
python3 -c "import wxauto; print(wxauto.VERSION)"
  • 1

使用步骤

1. 新建main06.py

自己修改里面的配置

from wxauto import *
import time

# 获取当前微信客户端
wx = WeChat()

# 获取会话列表
wx.GetSessionList()


###############################
# 1、获取默认窗口聊天信息
###############################
def reply_message_if_send_key_word(user, key_word, reply_message):
    # 默认是微信窗口当前选中的窗口
    # 输出当前聊天窗口聊天消息
    wx.ChatWith(user)

    # 获取最近的聊天记录
    #wx.LoadRecentMessage(1)
    wx.LoadMoreMessage()
    msgs = wx.GetAllMessage
    message_value = [msg[1] for msg in msgs]
    for index, msg in enumerate(msgs):
        if msg[1] ==key_word:
            print("*"*20)
            if reply_message not in message_value[index:]:
                print(f"收到关键词{key_word},将自动回复以下语句:{reply_message}")
                wx.SendMsg(reply_message) 
            else:
                print("上面已回复,不再进行自动回复,等待新的关键词")
            print("*"*20)
            #wx.SendMsg(reply_message) 


if __name__ == '__main__':
    user = '什么'
    key_word = '@223'
    reply_message = 'aaa'
    reply_dict = {
        '@223': 'aaa',
        '@123': 'bbb',
    }

    while True:
        for key_word, reply_message in reply_dict.items():
            reply_message_if_send_key_word(user=user, key_word=key_word, reply_message=reply_message)
        time.sleep(1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

注: 或者下面这个 这两个代码都可以用,功能没什么区别

main06.py

from wxauto import *
import time

# 获取当前微信客户端
wx = WeChat()

# 获取会话列表
wx.GetSessionList()


###############################
# 1、获取默认窗口聊天信息
###############################
def reply_message_if_send_key_word(user, reply_dict):
    # 默认是微信窗口当前选中的窗口
    # 输出当前聊天窗口聊天消息
    wx.ChatWith(user)

    # 获取最近的聊天记录
    #wx.LoadRecentMessage(1)
    wx.LoadMoreMessage()
    msgs = wx.GetAllMessage
    message_value = [msg[1] for msg in msgs]
    key_words = [x for x in reply_dict.keys()]
    for index, msg in enumerate(msgs):
        if msg[1] in key_words:
            print("*"*20)
            reply_message = reply_dict[msg[1]]
            if reply_message not in message_value[index:]:
                print(f"收到关键词{key_word},将自动回复以下语句:{reply_message}")
                wx.SendMsg(reply_message) 
            else:
                print("上面已回复,不再进行自动回复,等待新的关键词")
            print("*"*20)
            #wx.SendMsg(reply_message) 


if __name__ == '__main__':
    user = '什么'
    key_word = '@223'
    reply_message = 'aaa'
    
    reply_dict = {
        key_word: reply_message,
    }

    # 多个特定字段对应多个不同的回复
   
    reply_dict = {
        '@223': 'aaa',
        '@123': 'bbb',
    }

   

    while True:
        reply_message_if_send_key_word(user=user, reply_dict=reply_dict)
        time.sleep(2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

2. 打开微信

  • windows10下打开微信客户端 (注:如果用的英文,记得点击左下角Settings-> General 切换为中文)
  • 正常扫码登录
  • 打开微信窗口到前面,不要最小化或者缩小到底部菜单

3. 执行代码

打开cmd窗口,在cmd窗口执行:

如果没有安装第三方库,参考上面的安装步骤进行安装再执行下面命令

cd E:\2022Python  # 修改为你的 main06.py所在路径
python3 main06.py
  • 1
  • 2

4. 输出

cmd窗口输出结果为:

PS E:\2022Python> python3 main06.py

********************
收到关键词@223,将自动回复以下语句:bbb
********************
********************
上面已回复,不再进行自动回复,等待新的关键词
********************
********************
上面已回复,不再进行自动回复,等待新的关键词
********************
********************
上面已回复,不再进行自动回复,等待新的关键词
********************
********************
收到关键词@223,将自动回复以下语句:aaa
********************
********************
上面已回复,不再进行自动回复,等待新的关键词
********************

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

后续

这边刚开始写一下系列文章,想发展下自己的博客和微信公众号账号

如果对你有帮助,方便的话可以关注下 博客左侧的微信公众号(点击我的头像进入个人中心,位于左侧下方)

如有问题的话,也可通过公众号直接留言,这边有微信提醒,可以几小时内及时回复

也可直接在CSDN博客留言或者私信留言,这个没有微信提醒,所以这边可能一天或者几天内给回复

微信公众号所在位置:打开个人中心也就是这个链接
https://blog.csdn.net/xiaozi_001?type=blog
左侧下方

如有需求,

想要对微信进行一些自动化操作来提高效率:

比如

  • 自动群发不同聊天信息到几个微信群里

  • 自动群发不同的图片到几个微信群里

  • 自动群发不同的文件到几个微信群里


  • 如果你本身懂代码的话

如果你本身懂代码的话, 直接看第三方库wxauto的使用,自己来写就可以了,

博客后续也会基于这个系列继续更新。

欢迎点赞留言提出问题,方便的话 点赞收藏 关注下微信公众号

  • 如果你本身不懂代码

只是想要一个简单的微信处理工具来满足自己的需求的话

可以微信公众号留言或者私信留言,

发下你的具体需求,这边后续根据你的需求进行下二次开发

如有需求,可关注下博客左侧的微信公众号留言或者直接私信留言

前者可以几小时内及时回复

后者可能看的不及时,大概一天或者几天内有回复

除此之外,
目前支持对微信群信息进行二次数据挖掘获取有用信息,比如
1.配送群信息的出发地,到达地,货源等相关信息
2.兼职群信息的标题、内容、手机号等相关信息
具体根据实际需求来进行定制开发
可在个人主页看到 公众号 联系方式


其他

如有问题 欢迎提出

如有疑问 欢迎留言

如有作用 欢迎点赞

如有失效 欢迎留言

2024年2月 可用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/857336
推荐阅读
相关标签
  

闽ICP备14008679号