经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
开发QQ官方机器人
来源:cnblogs  作者:小kBlog  时间:2024/1/29 10:54:35  对本文有异议

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

1. 简介

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

2. 准备工作

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

3. 环境搭建

  • 安装 Python3: 确保你的机器上已经安装了 Python3。
  • 安装机器人SDK: 打开终端并执行以下命令安装机器人的 Python SDK:
    1. pip install qq-bot
    2. pip install pyyaml

4. 创建项目文件

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

5. 配置文件填写

  • 打开 config.yaml 文件,填入机器人的 App ID 和 Token,并保存:
    1. token:
    2. appid: "123"
    3. token: "xxxx"

6. 编写机器人代码

  • 打开 robot.py 文件,导入依赖包并设置机器人自动回复消息的功能:
    1. import asyncio
    2. import os.path
    3. import qqbot
    4. from qqbot.core.util.yaml_util import YamlUtil
    5. # 从配置文件读取机器人的信息
    6. test_config = YamlUtil.read(os.path.join(os.path.dirname(__file__), "config.yaml"))
    7. async def _message_handler(event, message: qqbot.Message):
    8. msg_api = qqbot.AsyncMessageAPI(t_token, False)
    9. qqbot.logger.info("event %s" % event + ",receive message %s" % message.content)
    10. # 自动回复消息
    11. message_to_send = qqbot.MessageSendRequest(content="你好", msg_id=message.id)
    12. await msg_api.post_message(message.channel_id, message_to_send)
    13. if __name__ == "__main__":
    14. t_token = qqbot.Token(test_config["token"]["appid"], test_config["token"]["token"])
    15. qqbot_handler = qqbot.Handler(
    16. qqbot.HandlerType.AT_MESSAGE_EVENT_HANDLER, _message_handler
    17. )
    18. qqbot.async_listen_events(t_token, False, qqbot_handler)

7. 运行机器人

  • 在终端中执行以下命令,运行机器人:
    1. python robot.py

8. 测试机器人

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

9. 关键词功能

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

  1. import asyncio
  2. import os.path
  3. import qqbot
  4. from qqbot.core.util.yaml_util import YamlUtil
  5. # 从配置文件读取机器人的信息
  6. test_config = YamlUtil.read(os.path.join(os.path.dirname(__file__), "config.yaml"))
  7. async def _message_handler(event, message: qqbot.Message):
  8. msg_api = qqbot.AsyncMessageAPI(t_token, False)
  9. qqbot.logger.info("event %s" % event + ", receive message %s" % message.content)
  10. # 检查消息内容是否包含关键词
  11. if "你好" in message.content:
  12. reply_content = "你也好!"
  13. elif "再见" in message.content:
  14. reply_content = "再见,期待下次见面!"
  15. else:
  16. reply_content = "我不太明白你说的是什么..."
  17. # 回复消息
  18. message_to_send = qqbot.MessageSendRequest(content=reply_content, msg_id=message.id)
  19. await msg_api.post_message(message.channel_id, message_to_send)
  20. if __name__ == "__main__":
  21. t_token = qqbot.Token(test_config["token"]["appid"], test_config["token"]["token"])
  22. qqbot_handler = qqbot.Handler(
  23. qqbot.HandlerType.AT_MESSAGE_EVENT_HANDLER, _message_handler
  24. )
  25. qqbot.async_listen_events(t_token, False, qqbot_handler)

到自己的测试频道艾特自己的机器人发送关键词即可
这里我添加了一个简单的条件语句,检查消息内容中是否包含关键词 "你好" 或 "再见",然后根据关键词回复不同的内容。
如果消息内容中包含关键词,则回复相应的内容;否则,回复一个默认的消息。

原文链接:https://www.cnblogs.com/xkboi/p/17992310

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号