Python实现微信自动回复

欢迎来到

视学算法

640?wx_fmt=gif

    今天阿广给大家介绍微信的itchat库,itchat是一个开源的微信个人号接口,也可以使用该库进行微信网页版中的所有操作,Example:微信机器人、查找好友、添加好友、拉好友进群、自动回复等。本次使用itchat库实现的是自动回复,关键字过滤。

640?wx_fmt=gif

640?wx_fmt=png

效果展示

自动回复界面

640?wx_fmt=png

文件传输界面

640?wx_fmt=png

Python控制台

640?wx_fmt=png

实现代码

#_*_ coding:utf-8 _*_

#__author__='阳光流淌007'

import re
import time
import itchat
from itchat.content import *

@itchat.msg_register([TEXT])

def text_reply(msg):

    friend = itchat.search_friends(userName=msg['FromUserName'])
    
    replyContent = "收到您于%s发送的【%s】" % (time.strftime('%m-%d %H:%M',time.localtime()), msg['Type'])
   
    if msg['Type'] == 'Text':
    
        if re.search(r"快乐",msg['Content']):
        
            replyContent += "【衷心感谢您的祝福,阿广祝您:新年快乐???,开开心心[耶][耶][耶],身体健康[發][發][發]】"
            
            itchat.send('@img@%s' % '/Users/xxx/moneyGod.jpg',toUserName=msg['FromUserName'])
   
    itchat.send("好友:【%s(昵称:%s)】于:【%s】发来消息: 【%s】" % (friend['NickName'], friend['RemarkName'], time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()), msg['Text']),toUserName='filehelper')
    
    itchat.send(replyContent,toUserName=msg['FromUserName'])
   
    print("于【%s】收到好友【%s(昵称:%s)】发来的【%s】: 【%s】" % (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()), friend['NickName'], friend['RemarkName'], msg['Type'], msg['Content']))
    
    print("于【%s】回复:%s" % (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()), replyContent)+'\n')

itchat.auto_login(hotReload=True)

itchat.run()

如何运行

    安装itchat库,然后程序运行起来,用手机扫描弹出来的二维码框,模拟登陆网页版微信二维码。此时就开启了autoReply功能。

代码解释

注:本代码解释参考于知乎:Lyon

1.重写itchat库里text_reply()方法,msg['FromUserName']是加密过后的好友微信昵称,类似这样:'FromUserName': '@69bce2e06abac6829501f3ed9c25583d',我们要用itchat.search_friends()方法获得好友的信息表(frined)

friend = itchat.search_friends(userName=msg['FromUserName'])

2.然后才方便查找好友微信昵称friend['NickName']和好友备注名friend['RemarkName']。

replyContent = "收到您于%s发送的【%s】" % (time.strftime('%m-%d %H:%M',time.localtime()), msg['Type'])

3.replyContent是String类的自定义回复内容,msg['Type']是消息类型,例子中只用到了Text类型,还有语音、图片、文件、名片、等类型(PICTURE, MAP, CARD, NOTE, SHARING, RECORDING, ATTACHMENT, VIDEO)详见itchat官网。

if msg['Type'] == 'Text':
    ...

4.规定如果收到的消息类型是文本Text且文字内容里包含“快乐”,则用itchat.send()发送一张财神爷拜年的图片过去。

itchat.send('@img@%s' % '/Users/xxx/moneyGod.jpg',toUserName=msg['FromUserName'])

5.否则就按照replyContent设置的内容正常回复。toUserName=msg['FromUserName']表示谁给你发了消息,你就回复给谁!

itchat.send(replyContent,toUserName=msg['FromUserName'])

6.回复好友消息的同时,给自己的【文件传输助手】发一份消息来做备份。toUserName='filehelper'表示消息接收对象是“文件传输助手”

(itchat.send("好友:【%s(昵称:%s)】于:【%s】发来消息: 【%s】" % (friend['NickName'], friend['RemarkName'], time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()), msg['Text']),toUserName='filehelper'))

7.为了方便在电脑控制台查看消息,你可以在text_reply()方法中加上:

#可以加上print(msg)打印整条消息字典
print("于【%s】收到好友【%s(昵称:%s)】发来的【%s】: 【%s】" % (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()), friend['NickName'], friend['RemarkName'], msg['Type'], msg['Content']))
print("于【%s】回复:%s" % (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()), replyContent)+'\n')

8.最后,通过如下命令登陆(hotReload=True),即使程序关闭,一定时间内重新开启也可以不用重新扫码。

itchat.auto_login(hotReload=True)

阿广论道

    我们单独使用过微信,也单独使用过python,大家想没想过将python和微信结合在一起,将会摩擦出什么样的火花?不光我们想到了,其实早就有一帮计算机爱好者们想到了,并且他们开发出了开源库:itchat。这样一看,python可以对微信的数据进行分析了,这时我们可能就想到了很多好玩的事情,例如可以通过微信的聊天情况,分析微信两端用户是否有好感,提高表白成功率等等等好玩的事情。这些好玩的事情我会慢慢进行实现!未来是属于大数据的时代,如果你对大数据感兴趣,抓紧加入阿广的小团队吧!

后记

640?wx_fmt=jpeg

欢迎添加学姐微信拉你进微信交流群

 

640?wx_fmt=gif

一起用代码改变世界!

长按关注「视学算法」微信公众号!

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值