【微信聊天机器人】基于python实现的PC端个人微信聊天机器人

文章目录

  • 前言
  • 一、运行环境
  • 二、使用步骤
    • 1.引入库
    • 2.根据文本内容自动生成回复
    • 3.接收消息的回调函数
    • 4.启动客户端
    • 5.程序入口
  • 三、代码全文
  • 总结


前言

微信自动回复、聊天机器人应该是一个很多人迫切需要的功能(如时间管理大师),网上能搜到的大多解决方案是采用2018年之前的基于Web版微信的itchat或wxpy第三方库,但现在申请注册比较晚的微信号无法登录Web版微信,故上述两个库均已失效。还有一些需要注入dll手段的,操作比较麻烦不适合新手。
本文用python提供一种解决方案初代版本,只需调包,无需对系统进行其他操作,可根据自身需要定制内容。
温馨提示:仅供娱乐,请谨慎使用,由自身使用不当引起家庭矛盾、跟上级领导关系不和等各种不良后果,本文作者概不负责。
该机器人支持天气查询、成语接龙、彩虹屁等功能,可在天行控制台进行定制。
效果展示:
以上均为自动回复
自动回复


提示:以下是本篇文章正文内容,下面案例可供参考

一、运行环境

Windows10+python 3.7.4+PC端微信V2.7.1.82版本+PyCharm/VS2017
提示:python版本一定要是3.7及以后;微信版本目前仅支持V2.7.1.82版本

PC端微信V2.7.1.82版本安装包百度网盘下载
链接:https://pan.baidu.com/s/1yADEwqht8hcTTjxpkW8DXw 
提取码:rneo

二、使用步骤

1.引入库

代码如下(示例):

from WechatPCAPI import WechatPCAPI
import time
import http.client, urllib

所用库的说明和下载地址:
https://github.com/terrywangt/WeChatBot
https://www.tianapi.com/apiview/47
第二个网址为天行公司的网址,免费申请注册可以获得接口,有示例代码

2.根据文本内容自动生成回复

代码如下(示例):

# #生成回复内容的函数,传入的是接收到的字符串,返回值为回复str
def send_msg_producer(content):conn = http.client.HTTPSConnection('api.tianapi.com')  # 接口域名params = urllib.parse.urlencode({'key': '你在天行网站上申请获得的APIKEY', 'question': content})headers = {'Content-type': 'application/x-www-form-urlencoded'}conn.request('POST', '/robot/index', params, headers)res = conn.getresponse()data = res.read()str_data = data.decode('utf-8')  # 报文解码返回值为str,转为dict再操作dict_data = eval(str_data)out_content = dict_data['newslist'][0]['reply'] #将要回复消息读取出来,作为返回值return out_content

该函数传入的参数content为你对机器人的提问,str类型(也就是微信收到的新消息字符串);返回值为机器人根据上文自动生成的回复,str类型。
注意:代码中的key需要填上你在天行网站上申请到的key

3.接收消息的回调函数

代码如下(示例):

# 接收消息的回调函数,可自行定义
def on_message(message):print(message)msg_obj = messageprint(msg_obj['type'])# #----------------------------------------------------------------------个人聊天if msg_obj['type'] == 'msg::single':name_id = msg_obj['data']['from_wxid']send_or_recv=msg_obj['data']['send_or_recv'][0]content = msg_obj['data']['msg']# #---------------------------------------# #打印输出测试print(name_id)print(send_or_recv)print(content)if (send_or_recv == '0') and (name_id == '你想启用自动回复的目标1' or name_id == '你想启用自动回复的目标2' or name_id == '你想启用自动回复的目标3'):# #判定通过print('该个人节点已通过')# #封装的生成输出内容的函数out_content = send_msg_producer(content)# ---------------------------------------------------------发送输出wx_inst.send_text(to_user=name_id, msg= '主人让我对你说:\n' + str(out_content) )# #-------------------------------------------------------------------------------------群聊设置elif msg_obj['type'] == 'msg::chatroom':chatroom_id = msg_obj['data']['from_chatroom_wxid']send_or_recv = msg_obj['data']['send_or_recv'][0]content = msg_obj['data']['msg']# ---------------------------------------# 打印输出测试print(chatroom_id)print(send_or_recv)print(content)if (send_or_recv == '0') and (chatroom_id == '你想启用自动回复的目标1' or chatroom_id == '你想启用自动回复的目标2'): # #判定通过print('该群聊节点已通过')# #调用内容生成函数out_content = send_msg_producer(content)# ---------------------------------------------------------发送输出wx_inst.send_text(to_user=chatroom_id, msg='主人让我对你说:\n' + str(out_content))return None

