这一篇写一个微信自动回复消息的程序
先导入库
import pyautogui as pyg
import pyperclip as pyc
import random
import time
from cnocr import CnOcr
写三个列表,分别是关键词,对应回复内容,和一个随机回复内容
key_list = ["在吗","在干什么","吃了没"]
reply_list = ["在","在看电视","还没"]
random_list = ["对对对","好好好","行行行"]
定义三个函数备用,分别实现点击目标、截图识别文字、根据情况回复消息的功能。
def click_target(img_target=str,surching_region=[],num=int):
"""
img_target:目标相对路径
surching_region:搜寻范围
num:点击次数
"""
img_position = pyg.locateCenterOnScreen(img_target,region=surching_region,confidence=0.7)
pyg.click(img_position,clicks=num)
time.sleep(2)
def ocr_repeat(Filename=str,surching_region=[]):
"""
将微信聊天区截图
识别文字
"""
pyg.screenshot(imageFilename=Filename,region=surching_region)
ocr = CnOcr()
out_ocr = ocr.ocr(Filename)
last_text = []
last_text = [i["text"] for i in out_ocr if i["score"]>0.4]
text = last_text[-1]
print(text)
return text
def repeat(receive_text=str):
"""
回复消息
repeat_text是回复的内容
"""
for index,item in enumerate(key_list):
if item == receive_text:
repeat_text = reply_list[index]
break
else:
repeat_text = random.choice(random_list)
pyc.copy(text=repeat_text)
pyg.hotkey("ctrl","v")
pyg.press("enter")
写一个主函数实现功能,并且用try和while True实现不断检测新的消息的功能。
pyg.click(x=1779,y=19) #点击缩小vscode界面
click_target(img_target="wechat.png",surching_region=[0,0,1920,1080],num=2)
# 主函数
def reply_run():
time.sleep(2)
click_target(img_target="new.png",surching_region=[457,185,314,734],num=1)
# 检测新消息的红点
time.sleep(1)
pyg.click(x=831,y=813) #点击消息回复框,以便输入回复消息
receive = str
receive = ocr_repeat(Filename="chat.png",surching_region=[770,186,759,569])
repeat(receive_text=receive)
#利用循环,不断检测新消息并回复
while True:
try:
reply_run()
except:
time.sleep(5)
运行调试