使用Itchat模块和图灵机器人API实现个人微信的自动回复

一、引言
在现代社交媒体的时代,自动化回复和发送消息的机器人变得越来越流行 。这些机器人可以节省时间和精力,帮助我们管理和处理大量的信息 。基于+图灵机器人编写一个命名为“小林机器人”程序,接入微信托管,自动回复好友指定群聊的消息 。
二、功能
1、实现回复好友和指定群聊的消息,可以发送表情包和图灵api返回的文本内容信息 。
2、实现推送早报网、360资讯、科技日报的热点新闻信息 。
三、准备工作
在开始编写代码之前,我们需要安装所需的库 。请确保您已经安装了以下库:
项目有个缺陷是只有老的微信号(2017之前注册)才能登陆,新的微信号则不能登录;确保本人微信号能登上网页版才能使用库 。
pip install itchat
pip install requests
import requests,re,time,json,os,randomimport itchatfrom bs4 import BeautifulSoup as bsfrom itchat.content import *from apscheduler.schedulers.blocking import BlockingSchedulerfrom queue import Queuefrom datetime import datetimeimport time
四、 定义一个Boot类

使用Itchat模块和图灵机器人API实现个人微信的自动回复

文章插图
主要作用是管理小林机器人的功能 。在这个类中,我们将实现自动登录、消息处理和定时任务等功能 。以下是"Boot"类的基本结构:
#小林机器人向群里/好友返回的数据def reply_group_friend_msg(func):# 装饰器class Boot:def __init__(self):# 初始化配置信息def response_url(self, url, verify=True):# 发送get请求网页数据def put_emj(self):# 将表情包目录文件全部放进队列def grab_mrzb_data(self):# 获取到早报网最新热点消息def parse_cale(self):# 解析时间日期格式def grab_weiyu(self):# 抓取精美语录信息def grab_readhub_data(self):# 获取到科技日报消息def grab_zixun_data(self):# 获取到360资讯最新热点消息@reply_group_friend_msgdef xiaolin_return_data(self, text, user, f_g_list):# 小林机器人实时返回数据def group_text_reply(self, msg):# 处理群聊文本/表情包消息def friend_text_reply(self, msg):# 处理好友文本/表情包消息def clear_itchat_pkl(self):# 登录时检查默认删除itchat.pkl文件(小林机器人缓存的数据)def run(self):# 运行小林机器人
@sg是一个装饰器,用来处理群聊和好友发送消息
def reply_group_friend_msg(func):# 接受调用语句的实参,在下面传递给被装饰函数(原函数)def make_decorater(*args,**kwargs):# 如果在这里return,则下面的代码无法执行,所以引用并在下面返回test_func = func(*args,**kwargs)'''因为被装饰函数里有return,所以需要给调用语句(test(2))一个返回,又因为test_func = func(*args,**kwargs)已经调用了被装饰函数,这里就不用带()调用了,区别在于运行顺序的不同 。'''return test_funcreturn make_decorater
推送早报网最新热点消息功能
发送get请求早报网网页源代码,用解析字符串,并生成解析结果对象,调用(),使用CSS类选择器''查找所有具有该类的元素,提取页面每一条的标题以及对应的url,保存到self.['']字典里
'''解析早报网网页数据'''def parse_mrzb(self):# 发送GET请求并获取响应对象parse_result = self.response_url(self.variety_config_info['url'][4],False)# 使用CSS类选择器'_blank'查找所有具有该类的target元素content = parse_result.find_all('a', {'target': {'_blank'}})for data in content: # 遍历提取到的早报数据# 使用正则表达式提取早报的标题和对应的url的数据get_url_title = re.findall(r'', str(data))if get_url_title != []: # 排除为空列表的数据self.variety_config_info['mrzb_title'][get_url_title[0][1]] = get_url_title[0][0]