python 使微信自动回复
https://zhuanlan.zhihu.com/p/308999073
今天是鄙人的生日,欢luo过后想写点关于itchat的文章~

(不小心暴露年龄了,是的,我已经16岁了~~)
言归正传,这里说的自动回复包括了两种:一个是类似QQ的“【自动回复】”,就是一句自己设置的固定的话,别人以给你发消息你就自动回复这句话;二是类似Siri的智能回复,就是找了一个机器人代替你聊天,哈哈,虽然贱贱的但是我真的很讨厌微信聊天。
一、运行环境和看懂下文需要的知识
1、Python基本语法。这个如果不清楚的话,先学习下吧,几天就看完了:
2、Linux系统。当然这个不是必须的,如果你只是想试验一下的话完全可以在windows下,Python可以跨平台的,不过毕竟我想24h跑这个脚本,那就最好用服务器,服务器大部分是Linux的,我用的是阿里云ECS CentOS release 6.5。
二、基本原理
1、针对第一种类QQ的自动回复,这个很简单,就是收到消息就向发送者发送一条固定字符串就行了。
2、针对第二种类Siri的智能回复,这个需要调用图灵机器人(Turing Robort),就是将收到的消息发送给Turing,再把Turing回复的消息发送给发送者。
3、有一些问题需要解决
- 如何区别这两种自动回复呢?类QQ自动回复针对所有人,不针对群消息(估计1分钟内就被踢出群!),向自己发送消息“开启自动回复”,则便开启了对所有人的类QQ自动回复;向自己发送消息“关闭自动回复”,则便关闭了对所有人的类QQ自动回复。类Siri消息针对指定人,也是不针对群消息,向对方发送消息“= =” (你可以自己换成别的),便开启了智能回复;向对方发送消息“x x”,则关闭智能回复。
- 只针对某个人或者某些人开启智能回复呢?在脚本中增加一个需要对其开启智能回复的人的list,只有这些人发的消息才会自动回复。
三、代码实现
1、申请Turing机器人的对外接口key

添加一个机器人,设置机器人跟你的名字一样,其他信息也一样,因为有时候这个傻子会以第三人称来回复消息,比如“帅帅觉得这个很不错!”,设置好,不容易露馅!

最关键的是拿到APIkey,然后替换掉下面代码中的“replaceKeyByYourKey”。
2、python源代码
#coding=utf8
import itchat
from itchat.content import TEXT
from itchat.content import *
import sys
import time
import re
import requests, json
import aiml
import os
# When recieve the following msg types, trigger the auto replying.
@itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO],isFriendChat=True, isMpChat=True)
def text_reply(msg):
global auto_reply, robort_reply, peer_list
# The command signal of "[自动回复]"
if msg['FromUserName'] == myUserName and msg['Content'] == u"开启自动回复":
auto_reply = True
itchat.send_msg(u"[自动回复]已经打开。\n", msg['FromUserName'])
elif msg['FromUserName'] == myUserName and msg['Content'] == u"关闭自动回复":
auto_reply = False
itchat.send_msg(u"[自动回复]已经关闭。\n", msg['FromUserName'])
# elif not msg['FromUserName'] == myUserName:
else:
if auto_reply == True:
itchat.send_msg(u"[自动回复]您好,我现在有事不在,一会再和您联系。\n", msg['FromUserName'])
else:
'''
For none-filehelper message,
if recieve '= =', start robort replying.
if recieve 'x x', stop robort replying.
'''
if msg['Content'] == u"= =":
robort_reply = True
peer_list.append(msg['ToUserName'])
return
elif msg['Content'] == u"x x":
robort_reply = False
peer_list.remove(msg['ToUserName'])
return
# Let Turing reply the msg.
if robort_reply == True and msg['FromUserName'] in peer_list:
# Sleep 1 second is not necessary. Just cheat human.
time.sleep(1)
cont = requests.get('http://www.tuling123.com/openapi/api?key=replacekeyByYourKey&info=%s' % msg['Content']).content
m = json.loads(cont)
itchat.send(m['text'], msg['FromUserName'])
if m['code'] == 200000:
itchat.send(m['url'], msg['FromUserName'])
if m['code'] == 302000:
itchat.send(m['list'], msg['FromUserName'])
if m['code'] == 308000:
itchat.send(m['list'], msg['FromUserName'])
return
# Main
if __name__ == '__main__':
# Set the hot login
itchat.auto_login(enableCmdQR=True, hotReload=True)
# Get your own UserName
myUserName = itchat.get_friends(update=True)[0]["UserName"]
print myUserName
auto_reply = False
robort_reply = False
peer_list = []
itchat.run()
四、成果检验
不过奉劝大家不要轻易开启智能回复,下面是我第一次实战应用!这位几个小时前新老铁已经把我拉黑啦!瞅瞅这个机器人段子手胡说八道了些什么!!

