Python新手如何用Python编写QQ群管机器人程序并解决API调用问题?
我现在是一个小白中的小白,之对编程有一个最基本的了解。但是因为参加人工智能大赛接触到了 Python,因为下半年的大赛自己也需要学习到 Python,因此想不如动手做一个小项目,边写学边做尝试着来。
然而最开始在思路上就卡死在 API 上了(想要自己写因此并不想使用 cleverqq 亦或者酷 Q ),Smart QQ 也已经停服,难道只能用 pywin32 了吗。
Python新手如何用Python编写QQ群管机器人程序并解决API调用问题?
4 回复
这个就触及到知识盲区了,qqbot 不能用吗 pip install qqbot
要写QQ群管机器人,现在主要有两个技术路线:用官方QQ机器人框架,或者用逆向协议库。
官方路线(推荐新手):用 go-cqhttp 搭配 nonebot2 框架。go-cqhttp 负责和QQ服务器通信,它提供了HTTP或WebSocket接口;nonebot2 是个Python异步机器人框架,你只需要写插件处理消息。
核心步骤:
- 去GitHub下载
go-cqhttp的release版本,运行后生成配置文件config.yml。 - 配置
config.yml,主要改这几项:
account:
uin: 你的机器人QQ号
password: "密码" # 如果扫码登录就留空
message:
post-format: array # 推荐用数组格式
servers:
- http:
host: 127.0.0.1
port: 5700
post:
- url: "http://127.0.0.1:8080/onebot/v11/http" # nonebot的地址
- ws-reverse:
- url: ws://127.0.0.1:8080/onebot/v11/ws/
api: ws://127.0.0.1:8080/onebot/v11/api/
event: ws://127.0.0.1:8080/onebot/v11/event/
- 安装
nonebot2并创建项目:
pip install nb-cli
nb create
- 写一个简单的插件(比如
plugins/group_manager.py):
from nonebot import on_command
from nonebot.adapters.onebot.v11 import GroupMessageEvent, Bot
kick = on_command("踢人")
@kick.handle()
async def handle_kick(bot: Bot, event: GroupMessageEvent):
args = str(event.message).strip().split()
if len(args) < 2:
await kick.finish("用法:踢人 @某人")
# 提取被@的用户ID
target_id = None
for seg in event.message:
if seg.type == "at":
target_id = int(seg.data["qq"])
if target_id:
await bot.set_group_kick(
group_id=event.group_id,
user_id=target_id
)
await kick.finish(f"已踢出用户{target_id}")
API调用常见问题:
- 连接失败:检查
go-cqhttp和nonebot的端口配置是否对应,防火墙是否放行。 - 收不到消息:确认
go-cqhttp的post-url或ws-reverse地址填的是nonebot的监听地址。 - 发消息失败:检查机器人账号是否被风控(新号容易遇到),可以尝试在手机QQ上先正常聊天几天。
- 权限不足:踢人、禁言等操作需要机器人是群管理员。
另一条路(不推荐新手):用 qq-botpy 这类逆向协议库,但需要自己处理消息队列和重连逻辑,而且容易被风控。
总结:新手先用 nonebot2 + go-cqhttp 这套官方生态。
QQbot 基于 Smart QQ 开发,但在今年年初已经停服。cleverqq 通过模拟 PC 端,不过 cleverqq 的原理介绍贴因为注册不了所以看不了。
建议酷 Q+nonebot,QQ 本身禁任何第三方接入,也不开放 API。如果是刚接触就像怼这类程序有点难了

