wechat_autoreply


简介

    无意中看到GitHub上的大佬给女朋友写的每日定时发送微信消息的程序,想到自己经常也因为各种事情没看到女朋友的消息,导致自己跪搓衣板,所以想自己也学习一下如何实现一个微信自动回复的功能,顺便学习学习。
  本程序功能较为简单,运行程序,输入要自动回复对象的微信备注名和要自动回复的内容,然后登录微信,即可实现对指定对象的消息自动回复。
  程序中主要用到了itchat这个库,它是一个基于微信网页版的接口微信库,可以实现对微信的各种操作。


实现功能

查询日期;查询天气;机器人聊天。


配置环境及依赖

语言:

Python 3.5 及以上

依赖库:

itchat
datetime
requests

天气查询API:

http://t.weather.sojson.com/api/weather/city/{city_code}

聊天机器人:

图灵机器人 http://www.turingapi.com

程序说明

获取天气信息

    这里主要参考了https://github.com/sfyc23/EverydayWechat这位大神的方法,用了一个存有全国格城市对应代码的列表,根据城市代码在接口中查询对应天气状况。

def isJson(resp):try:resp.json()return Trueexcept:return False#获取天气信息
def get_weather_info(city_code):weather_url = f'http://t.weather.sojson.com/api/weather/city/{city_code}'resp = requests.get(url=weather_url)if resp.status_code == 200 and isJson(resp) and resp.json().get('status') == 200:weatherJson = resp.json()# 今日天气today_weather = weatherJson.get('data').get('forecast')[1]# 温度high = today_weather.get('high')high_c = high[high.find(' ') + 1:]low = today_weather.get('low')low_c = low[low.find(' ') + 1:]temperature = f"温度 : {low_c}/{high_c}"# 空气指数aqi = today_weather.get('aqi')aqi = f"空气质量 : {aqi}"# 天气tianqi = today_weather.get('type')tianqi = f"天气 : {tianqi}"today_msg = f'{tianqi}\n{temperature}\n{aqi}\n'return today_msg
图灵机器人接口

    这里用到的是http://www.turingapi.com这里的图灵机器人,只需要在网站注册并创建机器人,获得每个用户独有的"userId"和每个机器人独有的"apiKey",根据其要求的请求参数,向其接口http://openapi.tuling123.com/openapi/api/v2请求数据即可。

示例:

#图灵机器人接口
def robot(info):#info = msg['Content'].encode('utf8')# 图灵API接口api_url = 'http://openapi.tuling123.com/openapi/api/v2'# 接口请求数据data = {"reqType": 0,"perception": {"inputText": {"text": str(info)}},"userInfo": {"apiKey": "XXX...XXX",  #每个机器人独有的apiKey"userId": "XXXXXX"      #每个用户独有的userId }}headers = {'Content-Type': 'application/json','Host': 'openapi.tuling123.com','User-Agent': 'Mozilla/5.0 (Wi`ndows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3486.0 ''Safari/537.36 '}# 请求接口result = requests.post(api_url, headers=headers, json=data).json()# 提取text,发送给发信息的人return result['results'][0]['values']['text']

上面一段程序输入info,通过接口返回机器人的回复。

itchat微信微信接口

itchat官方文档:http://itchat.readthedocs.io
itchatGitHub网址:https://github.com/littlecodersh/ItChat
它通过一个装饰器实现对微信消息的监听:

@itchat.msg_register(itchat.content.TEXT)

其中,括号内为itchat监听的消息类型,TEXT表示对文字内容进行监听,此外itchat还支持多种消息类型,如:
MAP             地理位置的分享
CARD           名片信息
SHARING        链接分享
PICTURE        表情或照片
RECORDING     语音
ATTACHMENT    附件
VIDEO           视频
FRIENDS         加好友申请,也就是说发起的一个好友申请其实是一条特殊的信息
SYSTEM         系统消息,比如系统推送消息或者是某个群成员发生变动等等
NOTE            通知文本,比如撤回了消息等等

然后通过使用:

itchat.send(text, toUserName=userName)

向指定对象回复消息。其中的userName并不是微信名,是一串数字字母的代码,所以我们可以从刚才监听获取的消息中得到向我们发送消息的对象的userName,即:

userName = msg['User']['UserName']

然后我们可以用:

msg['User']['RemarkName']

来通过对对象的微信备注名的对比来判断是否是女朋友,是否是我们要回复的对象。我这里只能有一个对象,当然有些人可能有多个女朋友的,容我献上自己的双膝。。。

回复代码示例:

@itchat.msg_register([itchat.content.TEXT,itchat.content.PICTURE])
def reply_msg(msg):global t, name, rtextuserName = msg['User']['UserName']if t == 2:if msg['User']['RemarkName'] == name:if msg['Content'] == "退出":itchat.send("机器人已退出", toUserName=userName)t = 0else:text = msg['Content']rep = robot(text)itchat.send(rep+"\n回复“退出”,退出机器人聊天", toUserName=userName)elif t == 1:if msg['User']['RemarkName'] == name:ctn = msg['Content']if ctn in city_dict.city_dict:city_code = city_dict.city_dict[ctn]wheather = get_weather_info(city_code)itchat.send(wheather, toUserName=userName)else:itchat.send("无法获取您输入的城市信息", toUserName=userName)t = 0else:if msg['User']['RemarkName'] == name:if msg['Content'] == '你好':itchat.send('你好', toUserName=userName)elif msg['Content'] == '天气':itchat.send('请输入您要查询的城市名', toUserName=userName)t = 1elif msg['Content'] == '日期':itchat.send(nowdate, toUserName=userName)elif msg['Content'] == '聊天':itchat.send('你好,我是人工智障', toUserName=userName)t = 2else:itchat.send(rtext + ',自动消息\n回复“日期”,获取日期\n回复“天气”,获取天气\n回复“聊天”,开始和机器人聊天', toUserName=userName)

