使用PyAutoGUI库写个简单的微信自动聊天器

你现在看到的一个简单的微信自动聊天器,当你女朋友发来消息时,它会自动帮你回复预先设置的内容,当你有多个女朋友同时来消息时,它也能应对自如,看完这个视频,你就能学会做这个。

什么是自动化

我们今天要说的自动化是单指电脑这块的,目的是为了提升工作效率或者解决重复劳动的问题,之前有个做设计同学遇到这样一个问题:一个文本文件,里面放着几十个图片素材的链接,怎么快速的保存这些图片呢?
正常人的做法一般是一个个打开这些链接,然后再保存;而使用自动化则可以自动一个个打开并保存,也可以同时打开并保存,比起手动打开不但时间更短,更避免了做一些无意义的重复劳动。

我早期实践自动化的方案

我印象中最早接触自动化,是在参加学校网页设计大赛的时候,发现了评选作品网页的bug,为了刷作品票,写了一个自动刷新并点票的程序,是使用易语言写的,最后我小心翼翼的刷票得了第二名,不敢刷的太猛!!!

还有就是在做电商运营的时候,因为经常要xx出库,所以就用按键精灵写了个自动出库的脚本,当时出错率还是蛮高的,但是经过不段的调试,最后终于完美省出每天需要30分钟手动出库的时间。
可见,自动化对我还是非常有帮助的,你遇到需要重复劳动的事情又是什么呢?欢迎在弹幕上或者评论打出你遇到的问题,大家一起讨论解决吧!

pyautogui

上面我使用了易语言和按钮精灵来解决重复劳动的事情,而今天,我要使用python库pyautogui来实现自动化的操作,这个库有三个主要的模块,鼠标操作,键盘操作和图片操作。

鼠标操作

我们日常使用鼠标的操作,无非就是从a点到b点,然后按左键点击,按右键弹出菜单,中键拖拽,这些在pyautogui都有对应的API。

键盘操作

pyautogui不光可以监听到键盘的按下和弹起,还可以模拟组合热键,如万能键复制ctrl+c,粘贴ctrl+v,还有专门输入英文的API,如输入write(\’Hello,World\’)。虽然不支持直接输入中文,但是我们可以通过pyperclip类似的库先将中文copy到剪切板,再进行粘贴,就可以输入任意中文了。

图像操作

当我们使用浏览器时,是不是得找到浏览器的图标,然后再双击打开,在pyautogui中,我们可以使用简易的图像识别功能,来实现寻找图标的功能,还支持颜色值,像素块之类的识别。

微信自动聊天器

接下来,我们要使用pyautogui来实现一个简单的微信自动聊天器,它具备以下功能:

  1. 可以监听到来消息,并自动回复消息
  2. 自动回复的消息可以自定义
  3. 可以同时接收多条消息时,并一条一条的自动回复

监听并回复消息

首先,我们来实现第一个功能,监听消息,并自动回复,思考一下,微信来消息时,会出现一个醒目的数量标识,我们可以把这个数量标识截图保存,然后使用locateOnScreen载入,最后用一个while循环包裹起来。
有了数量标识的坐标后,我们就可以使用moveTo来移动鼠标,使用click来点击,使用write来写入回复的内容,这样自动回复也就好了。

自定义回复内容

首先,我们要有一个数组来存放随机的内容,然后使用random库的choice来返回一个随机内容。
对了,在pyautogui中不能直接输入中文,可以引入 pyperclip 库,先copy一下,然后再使用热键粘贴就可以回复中文了。

多条消息的回复

如果你觉得上面的的自动聊天器过于简单,你也可以使用EasyOCR库,对接下图灵机器人,可以做到识别消息内容调用智能聊天机器人自动回复,像真人聊天一样的。

结尾

最后,有需要【微信自动聊天器】的可以关注 程序员小兵” 微信公众号,回复 “微信自动聊天器” 获取代码,那我们下个视频见。

列出下代码吧。

import pyautogui
import pyperclip
import random

all_pos = pyautogui.locateAllOnScreen('./chat-dot3.png')

print(list(all_pos))
msg_list = [
    '嗯嗯',
    '哈哈哈',
    '有趣',
    '可以的',
    '不错',
    '对对对',
    '真的吗',
]

try:
    while True:
        all_pos = pyautogui.locateAllOnScreen('./chat-dot3.png')
        for pos in all_pos:
            pyautogui.moveTo(pos.left, pos.top)
            pyautogui.click(button='left', clicks=1, interval=0.25)

            msg = random.choice(msg_list)
            pyperclip.copy(msg)
            pyautogui.hotkey('ctrl', 'v')
            pyautogui.press('enter')
except KeyboardInterrupt:
    print('\n')

本文系作者 @ 原创发布在 极客猿小兵的博客。未经许可,禁止转载。


极客猿小兵 » 使用PyAutoGUI库写个简单的微信自动聊天器

发表回复