You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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命令必须通过专门的交互接口触发,普通消息接口不具备解析命令格式的能力。

正确的代码实现

首先需要从浏览器抓包获取几个关键参数:

  1. authorization: 你的Discord用户Token(已在你的代码中使用)
  2. application_id: Midjourney Bot的固定ID为936929561302675456,也可以自己抓包确认
  3. channel_id: 目标频道的ID
  4. session_id: 从浏览器发送/imagine时的交互请求中提取
  5. 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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:47:35