这样我们就可以对指定对象实现自动回复,并且实现简单的获取日期、天气和机器人聊天的功能。关于itchat我也是刚接触,讲得不详细,具体更多指导内容可以详见上面的官方文档和GitHub链接。


项目地址

https://github.com/hh997y/wechat_autoreply


小结

    很简单的一个小项目,几乎没什么技术含量,可以拿来练练手,也可以在这上面丰富其它更多有意思的东西,也算是每天学习进步一点点哈哈,提升自己的姿势水平。


参考

https://github.com/sfyc23/EverydayWechat
https://blog.csdn.net/coder_pig/article/details/81357810
https://blog.csdn.net/Lynn_coder/article/details/79436539

用Python实现简单的微信自动回复相关推荐

  1. python发音机器人_微信自动回复机器人(PHP与python)

    微信自动回复机器人很受欢迎,可以通过简单的代码编写就可以省去大部分的人工回复时间.接下来贤集网小编要与大家分享的的是微信机器人自动回复消息如何通过PHP与python语言实现. 用python实现微信 ...

  2. Python+itchat+PyQt5个人版微信(自动回复、防撤回、红包提醒等)

    最近在学习python,无意中看到了itchat这个包,感觉很有意思,简单实现了一个LowB版微信,给女朋友捉弄朋友用.其实没有什么难度,做的很简陋,这里做下记录. 环境: python3.6 PyQ ...

  3. python祝福语_Python | 微信自动回复祝福语

    马上就要过年了,好多小伙伴都已经顺利到家.在这提前祝大家:新年快乐. 昨天发现自己的 itchat 终于可以登陆了(差不多被封了两个月),马上就要过年了,必须用 itchat 搞点事情--实现自动回复 ...

  4. python微信自动打卡_「微信辅助」吃鸡再也不怕了,Python用wxpy实现微信自动回复...

    我是程序员小小叶,为大家带来原创精彩技术内容. 首先安装wxpy. pip install wxpy优点:相比itchat封装了接口,使用较为方便.注意事项:wxpy 支持 Python 3.4-3. ...

  5. python的wxpy库_【微信辅助】吃鸡再也不怕了,Python用wxpy实现微信自动回复

    我是程序员小小叶,为大家带来原创精彩技术内容. 首先安装wxpy. pip install wxpy 优点:相比itchat封装了接口,使用较为方便. 注意事项:wxpy 支持 Python 3.4- ...

  6. python wxpy_【微信辅助】吃鸡再也不怕了,Python用wxpy实现微信自动回复

    首先安装wxpy. 优点:相比itchat封装了接口,使用较为方便.注意事项:wxpy 支持 Python 3.4-3.6,以及 2.7 版本. 实现三个场景: 场景1:你在网吧吃鸡需要及时回复给老婆 ...

  7. python评价文本留言答复的质量_【微信辅助】吃鸡再也不怕了,Python用wxpy实现微信自动回复...

    我是程序员小小叶,为大家带来原创精彩技术内容. 首先安装wxpy.pip install wxpy 优点:相比itchat封装了接口,使用较为方便. 注意事项:wxpy 支持 Python 3.4-3 ...

  8. Python 最简单的微信刷屏

    import time from pynput import mouse, keyboardtime.sleep(5) # 预留5秒用于准备 m_mouse = mouse.Controller() ...

  9. 使用Python编写微信自动回复脚本

    为了编写微信自动回复脚本,我们可以使用itchat库,该库提供了对微信的接口,可以通过Python程序与微信进行交互. 以下是一个简单的微信自动回复脚本示例: import itchat# 回复消息的 ...

最新文章

  1. 559.N叉树的最大深度
  2. soot——相关资源
  3. javascript设计模式漫谈之使用委托
  4. 第一个OC类、解析第一个OC程序
  5. 再高深的 Python 面试难题,这门课都给你整得明明白白!
  6. 简单分析ComponentScan
  7. 仓库处理中 无法修改_临沂用友U8erp系统软件如何新增仓库?
  8. WordPress 主题教程 #4b:Header 模板 2
  9. POJ NOI MATH-7651 自来水供给
  10. 危机中转型,如何获得领导的支持?
  11. 为什么训练时测试准确率大幅度波动_Nature Mach Intell|类药性预测准确率有极限...
  12. 代码检查、评审、单元测试工具 大搜集
  13. 关于销售的成本和收入
  14. 【活动时间调整】博客搬家,有礼相送
  15. 在线php后门查找,一款猥琐的PHP后门分析
  16. 微信演进的六点思考:微信生态如何演变?如何在其中掘金?
  17. SQLyog的基本使用
  18. 数学之美11--拼音输入法的数学原理
  19. 莱昂纳多或出演乔布斯传记电影
  20. C++循环结构——津津的储蓄计划

热门文章

  1. spring-session整合redis原理 排查失效原因
  2. ppt怎样转成pdf
  3. 无限制使用ppt转pdf功能
  4. 【个人理解】简单理解前后端分离,微服务,分布式开发
  5. 【转】解密饿了么大前端团队
  6. 对数螺旋线(等角螺旋线)数学公式推导
  7. Arthas学习笔记
  8. java实现wav格式转MP3格式
  9. 变废为宝,打造人文油画后期效果
  10. 不要糊涂的度日 记录点东西