Python实现自动聊天机器人

Python010

Python实现自动聊天机器人,第1张

本功能实现逻辑如下:

主要使用Python的urllib.request库来调用https://nlp.xiaoi.com/上的接口,具体接口可以通过浏览器抓包获取,然后根据抓包信息进行url的构造,使用urllib.request库的urlopen函数来调用构造的url,将其返回进行编解码之后,使用re模块将所需信息匹配出来。

功能实现脚本如下:

因为工作养成的习惯,生怕写的脚本在别的环境跑出问题,索性将它编译成exe文件。

使用pyinstall库来实现py脚本到exe文件的编译过程。

(本文参考csdn上的一篇文章,路径如下:https://blog.csdn.net/jiahuiandxuehui/article/details/118193844,不过这里的运行后返回结果会有一些\r\n这种东西,这里我修改了一下正则表达式,把不重要的信息给过滤掉了。)

from qqbot import QQBotSlot as qqbotslot,RunBot

from random import randint

@qqbotslot

def onQQMessage(bot, contact, member, content):

#在这里过滤过来的输入, content的内容是监听qq上所有的输入

# 当群里有人@你的时候 传入过来的会被转化为[@ME]

# 所以使用 @ME 来过滤其他人在群里面at你

if '@ME' in content:

#四个参数的详细

#bot : QQBot 对象,提供 List/SendTo/Stop/Restart 四个接口,详见本文档第五节

#contact : QContact 对象,消息的发送者,具有 ctype/qq/uin/nick/mark/card/name 属性,这些属性都是 str 对象

#member : QContact 对象,仅当本消息为 群或讨论组 消息时有效,代表实际发消息的成员

#content : str 对象,消息内容

bot.SendTo(contact,'@'+ member.name+ " 哈哈 ")

#这里是因为部分群里面的at无法转化为[@ME]所以自己过滤at自己的内容

elif '@' in content and '光' in content:

bot.SendTo(contact,'@'+ member.name+ " 哈哈 ")

RunBot()```