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)  # 调用消息处理函数处理消息

代码说明:

  1. 导入必要的模块:websocket 模块用于连接 WebSocket,json 模块用于解析和生成 JSON 数据。
  2. 定义消息处理函数 on_message:该函数用于处理收到的消息。
  3. 解析消息:使用 json.loads 解析收到的 JSON 格式的消息。
  4. 判断消息类型:如果消息类型为 private(私聊消息),则执行回复操作。
  5. 发送回复消息:使用 ws.send 发送回复消息,消息内容为 JSON 格式,包含 action 和 params 字段。
  6. 连接到 WebSocket:使用 ws.connect 连接到 Go-CQHTTP 的 WebSocket 服务器。
  7. 发送心跳包:使用 ws.send 发送心跳包,测试连接是否成功。
  8. 接收消息循环:进入循环,不断接收消息,并调用 on_message 函数处理消息。

注意:

  • 以上代码假设 Go-CQHTTP 运行在本地,端口为 6700。
  • 实际应用中,需要根据自己的配置修改代码。
  • 代码仅供参考,建议根据实际需求进行修改和完善。
Python 连接 Go-CQHTTP WebSocket 示例:接收私聊消息并回复

原文地址: http://www.cveoy.top/t/topic/m5Cl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录