如何通过Python的requests连接Discord账号发送指令?代码问题求助
问题分析与解决
第一段代码的问题
调用/api/v9/interactions接口时,请求参数完全不符合Discord交互接口的要求。这个接口用于触发Slash命令(比如/imagine),但需要严格的结构化参数,不是简单传data:"/imagine..."就能生效的。Discord的交互请求必须包含多个核心字段,比如指定交互类型、目标Bot ID、频道ID、命令结构等,你的代码完全缺失这些必要信息,所以接口无响应。
第二段代码的问题
调用普通消息接口/api/v9/channels/{channel_id}/messages发送content:"/imagine...",本质只是发送一段普通文本,Discord不会将其识别为Slash命令。Slash命令必须通过专门的交互接口触发,普通消息接口不具备解析命令格式的能力。
正确的代码实现
首先需要从浏览器抓包获取几个关键参数:
authorization: 你的Discord用户Token(已在你的代码中使用)application_id: Midjourney Bot的固定ID为936929561302675456,也可以自己抓包确认channel_id: 目标频道的IDsession_id: 从浏览器发送/imagine时的交互请求中提取version、id: /imagine命令对应的版本号和ID,同样从抓包获取
然后编写符合接口要求的请求:
import requests # 替换为你的实际参数 AUTH_TOKEN = "你的Discord用户Token" CHANNEL_ID = "目标频道ID" APPLICATION_ID = "936929561302675456" SESSION_ID = "从抓包获取的session_id" COMMAND_VERSION = "从抓包获取的version值" COMMAND_ID = "从抓包获取的id值" url = "https://discord.com/api/v9/interactions" headers = { "Authorization": AUTH_TOKEN, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "Content-Type": "application/json" } payload = { "type": 2, "application_id": APPLICATION_ID, "channel_id": CHANNEL_ID, "session_id": SESSION_ID, "data": { "version": COMMAND_VERSION, "id": COMMAND_ID, "name": "imagine", "type": 1, "options": [ { "type": 3, "name": "prompt", "value": "very yellow banana" } ], "application_command": { "id": COMMAND_ID, "application_id": APPLICATION_ID, "version": COMMAND_VERSION, "default_permission": True, "default_member_permissions": None, "type": 1, "name": "imagine", "description": "Create images with Midjourney", "dm_permission": True, "options": [ { "type": 3, "name": "prompt", "description": "The prompt to generate an image from", "required": True } ] }, "attachments": [] } } response = requests.post(url, headers=headers, json=payload) # 打印响应状态和内容,用于排查问题 print(response.status_code) print(response.text)
注意事项
- 所有
version、id参数建议通过浏览器抓包真实发送/imagine的请求获取,避免因Midjourney更新导致参数失效 - 不要频繁发送请求,Discord会检测异常请求并封禁账号
- 务必妥善保管你的用户Token,泄露后他人可直接操控你的Discord账号
内容的提问来源于stack exchange,提问作者Jonny L.
相关产品推荐
相关产品推荐