“感觉你不是正常人”,哈哈哈,对不住了,老铁~~

python 使微信自动回复的更多相关文章
- python 实现微信自动回复(自动聊天)
原文地址(本人):https://blog.csdn.net/a5878989/article/details/54974249 介绍 微信自动回复其实主要就是登录,接收消息,回复消息三个功能,微信没 ...
- 10分钟教你用Python实现微信自动回复
01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把 ...
- python实现微信自动回复机器人
一 简单介绍 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计等功能. 总而言之,可用 ...
- 用Python玩微信(非常详细)
代码放在这里:wzyonggege/python-wechat-itchat 词云那里可以换成小黄人图片 ----------------------------------------------- ...
- python_库学习_02_微信自动回复机器人
一.python发展的趋势日益庞大,微信也有对应的库itchat.这次的实例做做成可在任意电脑运行的微信自动回复机器人exe.文件. 二.完成这个小应用我们需要装一些库,, itchat:这个东东不出 ...
- itchat库微信自动回复祝福语
过年了,之前看到一些python文章介绍用itchat自动回复微信,我自己就写了一个. 官方文档https://itchat.readthedocs.io/zh/latest/,这个库挺简洁的,对着接 ...
- 利用python在微信群中签到、抢沙发(适用于任何账号)
利用python在微信群中签到.抢沙发 注意 程序仅能在电脑上运行,运行时需要保证群界面在最前端且不被移动. 背景 我是一名高中生(2020年),疫情期间,在家上网课,有的老师让我们在班群里签到. 其 ...
- python实现微信接口(itchat)
python实现微信接口(itchat) 安装 sudo pip install itchat 登录 itchat.auto_login() 这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实 ...
- 细数Python Flask微信公众号开发中遇到的那些坑
最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...
随机推荐
- Android笔记(二十二) Android中的GridView
GridView和ListView一样,是Android中比较常见的布局控件,譬如我们的手机桌面其实就是一个GridView. 效果: 实现过程和ListView类似,也是通过Adapter将数据源展 ...
- 第六篇:Python函数进阶篇
在了解完了 Python函数基础篇之后,本篇的存在其实是为了整合知识,由于该篇的知识是否杂乱,故大家可以通过点开点连接直接进入其详细介绍,该篇主要大致的介绍一下几个知识点: 一.Python的迭代器 ...
- git命令——git add
如何理解git add git add命令本身并不复杂,字面意义上理解是“将一个文件添加到项目中“.但是这种理解有缺陷,有时候可能会出现某个文件同时存在暂存区域 和 非暂存区域(staged and ...
- Nginx服务rewrite模块功能说明 网站自动跳转功能
实现域名地址信息跳转,用于做伪静态地址 www.impkk.com/oldboy?edu.html 动态地址 www.impkk.com/oldboy-edu.html 伪静态地址 rewrite ^ ...
- 交付Dubbo微服务到kubernetes集群
1.基础架构 1.1.架构图 Zookeeper是Dubbo微服务集群的注册中心 它的高可用机制和k8s的etcd集群一致 java编写,需要jdk环境 1.2.节点规划 主机名 角色 ip hdss ...
- FM系列
在计算广告中,CTR是非常重要的一环.对于特征组合来说,业界通用的做法主要有两大类:FM系列和Tree系列.这里我们来介绍一下FM系列. 在传统的线性模型中,每个特征都是独立的,如果需要考虑特征与特征 ...
- IntelliJ IDEA如何默认使用阿里云的Maven仓库
点击IntelliJ IDEA的config中的setting选项 在<mirrors>节点中加上一个子节点,然后保存即可: <mirror> <id>alimav ...
- Robot Framework--接口实例一
需求:api/car/detail/recommendcar.json 接口返回的车辆数量少于等于20且车辆不能重复 分析:统计接口中返回的列表的长度,再把carid拿出来组成一个新的列表,判断这 ...
- 【安卓基础】ViewPager2的入门使用
之前的项目中使用过ViewPager,被坑过几次.如果你在RecyclerView中的Item使用ViewPager,你绝对会产生莫名其妙的问题,因为ViewPager在同一界面上不能有两个一样的ID ...
- 前端开发规范:命名规范、HTML 规范、CSS 规范、JavaScript 规范
一个好的程序员肯定是要能书写可维护的代码,而不是一次性的代码,怎么能让团队当中其他人甚至一段时间时候你再看你某个时候写的代码也能看懂呢,这就需要规范你的代码了.我是有一点强迫症的人,上周我们后端给我了 ...