开发QQ官方机器人

QQ 频道机器人开发简明教程

1. 简介

QQ 频道机器人是一种可以在 QQ 频道中与用户进行互动的服务。这个教程旨在帮助新手学习如何使用 Python 的官方SDK,快速实现一些基本的机器人功能。

2. 准备工作

  • 机器人注册和添加:QQ 开放平台 注册开发者账号,并创建一个机器人应用。获取分配给机器人的 App ID 和 Token。

3. 环境搭建

  • 安装 Python3: 确保你的机器上已经安装了 Python3。

  • 安装机器人SDK: 打开终端并执行以下命令安装机器人的 Python SDK:

    bash 复制代码
    pip install qq-bot
    pip install pyyaml

4. 创建项目文件

  • 创建两个文件
  • config.yaml
  • robot.py

5. 配置文件填写

  • 打开 config.yaml 文件,填入机器人的 App ID 和 Token,并保存:

    yaml 复制代码
    token:
      appid: "123"
      token: "xxxx"

6. 编写机器人代码

  • 打开 robot.py 文件,导入依赖包并设置机器人自动回复消息的功能:

    python 复制代码
    import asyncio
    import os.path
    import qqbot
    from qqbot.core.util.yaml_util import YamlUtil
    
    # 从配置文件读取机器人的信息
    test_config = YamlUtil.read(os.path.join(os.path.dirname(__file__), "config.yaml"))
    
    async def _message_handler(event, message: qqbot.Message):
        msg_api = qqbot.AsyncMessageAPI(t_token, False)
        qqbot.logger.info("event %s" % event + ",receive message %s" % message.content)
    
        # 自动回复消息
        message_to_send = qqbot.MessageSendRequest(content="你好", msg_id=message.id)
        await msg_api.post_message(message.channel_id, message_to_send)
    
    if __name__ == "__main__":
        t_token = qqbot.Token(test_config["token"]["appid"], test_config["token"]["token"])
        qqbot_handler = qqbot.Handler(
            qqbot.HandlerType.AT_MESSAGE_EVENT_HANDLER, _message_handler
        )
        qqbot.async_listen_events(t_token, False, qqbot_handler)

7. 运行机器人

  • 在终端中执行以下命令,运行机器人:

    bash 复制代码
    python3 /home/demo/robot.py

8. 测试机器人

  • 在 QQ 频道中 @机器人 发送消息(例如,@机器人 hello),机器人将自动回复 "你好"。

9. 关键词功能

我们将robot.py里面的代码改为关键词回复,可以在 _message_handler 函数中使用条件语句检查收到的消息内容,然后根据关键词回复不同的内容。

python 复制代码
import asyncio
import os.path
import qqbot
from qqbot.core.util.yaml_util import YamlUtil

# 从配置文件读取机器人的信息
test_config = YamlUtil.read(os.path.join(os.path.dirname(__file__), "config.yaml"))

async def _message_handler(event, message: qqbot.Message):
    msg_api = qqbot.AsyncMessageAPI(t_token, False)
    qqbot.logger.info("event %s" % event + ", receive message %s" % message.content)

    # 检查消息内容是否包含关键词
    if "你好" in message.content:
        reply_content = "你也好!"
    elif "再见" in message.content:
        reply_content = "再见,期待下次见面!"
    else:
        reply_content = "我不太明白你说的是什么..."

    # 回复消息
    message_to_send = qqbot.MessageSendRequest(content=reply_content, msg_id=message.id)
    await msg_api.post_message(message.channel_id, message_to_send)

if __name__ == "__main__":
    t_token = qqbot.Token(test_config["token"]["appid"], test_config["token"]["token"])
    qqbot_handler = qqbot.Handler(
        qqbot.HandlerType.AT_MESSAGE_EVENT_HANDLER, _message_handler
    )
    qqbot.async_listen_events(t_token, False, qqbot_handler)

到自己的测试频道艾特自己的机器人发送关键词即可

这里我添加了一个简单的条件语句,检查消息内容中是否包含关键词 "你好" 或 "再见",然后根据关键词回复不同的内容。

如果消息内容中包含关键词,则回复相应的内容;否则,回复一个默认的消息。

相关推荐
ahead~37 分钟前
【大模型入门】访问GPT_API实战案例
人工智能·python·gpt·大语言模型llm
大模型真好玩1 小时前
准确率飙升!GraphRAG如何利用知识图谱提升RAG答案质量(额外篇)——大规模文本数据下GraphRAG实战
人工智能·python·mcp
19891 小时前
【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·近邻算法
applebomb1 小时前
没合适的组合wheel包,就自行编译flash_attn吧
python·ubuntu·attention·flash
Chasing__Dreams2 小时前
python--杂识--18.1--pandas数据插入sqlite并进行查询
python·sqlite·pandas
彭泽布衣3 小时前
python2.7/lib-dynload/_ssl.so: undefined symbol: sk_pop_free
python·sk_pop_free
喜欢吃豆3 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp
一个处女座的测试4 小时前
Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
python·mysql·pytest
nananaij4 小时前
【Python基础入门 re模块实现正则表达式操作】
开发语言·python·正则表达式
蛋仔聊测试4 小时前
Playwright 网络流量监控与修改指南
python