QQ 机器人
go-cqhttp 官网地址:https://docs.go-cqhttp.org/
不再推荐 go-cqhttp
- go-cqhttp 已归档,不再维护;且容易被腾讯风控,然后不可用
- 新一代机器人方案推荐使用无头 NTQQ 项目:Lagrange
- Lagrange.OneBot 一键启动(docker):https://github.com/shenxgan/qqbot
- QQ 机器人体验群:855013471
开始之前可先下载我打包好的附件:点击下载
1. 下载 go-cqhttp
下载地址:https://github.com/Mrs4s/go-cqhttp/releases
以 Windows10 64 位为例:下载 go-cqhttp_windows_amd64.exe
文件(如果下载了附件,就不用再下载这个了)
2. 生成配置
【建议】先创建一个单独的文件夹,比如 go-cqhttp
,将上面下载的 exe 文件放到此文件夹中。
直接双击 go-cqhttp_windows_amd64.exe
文件运行,会弹出提示,点击确认即可
会看到生成了 go-cqhttp.bat
文件,双击运行
提示你选择通信方式,选择 3: 反向 Websocket 通信
;然后关闭 cmd 窗口
查看文件夹,会看到生成了配置文件: config.yml
3. 进行配置
打开 config.yml
文件,用 pycharm
或者 文本文档
直接打开此文件;将它当成一个 txt 文件就行
仅改动两处地方,其它配置不用改动
3.1 配置 QQ 号
uin: 1233456 # QQ账号
直接修改第 4 行,将 1233456
改成机器人的 qq 号(可单独申请一个 qq 账号,也可以先直接使用自己的 qq 号)
3.2 配置 Websocket 连接地址
universal: ws://your_websocket_universal.server
修改第 98 行,改成 universal: ws://127.0.0.1:8000/qqbot/
4. 启动 Websocket 服务
这里使用 sanic
来启动 Websocket
服务
因为 sanic
原生就支持 Websocket
,用起来也超简单
4.1 安装 sanic
pip install sanic
4.2 启动 sanic
新建一个 server.py
文件,内容如下:
import json
from sanic import Sanic
app = Sanic('qqbot')
@app.websocket('/qqbot')
async def qqbot(request, ws):
"""QQ机器人"""
while True:
data = await ws.recv()
data = json.loads(data)
print(json.dumps(data, indent=4, ensure_ascii=False))
# if 判断是群消息且文本消息不为空
if data.get('message_type') == 'group' and data.get('raw_message'):
raw_message = data['raw_message']
msg = raw_message[::-1] # 反转回复
ret = {
'action': 'send_group_msg',
'params': {
'group_id': data['group_id'],
'message': msg,
}
}
await ws.send(json.dumps(ret))
if __name__ == '__main__':
app.run(debug=True, auto_reload=True)
在 cmd 中运行 python server.py
进行启动
也可以将文件拖拽到 pycharm 中打开,然后点击运行
5. 启动机器人
双击运行 go-cqhttp.bat
文件,根据提示扫码登录。
登录成功后即可看到成功提示,且 Websocket 服务那边也会有日志产生了
6. 测试&使用机器人
将机器人加到自己的测试 QQ 群中,然后使用另一个账号随意发送一段消息,就能看到机器人回复了逆序后的消息
至此,qq机器人已经搭建&启动完毕。后续你可以根据你的机器人定位来完善机器人的回复逻辑
7. 附件
我将上述的所有代码和配置打包了,可直接下载使用(如果在文章开头下载了就不用重复下载了)。
改动 config.yml
文件第 4 行的 QQ 号,然后启动机器人和 Websocket 服务就可以了
8. 体验我的机器人
我的机器人定位是 python 学习机器人,根据群里的关键字触发自动回复
可加入下面第一个 QQ 群,然后发送 python 进行体验