分享好友 最新动态首页 最新动态分类 切换频道
利用itchat搭建微信机器人详解(附三个实用示例)
2024-12-26 08:35

本文简介

利用itchat搭建微信机器人详解(附三个实用示例)

好久没更新文章啦,因为最近在赶一本Py的入门书,碰巧今天把这篇文章赶出来了。
而很多加群的小朋友很多都是咨询如何搭建微信机器人的,所以就把这一章放出来了
取需,三个实用示例:定时发信息,集成图灵API实现聊天机器人,微信防撤回实现,基本够玩了。
另外,微信改版了网页端,很多接口都开始用不了,比如拉人进群,可以通过无障碍服务或者
Xposed来解决,具体怎么玩可以参见前面的章节,谢谢。


2011年1月21日,微信推出第一个正式版本,到现在已有7个年头。从一开始的不被看到好,到现在的用户量超10亿,大众的日常生活越来越离不开微信。人生苦短我用Python,有没有办法通过Python来对我们使用微信提供一些便利呢? 答案肯定是有的,在Github上有一个基于微信网页版接口微信开源库itchat,通过几十行的代码就能轻松实现一个微信机器人。本章我们就来了解学习这个库,然后通过三个实用案例来帮大家玩转这个库。


我们跟着文档来解读下itchat这个库的用法。

19.1.1 文档与安装

itchat的仓库地址:https://github.com/littlecodersh/ItChat
官方文档:http://itchat.readthedocs.io

安装也很简单,直接通过pip命令安装即可,命令如下

19.1.2 简单的使用示例

通过一个简单的例子来让读者体会下通过itchat编写一个微信机器人有多简单,代码功能
扫码登录后给文件助手发送一条信息,监听接收到的文件信息,打印出来,具体代码如下。

代码执行结果

先会弹出一个二维码图片,扫描后会登陆网页端微信,间隔一会儿后文件助手收到如图19.1所示的信息

图19.1 文件传输助手收到信息

然后用另一个账号发送一条信息给这个账号,控制台会把接收到的信息打印出来

通过上面8行有效代码就实现了一个简单的技巧人,酷不酷,带着这样的思路,我们可以进行扩展,比如添加一个自动回复的功能,比如在忙的时候,别人给你发信息,自动回复:”在忙,晚点给你回复信息”等。


在学习itchat的详细用法前,先和读者说一些要注意的东西。

(1)itchat不是微信官方提供的库,意味使用这个库会有风险,笔者的小号就曾被微信封过一段时间,禁止网页端登录微信,移动端和电脑客户端还是能正常使用的,微信此举旨在封杀泛滥的微商机器人。
(2)如何减少被封概率:消息发送不要过于频繁;不要发送过多重复信息;尽量少调用加人的接口
(3)被封如何解封:被封后是无法找到申述入口,只能随缘解封,笔者在坚持了一周用手机聊天和朋友圈点赞留言后突然就解封了。
(4)微信正在慢慢收窄网页端的功能,意味着一些接口会慢慢失效,比如说拉人进群聊的接口,以前还能用,现在就不行了。在调用某个接口没有得到意料中的结果,可能就是接口失效了,可以到官方仓库查找相关的issues。
(5)微信只支持双端登录,不使用黑科技的话,移动端加上Web网页端或PC客户端。
(6)新注册的微信号是无法使用网页版登录的。

最后,还是要感谢开源作者的无私奉献。


巧妇难为无米之炊,在扩展前先跟笔者把文档过一过,理解得差不多了,再开始去扩展,这样效率会高很多。

19.3.1 登陆

登陆时通过itchat.auto_login()这个函数来完成的不带参数的话会生成一个二维码图片文件供你扫描登陆。一般的话我们的电脑都会关机,如果机器人有需要持久在线的需求,我们可以把脚本挂到服务器上,24小时跑,但是一般的云服务器是没有界面的,都是通过终端命令行进行操作,这个时候可以添加enableCmdQR=True参数,让二维码显示到命令行上,另外部分系统可能字符宽度有出入,如图19.2所示,可以通过把enableCmdQR赋值为特定的倍数进行调整。

