MidJourney /imagine命令调用报错INTERACTION_APPLICATION_COMMAND_INVALID_VERSION求助
解决MidJourney /imagine命令版本过期问题
之前运行正常的MidJourney /imagine调用代码突然失效,报错信息如下:
{"code": 50035, "errors": {"data": {"_errors": [{"code": "INTERACTION_APPLICATION_COMMAND_INVALID_VERSION", "message": "Dieser Befehl ist veraltet, bitte versuche es in einigen Minuten erneut."}]}}, "message": "Invalid Form Body"}
这是因为代码里硬编码的version值已过期,以下是两种解决方法:
方法一:手动获取最新version值
- 打开Discord网页版,进入MidJourney所在服务器
- 按F12打开开发者工具,切换到「Network」标签
- 手动发送一次
/imagine命令,在Network列表中找到POST类型的interactions请求 - 查看该请求的Payload数据,提取
data.version和application_command.version对应的字符串,替换代码中旧的版本号(原代码里的1077969938624553050)
方法二:自动获取最新version值(推荐)
通过Discord API自动获取MidJourney机器人的/imagine命令最新版本,避免手动更新的麻烦,代码示例:
import requests def get_latest_imagine_version(): headers = {'authorization': Globals.SALAI_TOKEN} # 调用API获取服务器内MidJourney的所有命令 api_url = f"https://discord.com/api/v9/guilds/{Globals.SERVER_ID}/applications/936929561302675456/commands" resp = requests.get(api_url, headers=headers) if resp.status_code == 200: for cmd in resp.json(): if cmd['name'] == 'imagine': return cmd['version'] return None # 使用示例:获取最新版本后替换payload中的对应字段 latest_version = get_latest_imagine_version() if latest_version: payload["data"]["version"] = latest_version payload["data"]["application_command"]["version"] = latest_version
额外注意事项
- 若替换version后仍报错,检查
session_id是否过期,同样可以从开发者工具的interactions请求中提取最新值 - 确保
SALAI_TOKEN、SERVER_ID、CHANNEL_ID均为有效且未过期的参数 - 这种调用方式依赖Discord未公开的交互接口,后续可能还会变动,建议持续关注相关代码仓库的更新
内容的提问来源于stack exchange,提问作者leoconsti
相关产品推荐
相关产品推荐