每当收到新消息时,就会触发回调函数。示例中的回调函数内容为个人和群聊两部分,需要在if判定条件里填入你想进行自动回复的目标。注意:填入的目标id一定要为原始id,比如个人的微信号格式为wxid_1122334455asdf,微信号更改后的那个id不可以,群聊的微信号格式为1122334455@chatroom,如何才能知道某个人的原始微信号,可以百度,也可以直接看WechatPCAPI接受到信息的报文,不赘述。
代码中部分用于测试输出的语句我没有注释掉,不影响运行结果,同时可以让你可以很清楚的看到,当微信收到新消息时,你的程序都进行了哪些操作


4.启动客户端

def main():# 启动微信 目前仅支持微信V2.7.1.82wx_inst.start_wechat(block=True)# 等待登陆成功,此时需要人为扫码登录微信while not wx_inst.get_myself():time.sleep(5)# 登录成功了print(wx_inst.get_myself())time.sleep(10)# 更新所有好友信息,数据会通过上面的回调函数返回wx_inst.update_frinds()

5.程序入口

wx_inst = WechatPCAPI(on_message=on_message)
main()

程序从此处开始执行,也可以写为if__name__== ’ __main __’:的方式来执行

三、代码全文

from WechatPCAPI import WechatPCAPI
import time
import http.client, urllibdef send_msg_producer(content):conn = http.client.HTTPSConnection('api.tianapi.com')  # 接口域名params = urllib.parse.urlencode({'key': '你在天行网站上申请获得的APIKEY', 'question': content})headers = {'Content-type': 'application/x-www-form-urlencoded'}conn.request('POST', '/robot/index', params, headers)res = conn.getresponse()data = res.read()str_data = data.decode('utf-8')  # 报文解码返回值为str,转为dict再操作dict_data = eval(str_data)out_content = dict_data['newslist'][0]['reply'] #将要回复消息读取出来,作为返回值return out_contentdef on_message(message):print(message)msg_obj = messageprint(msg_obj['type'])# #----------------------------------------------------------------------个人聊天if msg_obj['type'] == 'msg::single':name_id = msg_obj['data']['from_wxid']send_or_recv=msg_obj['data']['send_or_recv'][0]content = msg_obj['data']['msg']# #---------------------------------------# #打印输出测试print(name_id)print(send_or_recv)print(content)if (send_or_recv == '0') and (name_id == '你想启用自动回复的目标1' or name_id == '你想启用自动回复的目标2' or name_id == '你想启用自动回复的目标3'):# #判定通过print('该个人节点已通过')# #封装的生成输出内容的函数out_content = send_msg_producer(content)# ---------------------------------------------------------发送输出wx_inst.send_text(to_user=name_id, msg= '主人让我对你说:\n' + str(out_content) )# #-------------------------------------------------------------------------------------群聊设置elif msg_obj['type'] == 'msg::chatroom':chatroom_id = msg_obj['data']['from_chatroom_wxid']send_or_recv = msg_obj['data']['send_or_recv'][0]content = msg_obj['data']['msg']# ---------------------------------------# 打印输出测试print(chatroom_id)print(send_or_recv)print(content)if (send_or_recv == '0') and (chatroom_id == '你想启用自动回复的目标1' or chatroom_id == '你想启用自动回复的目标2'): # #判定通过print('该群聊节点已通过')# #调用内容生成函数out_content = send_msg_producer(content)# ---------------------------------------------------------发送输出wx_inst.send_text(to_user=chatroom_id, msg='主人让我对你说:\n' + str(out_content))return Nonedef main():# 启动微信 目前仅支持微信V2.7.1.82wx_inst.start_wechat(block=True)# 等待登陆成功,此时需要人为扫码登录微信while not wx_inst.get_myself():time.sleep(5)# 登录成功了print(wx_inst.get_myself())time.sleep(10)# 更新所有好友信息,数据会通过上面的回调函数返回wx_inst.update_frinds()wx_inst = WechatPCAPI(on_message=on_message)
main()

