乐于分享
好东西不私藏

推送任意消息至QQ——借助OpenClaw的QQ机器人实现使用Python编辑任意消息向手机端的推送(完整教程)

推送任意消息至QQ——借助OpenClaw的QQ机器人实现使用Python编辑任意消息向手机端的推送(完整教程)

依托OpenClaw驱动QQ机器人服务,打通多源消息推送链路,脚本日志、服务告警、自定义文本均可一键下发至手机QQ,低成本搭建全天候移动端消息提醒通道。
QQ机器人本来是为OpenClaw、Hermes Agent等智能体而开发的,可以通过QQ机器人向AI下达指令,借助QQ机器人服务,可以实现向桌面端QQ、手机端QQ推送任意消息。
1. 注册QQ机器人
登录QQ开放平台(https://q.qq.com/qqbot/openclaw/),创建机器人。牢记自己的AppID和AppSecret。
AppSecret只出现一次,再次查看时,会重置。
新建QQ机器人后,客户端会收到机器人推送的信息“Hello,我已被你创建成功,等你进一步开发部署我的‘灵魂’。查看我的设置”。
2. 获取机器人的UserID
因Python代码较多,请通过关注本公众号后,后台回复“qq机器人”进行获取。部分代码如下:
import requestsimport jsonimport timefrom datetime import datetimetry:    import websockets    import asyncio    WEBSOCKETS_AVAILABLE = Trueexcept ImportError:    WEBSOCKETS_AVAILABLE = False    print("提示: websockets 库未安装,将使用简化模式")class QQBotListener:    def __init__(self, app_id, app_secret, sandbox=False):        self.app_id = app_id        self.app_secret = app_secret        self.sandbox = sandbox        self.token_url = "https://bots.qq.com/app/getAppAccessToken"        self.api_url = "https://api.sgroup.qq.com"        self.sandbox_api_url = "https://sandbox.api.sgroup.qq.com"        self.access_token = None        self.token_expire_time = 0        self.last_s = 0        self.session_id = None        self.heartbeat_interval = None        self.running = False
保存到本地后,修改文件的AppID和AppSecret为你自己的值,直接使用Python命令即可运行,运行后如下:
C:\Users\Administrator\Desktop\Python\source_code\push_wechat>python qq_bot_listener.py============================================================QQ机器人 OpenID 获取工具============================================================AppID: 你的AppID沙箱模式: 否============================================================正在启动...获取到Gateway URL: wss://api.sgroup.qq.com/websocketWebSocket连接已建立,等待事件...[16:28:05] 收到Hello,心跳间隔: 41250ms[16:28:05] 发送心跳...[16:28:05] 已发送鉴权请求[16:28:05] [OK] 连接成功!机器人已就绪会话ID: e634b8da-b514-4a0e-a310-ead4ac80616d现在请在QQ中向机器人发送一条消息,我会为你显示用户的openid!
此时,即可在QQ客户端,向机器人发送一条任意消息,程序接收到消息后会自动保存UserID到openid_record.json中。
现在请在QQ中向机器人发送一条消息,我会为你显示用户的openid![16:28:46] 发送心跳...[16:28:46] [HEART] 心跳响应[16:29:27] 发送心跳...[16:29:27] [HEART] 心跳响应============================================================[16:29:49] [MSG] 收到单聊消息!   用户OpenID: 你的OpenID   消息内容: 你好   消息ID: ============================================================[OK] 已获取用户openid![已保存] openid记录已保存到 openid_record.json程序已停止
3. 获取token
打开CMD窗口输入以下指令(请修改为你自己的AppID和AppSecret),即可获取到token值。
curl -X POST "https://bots.qq.com/app/getAppAccessToken" -H "Content-Type: application/json" -"{\"appId\":\"你的AppID\",\"clientSecret\":\"你的AppSecret\"}"
4. 发送测试消息
指令如下(请修改为你自己的UserID和token)
curl -X POST "https://api.sgroup.qq.com/v2/users/你的UserID/messages" -H "Authorization: QQBot 你的token" -H "Content-Type: application/json" -"{\"content\":\"你好,这是一条测试消息!\",\"msg_type\":0}"
发送后,你的客户端将会收到一条消息“你好,这是一条测试消息!”
5. 获取token和发送测试消息的Python代码如下:
import requestsappid = '你的AppID'secret = '你的AppSecret'userid = '你的UserID'message = '你好,这是一条测试消息'token = requests.post("https://bots.qq.com/app/getAppAccessToken",json={"appId":appid,"clientSecret":secret}).json()["access_token"]res = requests.post(f"https://api.sgroup.qq.com/v2/users/{userid}/messages", headers={"Authorization":f"QQBot {token}"}, json={"content":message,"msg_type":0})
喜欢请点关注,下期将为您带来向微信推送消息。