如何用Python自动化调用Midjourney的/imagine命令?
解决Discord机器人触发Midjourney /imagine指令的问题
- 别直接发送"/imagine ..."普通文本,Discord的斜杠指令是应用级交互命令,必须用对应格式触发,不是普通消息。
- 用Python实现的核心思路是构造符合Discord交互规范的请求,而不是发普通消息。下面是具体实现步骤:
- 读取你的JSON生成需求文件,提取每个prompt内容。
- 准备好你的机器人Token、目标频道ID、Midjourney机器人的应用ID(可在Discord服务器成员列表或开发者后台查看)。
- 直接调用Discord API来触发指令:
import json import requests # 配置信息 BOT_TOKEN = "你的机器人Token" CHANNEL_ID = 123456789012345678 # 替换为目标频道ID MJ_APP_ID = "Midjourney机器人的应用ID" GUILD_ID = "你的服务器ID" # 加载prompt列表 with open('prompts.json', 'r', encoding='utf-8') as f: prompts = json.load(f) # 构造请求头 headers = {"Authorization": f"Bot {BOT_TOKEN}"} # 遍历触发每个prompt for item in prompts: prompt = item.get('prompt', '') if not prompt: continue # 构造Discord交互请求体 payload = { "type": 2, "application_id": MJ_APP_ID, "guild_id": GUILD_ID, "channel_id": CHANNEL_ID, "data": { "name": "imagine", "options": [{"name": "prompt", "value": prompt}] } } # 发送请求触发指令 response = requests.post("https://discord.com/api/v10/interactions", json=payload, headers=headers) if response.status_code in (200, 204): print(f"成功触发/imagine:{prompt}") else: print(f"触发失败,状态码:{response.status_code},响应:{response.text}") - 关键注意点:
- 确保机器人拥有发送消息和使用应用命令的服务器权限。
- 必须正确传递
prompt参数,Midjourney的/imagine指令需要明确指定参数名。 - 控制请求频率,遵守Midjourney的使用规则,避免触发限制。
内容的提问来源于stack exchange,提问作者infermi
相关产品推荐
相关产品推荐

