开发QQ官方机器人
QQ 頻道機器人開發簡明教程
1. 簡介
QQ 頻道機器人是一種可以在 QQ 頻道中與用戶進行互動的服務。這個教程旨在幫助新手學習如何使用 Python 的官方SDK,快速實現一些基本的機器人功能。
2. 準備工作
- 機器人注冊和添加: 在 QQ 開放平臺 注冊開發者賬號,并創建一個機器人應用。獲取分配給機器人的 App ID 和 Token。
3. 環境搭建
- 安裝 Python3: 確保你的機器上已經安裝了 Python3。
-
安裝機器人SDK: 打開終端并執行以下命令安裝機器人的 Python SDK:
pip install qq-bot pip install pyyaml
4. 創建項目文件
- 創建兩個文件
- config.yaml
- robot.py
5. 配置文件填寫
- 打開
config.yaml文件,填入機器人的 App ID 和 Token,并保存:token: appid: "123" token: "xxxx"
6. 編寫機器人代碼
- 打開
robot.py文件,導入依賴包并設置機器人自動回復消息的功能: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. 運行機器人
- 在終端中執行以下命令,運行機器人:
python3 /home/demo/robot.py
8. 測試機器人
- 在 QQ 頻道中 @機器人 發送消息(例如,@機器人 hello),機器人將自動回復 "你好"。
9. 關鍵詞功能
我們將robot.py里面的代碼改為關鍵詞回復,可以在 _message_handler 函數中使用條件語句檢查收到的消息內容,然后根據關鍵詞回復不同的內容。
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)
到自己的測試頻道艾特自己的機器人發送關鍵詞即可
這里我添加了一個簡單的條件語句,檢查消息內容中是否包含關鍵詞 "你好" 或 "再見",然后根據關鍵詞回復不同的內容。
如果消息內容中包含關鍵詞,則回復相應的內容;否則,回復一個默認的消息。
總結
- 上一篇: 《PalWorld/幻兽帕鲁》旧电脑li
- 下一篇: 崩坏星穹铁道异宠拾遗照顾攻略