Python+itchat实现微信机器人,轻松搞定查看撤回消息、消息群发、清除好友高级功能
![]() | ![]() | ![]() | ![]() |
| 【性价之王】 | 【线路之王】 | 【价格之王】 | 【配置之王】 |
| 【免费之王】 | 【香港首推】 | 【梯子之王】 | 【独服之王】 |

之前介绍过基于酷 Q 的 QQ 机器人,参考酷 Q 机器人+vps+python 实现功能强大的 QQ 机器人。今天给大家介绍一款功能原理类似的微信机器人。该微信机器人是基于 itchat python 库实现的,主要原理是监听微信号收到的信息,并模拟微信用户发送信息。基础功能除了收发信息以外,还支持发文件、图片、好友验证等功能。可以在这些功能的基础上实现自动聊天、消息群发、查看撤回消息等高级功能,用在营销、推广、用户管理等各个方面。
接下来,将通过实现查看撤回消息这个小功能来介绍下 itchat 的使用方法。
如果希望机器人长期在线运行,建议将微信机器人跑在 vps 上,这样只要你把机器人部署好了就不用去管它了。推荐使用 vultr 的基础款云服务器,月付 5 美元,均采用千兆带宽、SSD 硬盘,稳定性有保障,按小时计费,随用随停,且支持支付宝付款。而且 vultr 现在还有注册送 100 美元的活动,参考:VULTR 2020 年优惠,新用户直接送 100 美元,附额外领 3 美元教程
推荐阅读:月付不到 3 刀的便宜 VPS 主机最全盘点月付 3-7 刀,质量口碑保证,网络线路优秀的 vps 盘点
功能实现很简单只需要运行一个 python 脚本就可以了,脚本如下
# -*-encoding:utf-8-*- # -*-encoding:utf-8-*-import osimport reimport shutilimport timeimport itchatfrom itchat.content import * # 说明:可以撤回的有文本文字、语音、视频、图片、位置、名片、分享、附件 # {msg_id:(msg_from,msg_to,msg_time,msg_time_rec,msg_type,msg_content,msg_share_url)}msg_dict = {} # 文件存储临时目录rev_tmp_dir = "D:/python/weixin/temp"if not os.path.exists(rev_tmp_dir): os.mkdir(rev_tmp_dir) # 表情有一个问题 | 接受信息和接受 note 的 msg_id 不一致 巧合解决方案face_bug = None # 将接收到的消息存放在字典中,当接收到新消息时对字典中超时的消息进行清理 | 不接受不具有撤回功能的信息# [TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO, FRIENDS, NOTE]@itchat.msg_register([TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO])def handler_receive_msg(msg): global face_bug # 获取的是本地时间戳并格式化本地时间戳 e: 2017-04-21 21:30:08 msg_time_rec = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 消息 ID msg_id = msg['MsgId'] # 消息时间 msg_time = msg['CreateTime'] # 消息发送人昵称 | 这里也可以使用 RemarkName 备注 但是自己或者没有备注的人为 None msg_from = (itchat.search_friends(userName=msg['FromUserName']))["NickName"] # 消息内容 msg_content = None # 分享的WWW.VPS.COM.IN msg_share_url = None if msg['Type'] == 'Text' \ or msg['Type'] == 'Friends': msg_content = msg['Text'] elif msg['Type'] == 'Recording' \ or msg['Type'] == 'Attachment' \ or msg['Type'] == 'Video' \ or msg['Type'] == 'Picture': msg_content = r"" + msg['FileName'] # 保存文件 msg['Text'](rev_tmp_dir + msg['FileName']) elif msg['Type'] == 'Card': msg_content = msg['RecommendInfo']['NickName'] + r" 的名片" elif msg['Type'] == 'Map': x, y, location = re.search("" + x.__str__() + " 经度->" + y.__str__() else: msg_content = r"" + location elif msg['Type'] == 'Sharing': msg_content = msg['Text'] msg_share_url = msg['Url'] face_bug = msg_content # 更新字典 msg_dict.update( { msg_id: { "msg_from": msg_from, "msg_time": msg_time, "msg_time_rec": msg_time_rec, "msg_type": msg["Type"], "msg_content": msg_content, "msg_share_url": msg_share_url } } ) # 收到 note 通知类消息,判断是不是撤回并进行相应操作@itchat.msg_register([NOTE])def send_msg_helper(msg): global face_bug if re.search(r"\<\!\[cdata\[.*撤回了一条消息\]\]\>", msg['Content']) is not None: # 获取消息的 id old_msg_id = re.search("\(.*?)\<\>", msg['Content']).group(1) old_msg = msg_dict.get(old_msg_id, {}) if len(old_msg_id) < 11: itchat.send_file(rev_tmp_dir + face_bug, toUserName='filehelper') os.remove(rev_tmp_dir + face_bug) else: msg_body = "告诉你一个秘密~" + "\n" \ + old_msg.get('msg_from') + " 撤回了 " + old_msg.get("msg_type") + " 消息" + "\n" \ + old_msg.get('msg_time_rec') + "\n" \ + "撤回了什么 ⇣" + "\n" \ + r"" + old_msg.get('msg_content') # 如果是分享存在WWW.VPS.COM.IN if old_msg['msg_type'] == "Sharing": msg_body += "\n 就是这个WWW.VPS.COM.IN➣ " + old_msg.get('msg_share_url') # 将撤回消息发送到文件助手 itchat.send(msg_body, toUserName='filehelper') # 有文件的话也要将文件发送回去 if old_msg["msg_type"] == "Picture" \ or old_msg["msg_type"] == "Recording" \ or old_msg["msg_type"] == "Video" \ or old_msg["msg_type"] == "Attachment": file = '@fil@%s' % (rev_tmp_dir + old_msg['msg_content']) itchat.send(msg=file, toUserName='filehelper') os.remove(rev_tmp_dir + old_msg['msg_content']) # 删除字典旧消息 msg_dict.pop(old_msg_id) if __name__ == '__main__': itchat.auto_login(hotReload=True,enableCmdQR=2) itchat.run()
运行该 python 脚本,在终端会弹出一个二维码,通过微信扫码就可以登录了。
另外如果二维码的格式坏了,可以换个 shell 工具试试。
实现效果如下
转载请注明原文WWW.VPS.COM.IN:Python+itchat 实现微信机器人,轻松搞定查看撤回消息、消息群发、清除好友高级功能 (4)
猜你可能想看的VPS
- DMIT 洛杉矶 CN2 GIA 上线 可选无限流量 可选抗攻击 IP 全球[VPS测评]
- OneVPS - 首月 5 折优惠码 新加坡日本等 8 机房最低月付$4日本VPS[主机]
- 双十一 LOCVPS→全新 KVM 七折优惠 充值 300 送 50 双全球[VPS测评]
- 送美元 RackNerd 春节促销→登陆 购买最高送$188 红包 独立独立服务器[U]
- Sublime Text 3 注册码(最新版 build 3143)全球[VPS测评]
- 搬瓦工最便宜的美国 cn2vps 补货 Zenlayer CN2 线路 美国VPS[主机]
- VPS 零元购 酷番云:1 核 1G 60G 硬盘 2M 带宽 内蒙机房全球[VPS测评]
- SmartHost→$6.95 月 KVM-8GB 40GB 2TB 洛全球[VPS测评]
- 凯特云→21 元 月 512MB 内存 10GB SSD 空间 500G虚拟空间(主机)
- KTS24→€2.5 月 4G 内存 25GB SSD 空间 5TB 流虚拟空间(主机)
- 疯狂猜成语 图猜成语一根棍子打草旁边一条蛇是什么成语?全球[VPS测评]
- 搬瓦工 美国洛杉矶高质量 CN2 全线补货,1G-10G 口 GIA 带美国VPS[主机]
- 谷歌浏览器Google Chrome版本大全全球[VPS测评]
- 百度统计是否会影响博客在百度的优化排名?全球[VPS测评]
- AcroServers 波兰商家,全球38个节点,默认1Gbps带宽,€全球[VPS测评]
- WordPress 5.2 Beta1发布测试,新增古腾堡编辑器区块管理全球[VPS测评]
- 微基主机 洛杉矶 Cera Gen2 VPS预售 AMD5900x/2G全球[VPS测评]
- 在 Debian 和 Ubuntu 中使用 APT 管理软件包全球[VPS测评]
- 咕咕云 → 1500元 年 苏日IPLC 1C2GB20GB硬盘 1T流独立服务器[U]
- 2020: OLVPS 512 内存 30G SSD 1T流量 俄罗斯伯全球[VPS测评]
- 2019网一: PacificRack → 1C 512M RAM 20全球[VPS测评]
- 消费复苏形势良好,我们将多措并举实施扩大内需政策全球[VPS测评]
- 虾皮跨境电商怎么样?虾皮跨境电商靠谱吗?全球[VPS测评]
- JGKVM:1核/512M/30G/600G/30Mbps/洛杉矶CN2全球[VPS测评]
- 印象云怎么样?85折香港安畅CN2vps带宽3M月付23元香港VPS[主机]
- 印象云vps,香港安畅gia低至22元起,1核1G内存,小带宽无限流量,香港VPS[主机]
- edgeNAT双十二:韩国VPS/美国CN2/香港CN2VPS主机,月付韩国VPS[主机]
- 拼多多回应筹备跨境电商业务:不予置评全球[VPS测评]
- 拼多多入局跨境电商平台,首站美国;奈雪的茶在上海建第二总部;pidan“美国VPS[主机]
- 野草云vps怎么样?香港美国vps,1核1G3M带宽,38元/月美国VPS[主机]
转载请注明原文地址:http://140.238.13.167:12355/read-9981.html