总结

所提供的代码只是一个最简单的示例,还有很多改进的空间。比如创建一个dict来存储需要自动回复的对象的微信id,然后通过创建一个简单的UI窗口来实现对该dict的增删。采用跟本文一致的环境的话应该不会产生额外的环境问题,如有问题请参照本文2.1节给出的两个链接。机器人回复的效果也可以提升,本文采用的是天行提供的免费试用版库,普通用户每天可以免费调用接口100次,也可以自行购买别的库来使用,如腾讯云。回复中“主人让我对你说:”是额外添加的标志词,从而来区分机器人发的消息和本人发的消息,想要以假乱真可将该提示去掉。

感谢免费提供库的作者和公司。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21540.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基于PC版微信实现机器人

在github中有基于web版的微信实现的实时收发消息api,python调用起来非常简单。但是目前来说,大部分的用户没法登录web版的微信,因此也就没法使用。 今天我们介绍基于windows版的微信,实现实时收发信息。本文站在巨人的肩膀上&…

Python实现微信机器人——itchat库

itchat是一个开源的微信个人号接口,可以使用该库进行微信网页版中的所有操作,比如:所有好友、添加好友、拉好友群聊、微信机器人等等。详细用户请看文档介绍,在这里。 本文主要使用该库完成一个能够处理微信消息的的图灵器人&…

自己动手实现4大免费聊天机器人:小冰、图灵、腾讯、青云客

完整源代码(以及.py下载链接)见最后! 聊天机器人(Chatterbot)是经由对话或文字进行交谈的计算机程序。能够模拟人类对话,通过图灵测试,如Siri、小爱同学、微软小冰等。 本教程将教你用Python实现…

微信公众号接入微软小冰

前言 文章首发于微信公众号:前端指南。本文是一篇有点偏向于运营层面的技术类文章,文章略长,请耐心阅读。 也就是最近这几年,人工智能行业已经变得十分的火热了。不可否认,人工智能是整个互联网行业的一种趋势&#xf…

chrome 调试之 - 给微软小冰看病(无论给小冰发送什么内容都只回复“我已经开始升级啦,期待一下吧!”)

微软 Bing 搜索推出了小冰AI智能聊天模块,具体启用方式是用edge或chrome浏览器打开链接 cn.bing.com 后在输入框搜索任意内容,待搜索结果页面加载完并稍等片刻,页面右侧就会出现一个躲在滚动条后面的小萝莉,抚摸...不,…

微软小冰智能聊天是如何实现的

微软小冰智能聊天是如何实现的? 官网介绍:微软小冰 虽然知道小冰的智能回复背后,应该是微软庞大的数据库。 但作为大二的学生,对这方面不是很了解,期待能得到答复。谢谢。 关注者 1,033 被浏览 112,398 关注问题 写回答…

微软小冰推出“虚拟版”微信!比原版更好玩

来源:雷科技 提起AI,大伙的脑海里会想到什么场景? 小雷知道,有些自带“污妖王”属性的小伙伴,已经浮现出AI换脸那些事儿了。 只要有足够的人脸数据,再加上足够长的时间训练,就可以把明星的脸…

【小沐学NLP】Python实现聊天机器人(微软小冰)

🍺NLP开发系列相关文章编写如下🍺:1🎈【小沐学NLP】Python实现词云图🎈2🎈【小沐学NLP】Python实现图片文字识别🎈3🎈【小沐学NLP】Python实现中文、英文分词🎈4&#x1…

微软小冰智能聊天是如何实现的?

我在知乎关于《微软小冰智能聊天是如何实现的?》做的回答 刚好做过一个类似的产品,虽然没有那么高大上,但一些核心技术原理应该也参考意义,说一下做的思路。 类似小冰这样的产品说简单也简单,说复杂也复杂。单纯从外面…

微信小冰陪聊机器人Python

