Python 连接 Go-CQHTTP WebSocket 示例:接收私聊消息并回复
Python 连接 Go-CQHTTP WebSocket 示例:接收私聊消息并回复
本示例演示如何使用 Python 连接 Go-CQHTTP 的 WebSocket,接收私聊消息并回复。代码包含详细注释,解释了每个步骤的作用。
import websocket # 导入 websocket 模块
import json # 导入 json 模块
# 定义消息处理函数
def on_message(ws, message):
message = json.loads(message) # 解析收到的消息
# 判断消息类型是不是私聊消息
if message['message_type'] == 'private':
# 发送回复消息
ws.send(json.dumps({
'action': 'send_private_msg',
'params': {
'user_id': message['sender']['user_id'], # 回复消息的对象是消息发送者
'message': '你好,我是机器人小助手!'
}
}))
# 连接到 go-cqhttp 的 WebSocket
ws = websocket.WebSocket()
ws.connect('ws://127.0.0.1:6700/event') # 连接到 go-cqhttp 的 WebSocket
# 发送心跳包
ws.send(json.dumps({
'action': 'get_login_info' # 发送心跳包,测试是否连接成功
}))
# 接收消息
while True:
message = ws.recv() # 接收消息
on_message(ws, message) # 调用消息处理函数处理消息
代码说明:
- 导入必要的模块:
websocket模块用于连接 WebSocket,json模块用于解析和生成 JSON 数据。 - 定义消息处理函数
on_message:该函数用于处理收到的消息。 - 解析消息:使用
json.loads解析收到的 JSON 格式的消息。 - 判断消息类型:如果消息类型为
private(私聊消息),则执行回复操作。 - 发送回复消息:使用
ws.send发送回复消息,消息内容为 JSON 格式,包含action和params字段。 - 连接到 WebSocket:使用
ws.connect连接到 Go-CQHTTP 的 WebSocket 服务器。 - 发送心跳包:使用
ws.send发送心跳包,测试连接是否成功。 - 接收消息循环:进入循环,不断接收消息,并调用
on_message函数处理消息。
注意:
- 以上代码假设 Go-CQHTTP 运行在本地,端口为 6700。
- 实际应用中,需要根据自己的配置修改代码。
- 代码仅供参考,建议根据实际需求进行修改和完善。
原文地址: http://www.cveoy.top/t/topic/m5Cl 著作权归作者所有。请勿转载和采集!