炫技 (Oct.16) ——打造你自己的QQ聊天机器人(python版)

2
Want create site? Find Free WordPress Themes and plugins.

炫技 (Oct.16) ——打造你自己的QQ聊天机器人(python)

某淀粉:啥子QQ聊天机器还有用python写,我用酷Q机器人多方便,还是GUI傻瓜式的。

的确,在QQ机器人这一方面大家接触比较多的可能是酷Q出品的。经过了许久的发展,它使用手机QQ的协议,发送消息更稳定。还有大量的模块可供选择。但是我个人不太喜欢,首先它只能运行在windows系统上,在平台性能就砍下了一大半;其次它有商业化的成分在,例如酷Q Pro是需要购买授权码的,许多插件也是要收费的,而且还可能有广告。总是,居正个人不太喜欢。

为了发扬极客精神,我在github上找到了一个开源的python版的qqrobot,它使用smartqq(webqq)协议编写,可用于VPS挂机。在这里我手把手地教大家来搭建。windows、*nix、mac上都是可以用的。

首先安装python(python官网下载地址:https://www.python.org/downloads/),记得一定要下载python2.x。因为3.x与2.x的代码格式是天壤之别。我现在看python2的最新版本是2.7.12。*nix系统的朋友可以用软件包管理工具安装。

下完python之后去https://github.com/zeruniverse/QQRobot下载QQ机器人的代码,页面往下拖找到这个链接来下载。当然,你也可以用git来clone最新版本的源代码炫技 (Oct.16) ——打造你自己的QQ聊天机器人(python)

(README里说了,建议WINDOWS用户使用技术门槛更低的QBotWrap。但是我不推荐用这个,因为你还要搭建web环境,更麻烦。而且经过我测试可能会发生未知错误)

下载并解压完了源代码,你可以部署你的图灵API。去http://www.tuling123.com/ 注册账户,申请一个免费的API KEY, 到QQBot.py的第34行 把原来变量里的那个key替换掉(请务必使用notepad++等兼容utf8编码的文本编辑器打开,绝对不要使用windows自带的记事本)。当然,如果你不知道怎么搞或者不想重新申请也可以用它自带的。(自带KEY:c7c5abbc9ec9cad3a63bde71d17e3c2c)

炫技 (Oct.16) ——打造你自己的QQ聊天机器人(python)

 

接着,打开groupfollow.txt文件(请务必使用notepad++等兼容utf8编码的文本编辑器打开,绝对不要使用windows自带的记事本。),在里面输入你要监听的群名称,前提是你的机器人账户已经加入的群,注意一定要群名称而不是群号。保存关闭。

最后一步,打开终端,cd到你放机器人的那个目录。输入命令:

nohup python2 QQBot.py &

(如果提示找不到命令,可以把“python2”改成“python”后重试)

这条命令会在后台运行QQ机器人。

windows则输入:

python QQBot.py

这还不算完,我们还要进行机器人的授权操作。运行大约5秒后,你会在目录下找到v.png的二维码文件,打开手机QQ登录机器人的账户,扫描这个二维码,允许登录。这样你的机器人就可以和小伙伴们愉快地聊天啦~

问题解决:(下面说的retcode指的是log.log日志文件里面的返回码)

1.强烈建议使用小号挂小黄鸡,已知QQ会临时封禁机器人的临时对话回复和群回复,原理未知,每次封禁约为10分钟。表现为发送消息返回值retcode 为 0 但其他人无法看到。长时间挂机会导致QQ被冻结错误,QQ安全中心提示发布不良信息。关闭后台重新运行、授权即可。

2.如果出现retcode为103的情况,则打开w.qq.com扫码登录,然后在设置里面退出。重新运行程序、授权即可。

功能 (摘自github原文的README)

注:以下命令皆是在qq中发送,群聊命令发送到所在群中

  • 关于及帮助,在群聊中发送!about
  • 群聊智能回复,小黄鸡,在群中通过发送!ai 问题语句,则机器人向AI平台请求问题的回复并回复到群,带有!ai关键字时优先触发此功能
  • 私聊智能回复,小黄鸡,对于收到的私聊,机器人向AI平台请求该聊天记录的回复并回复给消息发送者
  • 群聊学习功能,类似于小黄鸡,在群中通过发送!learn {ha}{哈哈}语句,则机器人检测到发言中包含“ha”时将自动回复“哈哈”。!delete {ha}{哈哈}可以删除该内容。学习内容会自动储存在database.群号.save文件。!deleteall可删除该群所有记录。
  • 群聊复读功能,检测到群聊中连续两个回复内容相同,将自动复读该内容1次。
  • 群聊关注功能,使用命令!follow qq号可以使机器人复读此人所有发言(除命令外)使用命令!unfollow qq号解除关注。qq号处可使用”me”来快速关注与解除关注自己,例:!follow me

私聊直接聊天即可,不需要加任何前缀。

修改建议:

由于最新版的smartqq不支持获取群号,所以qqrobot每次获取的群号都不一样,导致无法读取存档数据。你可以用文本编辑器打开QQBot.py(请务必使用notepad++等兼容utf8编码的文本编辑器打开,绝对不要使用windows自带的记事本),找到大约657和664行,把里面的

with open("database."+str(self.gid)+".save", "w+") as savefile:

修改成

with open("database.save", "w+") as savefile:

 

这样所有群就都共用一个知识库了,也不会读取错误。

截图:

炫技 (Oct.16) ——打造你自己的QQ聊天机器人(python)

上图为!learn语句学习测试。(那个siri就是机器人)

 

上图为调用!ai图灵API的结果(github上的原图)。

 

好了,我就说那么多。剩下的大家自己体验吧~如果你遇到任何问题,可以在下方评论处回复我,我会在第一时间给你解答哦~

Did you find apk for android? You can find new Free Android Games and apps.

关于作者

居正

大道至简

2条评论

  1. FutureXia 时间:

    您好,启动程序之后我查看日志,出现了103和轮询错误超过五次,我想扫码登录w.qq.com,可是qq却登录不上去,网页空白只显示Smart QQ几个字,这是在怎么回事?还有方便的话留一下邮箱啊,以后有问题可以随时向您请教

    • 居正

      网页空白的问题应该是你的网络环境自身的问题,请提供更多的信息以便解决。你可以在置顶文章找到淀粉月刊的qq群。

发表评论