python自动回复_Python—itchat实现微信自动回复

前言:

Python爬虫和微信结合到一起会产生怎样的火花?原则上,肉眼可见的页面都是可以被爬虫爬取到的,无论是网页还是手机app,即使是微信也不例外,于是乎github上就有大神开源了这样一个库—itchat:littlecodersh/ItChat​github.comv2-1c617a2b389772a0b15916be23add3f4_ipico.jpg

原理是利用爬虫技术和微信网页版的API接口来用Python模拟登陆网页版的微信,可以实现绝大部分网页版微信可以实现的功能!(具体原理详见:抓包及原理入门 - itchat)什么添加删除好友、查看好友头像图片、昵称、签名、消息转发.....都是不在话下,而且由于是软件执行,所以可以进行批量操作!于是乎可以批量群发消息,批量查看好友信息头像等等,也是无比方便!多说无益,itchat官网给出的教程非常清晰,大家可以直接跟着教程一步步尝试下,看看能实现哪些有趣的功能:项目简介 - itchat​itchat.readthedocs.iov2-dec1e1f4ba71be960110e0ca2042f317_120x160.jpg

废话不多说:

#_*_ 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库里text_reply()方法,msg['FromUserName']是加密过后的好友微信昵称,类似这样:'FromUserName': '@69bce2e06abac6829501f3ed9c25583d',我们要用itchat.search_friends()方法获得好友的信息表(frined)

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

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

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

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

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

...

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

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

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

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

回复好友消息的同时,给自己的【文件传输助手】发一份消息来做备份。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'))

为了方便在电脑控制台查看消息,你可以在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')

控制台输出如下:

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

itchat.auto_login(hotReload=True)

彩蛋:

下一篇文章:Python实现微信查天气+火车+飞机+快递!!!

对了,不只是集成了查询,还有简单实现了回复TDD/KTT(退订/开通自动回复)的功能,然后发过来的消息类型支持img、vedio、语音、文件下载到电脑备份。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值