python实现一个QQ群聊天机器人

最近由于项目需求,需要做个QQ群的聊天机器人用于回答咨询的问题。在这样的情况下,我开始了QQ机器人的踩坑之旅。
这个机器人需求就是在群里有人@机器人+问题时,机器人通过检测信息是否有@之后,提取其中问题再进行检索。其实就相当于一个制作一个简单的问答系统基于QQ群这个平台。
通过查找的资料来看,QQ聊天机器人目前都是基于SmartQQ协议开发的。那么首先让我们来了解一下SmartQQ,这里贴上wiki对SmartQQ的解释:

WebQQ是腾讯于2009915日正式推出的一项服务,该服务可以使用户在不安装QQ软件的情况下使用QQ的部分服务。
20139月,WebQQ改名SmartQQ发布。它在界面方面和手机QQ非常相似,聊天方式则又和Pad版的QQ类似。
域名为w.qq.com
由于安全问题,限制为仅能扫描二维码登录。
至此,已经了解到QQ机器人是基于什么基础开发的了,若是自己根据SmartQQ协议开发一套API就太费时费力了。首先,我到github上搜索了一波之后,发现有许多QQ机器人相关的项目,其中不乏有使用python开发的框架。花了一点时间download了一些项目测试之后,找到了一个比较友好的项目--------SmartQQBot
github地址如下:https://github.com/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的回答是提问者想要的结果。
  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 如果你想写一个QQ聊天机器人,那么你需要了解一些关于QQ API的知识。首先,你需要查找一个可以与QQ通信的API,然后再使用python代码来编写你的聊天机器人。 下面是一些提示: 1. 了解QQ API:首先你需要了解QQ的API,找到一个可以与QQ通信的API。 2. 安装必要的库:接下来你需要安装必要的库,例如:requests,json等。 3. 编写代码:最后,你需要编写代码来实现你的聊天机器人。 这是一个简单的例子: ``` import requests import json def send_message(message): url = "https://api.qq.com/send_message" payload = { "message": message } headers = { 'Content-Type': 'application/json' } response = requests.post(url, data=json.dumps(payload), headers=headers) return response.json() if __name__ == '__main__': message = input("请输入消息:") result = send_message(message) print(result) ``` 这是一个简单的例子,你可以根据自己的需求来修改代码。希望这些信息对你有所帮助! ### 回答2: 写一个qq聊天机器人可以通过使用Python的各种库和API实现。首先,我们可以使用Python的requests库来获取QQ聊天机器人API的访问权限。然后,使用pyqqrobot库来与QQ API进行交互。 首先,我们需要在QQ开放平台上注册一个开发者账号,并创建一个应用程序。获得API的访问权限后,我们可以得到一个API的访问令牌,可以使用此令牌进行API调用。 然后,我们可以使用requests库向API发送HTTP请求,并传递参数,例如QQ号码、发送消息内容等,以发送消息给机器人。然后,机器人将获取并处理这些消息,并返回响应。 为了处理消息,我们可以使用pyqqrobot库和Python中的条件语句来编写逻辑。根据收到的消息内容,我们可以使用if-else语句或switch-case语句来确定需要执行的操作。例如,如果收到的消息是问候,我们可以编写代码回复一个问候消息;如果收到的是问题,我们可以使用Python的各种库和技术来搜索答案并回复用户。 除了处理消息,我们还可以使用pyqqrobot库中提供的其他功能,例如发送图片、表情等。 最后,我们可以使用Python的while循环来保持机器人的运行状态,不断接收和处理来自用户的消息。 综上所述,用Python编写一个QQ聊天机器人需要使用requests库与API进行交互,并结合pyqqrobot库来处理消息和发送响应。编写适当的逻辑和功能可以实现更丰富和智能的聊天机器人
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值