官方华丽的术语---略
一个自动回复机器人
微信自上线以来,一直没有自动回复的功能,想必是有他们的理念。但是有些人群,确实对此功能有一定需求,我举两个栗子:
不愿时刻被消息打扰的人
消息需要批量处理的人们(比如微商)
设计了几个功能:
[x] 收到消息立即自动回复
[x] 收到消息延迟指定时间回复
[x] 对不同好友定制不同的回复内容
[x] 在手机端随时进行控制
itchat的原理是通过扫码进行远程微信网页端的登录,然后通过在移动端进行操作,网页端进行响应,来实现一些功能,虽然似乎绕了个弯子,但是在微信的限制下,这似乎已经是一种最佳的方式了,犹如戴着镣铐起舞。
我们可以先通过设定几个全局变量来做作为功能的开关和保存数据的容器。
#自动回复开关
SWITCH_REPLY=True
#延迟回复开关
SWITCH_DELAY=False
#延迟时间
DELAY_TIME=120
#消息前缀开关
SWITCH_PREFIX=True
#消息前缀内容
PREFIX_CONTENT="[自动回复]"
#回复内容字典
REPLY_DICT={}
#延迟回复字典
DELAY_REPLY_DICT={}
然后通过判断web端在”文件管理器“中接收到的字符串指令来进行不同操作,这一部分的代码比较简单且冗长,这里就不贴出来了,完整源码地址将会在文末给出。
假如此时我们收到了朋友的消息,需要程序给出自动回复。
#获取发送消息的朋友的信息
target_friend=itchat.search_friends(userName = msg['FromUserName'])
if target_friend:
#获取ta的昵称
nickName=target_friend['NickName']
if not REPLY_DICT.__contains__(nickName):
#设置默认回复
REPLY_DICT[nickName]="抱歉我有事暂未看到消息,稍后回复,若有急事可以电话联系(•ω•`)"
reply_content=REPLY_DICT[nickName]
#判断自动回复开关
if SWITCH_REPLY:
#判断延时回复开关
if SWITCH_DELAY:
localtime = time.time()
DELAY_REPLY_DICT[nickName]=[localtime,msg['FromUserName']]
print (DELAY_REPLY_DICT)
if not SWITCH_DELAY:
#判断消息前缀开关
if SWITCH_PREFIX:
reply_content = PREFIX_CONTENT + REPLY_DICT[nickName]
else:
reply_content = REPLY_DICT[nickName]
#发送消息
itchat.send(reply_content, toUserName=msg['FromUserName'])
收到朋友消息即时进行自动回复是很简单的&