注册账户&创建机器人
首先,要在QQ 开放平台注册一个开发账户,必须实名才可以创建机器人。
个人开发者默认只开放了频道内机器人的权限,没有群聊的权限!
在注册完之后可以在QQ 开放平台看到机器人的创建页面。
一般来说,审核通过很快速,通过审核之后就可以进行下一步了。
检查AppSecret&AppID
创建成功之后应该就可以在开发-开发设置 页找到关于机器人的信息。
QQ机器人管理端https://q.qq.com/qqbot/#/developer/developer-setting
这里的AppSecret和AppID后续需要使用!AppSecret第一次需要手动生成并且需要记录!后续不可以在这里再次看见,只能重新生成。
准备服务器端
安装Python依赖环境
pip install qq-botpy
执行以上命令,可以考虑使用镜像加速下载。
编写代码
根据qqbotpy文档的快速示例,我们应该使用以下代码尝试链接到你的机器人:
import botpy
from botpy.types.message import Message
class MyClient(botpy.Client):
async def on_at_message_create(self, message: Message):
await self.api.post_message(channel_id=message.channel_id, content="content")
intents = botpy.Intents(public_guild_messages=True)
client = MyClient(intents=intents)
client.run(appid={appid}, token={token})
官方文档错误
这里我们会发现,他要求我们提供了token,而不是AppSecret。但是,我们会发现按照官方的示例更改为自己的id和token后报错了。见官方Github仓库Issue165:在客户端启动时报错 · Issue #165 · tencent-connect/botpy (github.com)
无法理解为什么不更新文档,鉴权方式变更文档里居然提都不提。
TypeError: start() got an unexpected keyword argument 'token'
对我个人当前来说,我把token改成secret之后就可以正常运行了。
直接把原先的client.run一行改为下文就可以正常运行了。把这里的appid和appsecret改成你自己的对应信息即可!
client.run(appid="appid", secret='appsecret')
如果一切正常,应该有类似以下输出:
[INFO] (client.py:162)_bot_login [botpy] 登录机器人账号中...
[INFO] (robot.py:65)update_access_token [botpy] access_token expires_in 1973
[INFO] (client.py:181)_bot_init [botpy] 程序启动...
[INFO] (connection.py:60)multi_run [botpy] 最大并发连接数: 1, 启动会话数: 1
[INFO] (client.py:242)bot_connect [botpy] 会话启动中...
[INFO] (gateway.py:115)ws_connect [botpy] 启动中...
[INFO] (gateway.py:142)ws_identify [botpy] 鉴权中...
[INFO] (gateway.py:85)on_message [botpy] 机器人「XX-测试中」启动成功!
[INFO] (gateway.py:223)_send_heart [botpy] 心跳维持启动...
恭喜你!到这里你已经成功编写了一个简单的QQ机器人。