admin管理员组文章数量:1567274
最近由于项目需求,需要做个QQ群的聊天机器人用于回答咨询的问题。在这样的情况下,我开始了QQ机器人的踩坑之旅。
这个机器人需求就是在群里有人@机器人+问题时,机器人通过检测信息是否有@之后,提取其中问题再进行检索。其实就相当于一个制作一个简单的问答系统基于QQ群这个平台。
通过查找的资料来看,QQ聊天机器人目前都是基于SmartQQ协议开发的。那么首先让我们来了解一下SmartQQ,这里贴上wiki对SmartQQ的解释:
WebQQ是腾讯于2009年9月15日正式推出的一项服务,该服务可以使用户在不安装QQ软件的情况下使用QQ的部分服务。
2013年9月,WebQQ改名SmartQQ发布。它在界面方面和手机QQ非常相似,聊天方式则又和Pad版的QQ类似。
域名为w.qq.com
由于安全问题,限制为仅能扫描二维码登录。
至此,已经了解到QQ机器人是基于什么基础开发的了,若是自己根据SmartQQ协议开发一套API就太费时费力了。首先,我到github上搜索了一波之后,发现有许多QQ机器人相关的项目,其中不乏有使用python开发的框架。花了一点时间download了一些项目测试之后,找到了一个比较友好的项目--------SmartQQBot
github地址如下:https://github/Yinzo/SmartQQBot
查看一波文档后,大概了解了如何进行二次开发(写一个插件)。可以直接在manage.py中,添加你要实现的代码。
from smart_qq_bot.messages import GroupMsg, PrivateMsg
from smart_qq_bot.signals import on_all_message, on_bot_inited
from smart_qq_bot.logger import logger
@on_all_message(name="PluginManger[test]")
def test_bot(msg, bot):
result = do_test(msg, bot)
if result is not None:
return bot.reply_msg(msg, result)
def do_test(msg, bot):
content = msg.content
content = Converter('zh-hans').convert(content)
nick = bot.username
atnick = '@'+nick
content_1 = content.replace(' ', '')
if atnick == content_1:
answer = "请按照以下方法进行询问:{a} +您的问题".format(a=atnick)
return "%s" % answer
ask_message = content.replace(atnick+' ', '')
if atnick in content:
src_sender_name = msg.src_sender_name
print("%s" % src_sender_name)
try:
answer = getanswers(ask_message)
except:
response_json = tuling(ask_message)
answer = response_json.get('text')
# answer = "抱歉,机器人无法理解您的意思,请换一种问法试试!"
return "@%s %s"% (src_sender_name, answer)
def getanswers(ask_message):
connection = sqlite3.connect('./LZ_ZX.sqlite3')
sql = "select * from 'asks_answer' where class4='%{ask}%'".format(ask=ask_message)
sql_like = "select * from 'asks_answer' where class4 LIKE '%{ask}%'".format(ask=ask_message)
df = pd.read_sql_query(sql, connection)
if len(df) == 0:
df = pd.read_sql_query(sql_like, connection)
df = df[df["part"] == '0']
answer = df['answer']
answer = answer.values
answer_1 = answer[0]
connection.close()
return answer_1
不过问题还有一下几个:
- 程序运行一天后,会因为登录cookie失效和退出
- 程序在大约4个小时没有人访问的情况下会挂掉,不做出任何回应。
- QQBot只能做出文本解析,和文本回应。这意味着这个项目的难点在于:怎样使得Bot的回答是提问者想要的结果。
版权声明:本文标题:python实现一个QQ群聊天机器人 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1726907929a1089954.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论