一、原因 女友因为我老不回消息分手了,很郁闷。 所以想能不能实现一个陪聊机器人,如果以后还有女朋友免去痛苦,可以专心打游戏敲代码,嘿嘿嘿。(果然有这种思想的人不会有女朋友了) 二、实现 本人学习没…

微软小冰:全双工语音对话详解

讲师 | 周力 来源 | AI科技大本营在线公开课 微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本、全双工语音与实时视觉的新感官。这项新技术可以实时预测人类即将说出的内容,实时生成回应,并控制对话节奏&…

itchat与微软小冰的碰撞!--微软小冰接入itchat实现微信自动回复

微软小冰接入itchat实现微信自动回复 本文简介先上效果图!一、集成微软小冰制作聊天机器人原理代码监听好友信息监听小冰信息 二、定时发送消息推送与自动回复同时实现原理代码完整代码加点花的代码结语 本文简介 最近研究了一下基于python实现的itchat模块&#x…

ChatGPT 最新知识大全:工作原理,ChatGPT 是如何训练的,局限性是什么,开源 ChatGPT 替代品有哪些?

我们今天谈论的应用程序在发布后的 5 天内就突破了 100 万用户,并在 2023 年 2 月之前获得了 1 亿用户,创下了增长最快的平台记录。它在 2 月达到了 10 亿次访问,在 2023 年 3 月达到了 16 亿次访问。相比之下,Facebook需要 10 个月,Spotify需要 5 个月,Instagram需要 2 …

昇思MindSpore AI框架在知名度与使用率市场份额上处于第一梯队

2023年2月6日,行业研究机构Omdia(Informa tech集团旗下国际信息与通信技术研究机构)发布了《中国人工智能框架市场调研报告》,深入分析了中国人工智能框架市场的竞争格局,产业现状与创新趋势。Omdia通过调研发现&#…

当ChatGPT杀入学术出版领域,有人开始围堵,有人悄悄地打开大门

导读 最近,智能聊天机器人ChatGPT火到了天际。 它能够通过学习和理解人类的语言来进行对话,还能根据聊天内容的上下文进行互动,像人一样来沟通交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。 除此之外&#xff…

Sorry, you have been blocked !vultr 又被 openai 屏蔽了,只能换个 vps 了

最近有段时间没登陆 chatGPT,最近听说 chatGPT 出插件功能了,于是就想体验一下。 打开网站发现 有特么被屏蔽了。 不慌,压压惊,先看看是屏蔽了 IP 还是屏蔽了账号。 Google 一下,一个靠谱的答案是: open…

AI新时代拐点:人工智能当红炸子鸡Chatgpt

​当下,AI聊天程序ChatGPT风靡全网,因为它能够给出更合理且充满人情味的答案,引发了广泛关注。那么,ChatGPT究竟能做什么?它的背后又有什么样的故事呢?让我们一起来探索一下吧! 在我们深入了解C…

马斯克启动TruthGPT/ 星舰首飞再延期至本周四/ Adobe AI工具重磅更新...今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好,今天是4月18日星期二,昨天,马斯克的星舰又双叒叕咕咕咕了~ 今天科技圈有哪些新鲜事儿,和日报君一起来看看~ Space X星舰发射再度推迟,周边产品已开始预售 昨日&#…

edge-tts微软文本转语音库,来听听这些语音是否很熟悉?

上期图文教程,我们分享了Azure机器学习的文本转语音的账号申请与API申请的详细步骤,也介绍了基于python3实现Azure机器学习文本转语音功能的代码实现过程,虽然我们可以使用Azure账号免费提供一年的试用期,但是毕竟是要付费的,我们的API也无法长期使用,好在微软发布了edge…

韩语学习笔记

微软韩语键盘顺序: ㅂ ㅈ ㄷ ㄱ ㅅ ㅛ ㅕ ㅑ ㅐ ㅔ ㅁ ㄴ ㅇ ㄹ ㅎ ㅗ ㅓ ㅏ ㅣ ㅋ ㅌ ㅊ ㅍ ㅠ ㅜ ㅡ 注:Shift Q ㅃ 천 리 길 도 첫 걸 음 으 로 시 작 된 다. 千里之行,始于足下。 고통 이 없으면 얻는 것도 …