图19.2 命令行二维码错位

比如enableCmdQR=2后,二维码图片如图19.3所示

图19.3 调整后正常的二维码图片

扫码登录后,如果想退出程序以后还暂存登录状态,重新执行程序也不用扫码可以添加参数hotReload=True

19.3.2 退出

如果在启动时没有设置hotReload=True参数,程序退出后过一会儿就会自动掉线的了,如果想快速退出的话可以调用itchat.logout()注销登录状态。另外,有时我们可能想在登录成功或者注销登录后执行一些操作,可以添加两个调用登录时传入两个方法参数loginCallback和exitCallback,简单示例如下:

代码执行结果如下

19.3.3 查找用户

itchat提供四种查找用户的搜索方式

(1获取自己的用户信息 示例如下

代码执行结果如下

(2根据昵称查询某个用户,代码示例如下

代码执行结果如下

(3根据微信号查找用户,代码示例如下

代码执行结果如下

另外,2和3功能可以同时使用,比如itchat.search_friends(name=’培杰’, wechatAccount=’zpj779878443’)

(4根据UserName查找用户,就是上面返回结果里跟着的UserName字段@xxxx这样一串东西,代码示例如下

代码执行结果如下

19.3.4 发送信息

itchat提供了几个发送不同类型信息的函数,没有发送语音的原因是网页版没有这个接口,可供调用
的函数如表19.1所示。

函数名作用send_msg()发送文字信息send_file()发送文件send_video()发送视频send_image()发送图片

使用代码示例如下

代码执行结果如下

19.2.4 监听信息

除了主动发送信息外,还可以对信息进行监控,支持对多种类型的信息进行监控,类型如表19.2所示。
另外,有多个注册信息监听,后注册的信息优先级高于先注册信息,带参数信息高于不带参数信息。

信息类型解释itchat.content.TEXT文本内容itchat.content.MAP位置文本itchat.content.Card名片itchat.content.Note通知文本itchat.content.Sharing分享名称itchat.content.RECORDING录音itchat.PICTURE图片/表情itchat.content.VOICE录音itchat.content.ATTACHMENT附件itchat.content.VIDEO短视频itchat.content.FRIENDS好友邀请itchat.content.SYSTEM系统信息

一个监听到文字信息并响应信息的代码示例如下

代码执行结果如下

19.2.5 群聊

在微信网页端改版后,创建群聊、拉人进群和删除群聊这几个接口都用不了,现在利用itchat能做的有:查找群聊,往群聊发送信息,以及监控群聊信息,使用代码示例如下

代码执行结果如下

聊天记录截图

另外,群聊除了通过群名搜索外还可以通过username来查找,或者两者搭配使用
在msg里有一个isAt字段,可用于判断是否被人@了。

19.2.6 公众号

使用方式和群聊的非常类似,搜索公众号方法search_mps,监听公众号信息添加isMpChat=True元素,使用代码示例如下

代码执行结果如下

聊天记录截图

定时发送信息这个操作在日常生活中非常实用,比如给别人发生日或者节日祝福,晚上12点准时发,如果有早睡习惯的要熬到12点就很难受了,我们可以利用itchat编写一个简单的定时发送信息脚本。这里我们用到一个apscheduler定时调度任务模块,在命令行键入pip install apscheduler即可完成安装。这里并不会详细讲解,有兴趣的可移步到官方文档自行查阅
http://apscheduler.readthedocs.io/en/latest/userguide.html
定时发送消息的代码示例如下

代码执行结果如下

图灵机器人官网:http://www.tuling123.com/member/robot/index.jhtml
注册一个账号后,点击创建机器人,会弹出如图所示的面板,按需配置下即可。

普通账户可以创建5个机器人,每天有5000次的免费调用机会。点击新创建好的机器人
会进入如图所示的界面,我们只需要保存下apikey,调用接口用的秘钥。

点击底下的api使用文档,或者直接打开 https://www.kancloud.cn/turing/web_api/522992,进入接口文档页,在这里我们可以看到接口调用相关的信息,包括接口地址:http://openapi.tuling123.com/openapi/api/v2,请求方式:POST,请求数据格式:JSON,请求数据示例

我们可以利用Postman模拟下请求,试试接口是否可用,先设下请求头

接着是提交数据

看下返回结果

返回结果里的text明显就是我们想要的东西,整个过程了解了,接着我们来编写代码,流程如下

(1)监听微信信息。
(2)接收到信息,获取信息内容。
(3)调用接口,获取请求结果,提取返回的text。
(4)把提取到的text返回给发送信息的人。

具体代码实现如下

代码执行结果如下图所示

上面的图灵机器人有时回答得牛头不对马嘴,特别是在多轮问答的时候,闲聊玩玩还是不错的。
接着的我们要利用itchat来编写一个微信信息防撤回的脚本。当监控到用户或者群聊发送信息
撤回的话,把撤回的内容通过文件传输助手发送给我们,说下大体的思路流程。

(1)监听所有聊天记录,包括群聊,把信息都存入到一个字典里,资源类文件下载到本地。
(2)监听到撤回信息后,根据撤回的信息id,查找字典里对应的信息,发送给文件助手。
(3)每隔五分钟清理缓存数据。

流程看上去是挺简单,接着我们一点点来摸索实现。

19.5.1 监控接收到的数据

先是监控信息,信息又分为好友聊天和群聊,我们编写代码来监控下收到的数据是怎么样的

给机器人发送一条信息,还有往群聊里发送一条信息,查看打印的信息内容,先是好友信息

分析下要采集的数据MsgId(微信信息的标识,用来作为键NickName(发送者的用户名Content(信息内容CreateTime(创建时间Type(信息类型)。接着是群聊信息

同样分析下要采集的数据MsgId(微信信息的标识ActualNickName(发送者群名称Content(信息内容CreateTime(创建时间Type(信息类型)。改下我们的程序,把这些都提取打印出来。

代码执行结果如下

19.5.2 验证不同信息类型和对应处理方式

,信息提取成功,接下来要验证的是不同的信息类型和对应的处理方式,文字,图片(表情),音频,视频,文件五种,后面四种都需要下载到本地,itchat中提供了一个下载文件的方法,调用这个方法即可完成文件下载,修改后的代码如下

代码执行后,分别测试下发送各种文件,看是否都缓存下来,如图所示

19.5.3 监控撤回信息和数据提取

接着到撤回信息的监控,撤回的信息类型是NOTE,我们监听下看看,看看撤回的信息具体内容。

首先是判断系统信息是默认撤回了一条信息,内容是
显示判断是否是撤回的信息,从上面可以看到这样的串字符串,我们只需要写个正则判断是否有这样的内容,有说明是撤回的信息提醒,接着找撤回的信息MsgId,在上面这串信息的前面就是了,同样用正则提取。接着要做的就是拿着MsgId去查存消息的字典,根据信息类型拼接文字或文字加文件,然后发送给文件传输助手。具体代码如下

运行后测试下发送信息后撤回,看下是否生效,测试结果如图所示。

19.5.4 定时清理缓存

另外,我们的信息都是用一个字典存着的,时间长了的话,数据会很多,而且图片文件这些会越攒越多,我们可以添加一个定时任务,比如每隔五分钟清理一下创建时长超过2分钟的信息和对应的文件。相关代码如下


本章我们对微信网页接口开源库itchat库进行了学习,通过三个实用的代码示例,相信你对这个库已经有个大概的了解了,你也可以根据自己的需求来定制一个自己的机器人,比如添加自动回复,特定信息监控转发等。另外,如果你想让自己的机器人一直运行,可以把脚本部署到服务器上运行,具体怎么运行可以参见爬虫部分的章节。


Tips

如果在查看本文的时候有什么问题,可以在评论区留言,或者加我微信(不闲聊,拉你进群一起讨论

最新文章
Sora AI基础知识:通过PR和AE革新视频编辑
在这门全面的课程中,我们将释放 Sora AI 在视频编辑工作流程中的潜力,为创作者和专业人士提供实用的技巧和策略。你将学习如何高效地将尖端 AI 技术与 Adobe Premiere Pro 和 After Effects 相结合,以提升你的项目质量。无论是优化工作流
脏脏漫:创新漫画形式打破传统的极限,挑战社会文化禁忌
近年来,脏脏漫这一类型的漫画逐渐崭露头角,吸引了大量年轻读者的关注。与传统的漫画风格不同,脏脏漫在题材和表现手法上都有着大胆的创新。它通常呈现一种低俗、恶搞甚至黑暗幽默的氛围,内容常常涉及一些社会热点话题或者夸张的生活场景
公共基础知识常识大全下载,一站式知识宝库获取指南
摘要:,,通过下载公共基础知识常识大全,您将能够一站式获取知识的宝库。这本书籍集结了广泛领域的基础知识,包括文化、科技、历史、地理、经济等多个方面。无论您是学术研究者、学生还是终身学习者,都可以从中获取所需的知识和见解。这
老河口房屋漏水维修〈免费上门〉老河口市厨卫防水补漏
不砸砖、不砸墙;免砸砖防水补漏技术,2小时快速解决漏水问题,超长保修期。漏水维修服务项目:防水堵漏、阳台漏水、防水查漏、洗浴间漏水、飘窗渗水、屋面防水补漏、厂房漏水维修、漏水检测、房顶漏水、房屋墙面起皮、天花板渗水、女儿墙渗水
闪烁之光手游云手机多开挂机搬砖赚钱
《闪烁之光》是一款"开局十连必出五星,白嫖也能躺赢"的放置策略回合制卡牌手游,超好用的“多战斗切换模式”,带给玩家集休闲、养成、策略、交互于一体的良心手游。闪烁之光游戏搬砖赚钱需要至少4个号,一个大号三个小号才有效率,所以手
【Blaze美图秀秀下载】华为Blaze美图秀秀10.6.0免费下载
全球超受欢迎的宝藏App!美图配方,一键出片!安卓装机必备!大牌明星达人都爱用的高清修图剪片法宝!===美图AI 玩转数字世界===【AI绘画】火遍全网的二次元变身神器,免关键词也无需排队,驯服AI超简单!【AI动漫】真人视频一键变动漫,穿
重庆永川万达广场(永川店)附近停车场攻略、停哪里最方便
车库名称(搜导航)车库信息收费标准地址
智能AI医疗机器人服务群体
引言:在当今快速发展的科技时代,智能AI医疗机器人服务群体正逐渐崭露头角。这一群体由具备人工智能技术的机器人组成,能够提供各种智能化的医疗服务。本文将从定义、分类、举例和比较等方面介绍智能AI医疗机器人服务群体的相关知识。正文
掌握 Google 趋势来改善你的 SEO
  掌握最新动态并击败竞争对手意味着掌握趋势和消费者行为。多年来,Google 悄悄开发了一种工具,该工具已成为许多 SEO 工具包中的主打产品:Google Trends。该工具提供了有关人们正在搜索的内容的宝贵见解。Google Trends 的最新更新带
轻松搭建宝典,一站式搭建工具指南
轻松搭建,本指南提供一站式搭建服务,涵盖从到设计、内容管理及SEO优化等全方位教程,助您快速创建并优化。搭建工具概览搭建工具精选推荐搭建关键事项在互联网日益深入的今天,企业和个人纷纷认识到构建个人的重要性,搭建并非易事,尤其
相关文章
推荐文章
发表评论
0评