当前位置: 首页 > news >正文

MidJourney-Wrapper源码解析:Salai.py中的Discord交互协议实现

MidJourney-Wrapper源码解析:Salai.py中的Discord交互协议实现

【免费下载链接】MidJourney-WrapperMidJourney wrapper in Discord.项目地址: https://gitcode.com/gh_mirrors/mi/MidJourney-Wrapper

MidJourney-Wrapper是一个基于Discord协议的MidJourney AI绘图工具封装库,通过Salai.py模块实现了与Discord API的交互,让开发者能够轻松集成AI绘图功能。本文将深入解析Salai.py的核心实现,帮助新手理解Discord交互协议的工作原理。

核心功能概览:MidJourney与Discord的无缝对接

Salai.py作为项目的核心模块,主要实现了四大核心功能,这些功能通过Discord的交互接口直接调用MidJourney的AI绘图能力:

  • 文本转图像:通过PassPromptToSelfBot函数发送绘画指令
  • 图像放大:提供基础放大(Upscale)和最大分辨率放大(MaxUpscale)两种模式
  • 图像变体:通过Variation函数生成相似风格的图像变体

这些功能的实现依赖于Discord的交互(Interaction)机制,这是一种比传统消息命令更强大的交互方式,支持按钮点击、下拉菜单等富交互形式。

协议实现细节:从 payload 构造到 API 调用

1. 交互请求的基本结构

Salai.py中的所有交互函数都遵循相同的请求模式:构造符合Discord API规范的payload,添加认证头,然后通过POST请求发送到Discord的交互接口。以最基础的PassPromptToSelfBot函数为例:

def PassPromptToSelfBot(prompt : str): payload ={ "type":2, "application_id":"936929561302675456", "guild_id":Globals.SERVER_ID, "channel_id":Globals.CHANNEL_ID, "session_id":"2fb980f65e5c9a77c96ca01f2c242cf6", "data":{ "version":"1077969938624553050", "id":"938956540159881230", "name":"imagine", "type":1, "options":[{"type":3,"name":"prompt","value":prompt}] }, "attachments":[] } header = {'authorization' : Globals.SALAI_TOKEN} response = requests.post("https://discord.com/api/v9/interactions", json = payload, headers = header) return response

这个函数构造了一个"imagine"命令的请求,其中几个关键参数需要特别注意:

  • type=2:表示这是一个应用命令(Application Command)
  • application_id:固定为MidJourney机器人的ID(936929561302675456)
  • data.options:包含了实际的绘画提示词(prompt)
  • authorization头:使用用户的SALAI_TOKEN进行身份验证

2. 图像操作的交互类型

与文本转图像的"应用命令"不同,图像放大和变体功能使用的是"组件交互"(Component Interaction),对应type=3。以Upscale函数为例:

def Upscale(index : int, messageId : str, messageHash : str): payload = { "type":3, "guild_id":Globals.SERVER_ID, "channel_id":Globals.CHANNEL_ID, "message_flags":0, "message_id": messageId, "application_id":"936929561302675456", "session_id":"45bc04dd4da37141a5f73dfbfaf5bdcf", "data":{ "component_type":2, "custom_id":"MJ::JOB::upsample::{}::{}".format(index, messageHash) } } # 发送请求的代码省略...

这里的关键是custom_id字段,它采用了MidJourney特定的格式:MJ::JOB::upsample::index::messageHash,其中:

  • upsample表示操作类型(放大)
  • index是要放大的图像序号(1-4)
  • messageHash是原始图像消息的唯一标识

3. 全局配置与依赖

Salai.py依赖Globals.py中定义的全局变量,包括:

  • SERVER_ID:Discord服务器ID
  • CHANNEL_ID:命令发送的频道ID
  • SALAI_TOKEN:用户认证令牌

这些配置需要用户根据自己的Discord环境进行设置,是实现交互的必要前提。

实际应用:从API调用到用户交互

Salai.py的函数在main.py中被封装为Discord机器人命令,提供用户友好的交互界面。例如:

@bot.command(description="This command is a wrapper of MidJourneyAI") async def mj_imagine(ctx, prompt: discord.Option(str)): response = PassPromptToSelfBot(prompt) # 处理响应的代码省略...

这段代码将PassPromptToSelfBot函数转换为一个Discord机器人命令/mj_imagine,用户只需输入提示词即可触发AI绘图。

总结:MidJourney-Wrapper的价值与扩展

Salai.py通过封装复杂的Discord交互协议,为开发者提供了简洁的API来调用MidJourney的强大功能。其核心价值在于:

  1. 协议抽象:隐藏了Discord API的细节,让开发者专注于业务逻辑
  2. 功能完整性:实现了从绘图到放大、变体的全流程操作
  3. 易于集成:通过简单的函数调用即可将AI绘图功能集成到自己的应用中

对于想要扩展功能的开发者,可以参考现有函数的实现模式,添加新的交互类型,如"重新生成"(Remix)或"平移"(Pan)等操作,只需构造相应的custom_id和payload即可。

要开始使用这个项目,你需要先克隆仓库:

git clone https://gitcode.com/gh_mirrors/mi/MidJourney-Wrapper

然后按照文档配置Globals.py中的必要参数,即可快速搭建自己的MidJourney交互应用。

【免费下载链接】MidJourney-WrapperMidJourney wrapper in Discord.项目地址: https://gitcode.com/gh_mirrors/mi/MidJourney-Wrapper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1295348/

相关文章:

  • 贵阳商圈黄金回收门店测评,核心城区正规变现渠道优选推荐 - 日常比对手册
  • AI不是越多越好!自媒体人必须警惕的3类“伪智能”工具(附真实压测对比:响应延迟/语义连贯性/版权风险)
  • Vp联合C#编程计算圆入门
  • 为什么你的提示词总在第3轮迭代后崩塌?——揭秘LLM响应熵值跃迁临界点及4步稳态修复法
  • 知识城工装装修公司哪家性价比高:【派福装饰】商用实惠 - 17728098551
  • 2026青岛翡翠回收行业规范:仅收天然A货,种水色工分级估价标准出台 - 奢侈品回收知识分享
  • 2026口碑好的上海电脑回收公司 客户认可服务商盘点 - 品牌品鉴馆
  • AI写自动化测试:3天搭建可投产的智能测试流水线(附GitHub开源模板)
  • 吉华电子行业综合实力榜 价格透明无套路 口碑力荐 - 工业品网
  • SuperRDP完整指南:快速解锁Windows家庭版远程桌面功能
  • stm32f103的ST-link调试接线
  • MFC质量流量控制器流量不准怎么排查?设定值、反馈值与参考流量对比,附Python代码
  • Windows 11家庭版免费解锁多用户远程桌面:RDP Wrapper完整教程
  • 2026甄选:不锈钢焊接加工领域实力公司与品牌机构专业解析 - 卓企推荐
  • MACBook 加入AD域 Tahoe 26.5.1
  • 单片机毕业设计-基于单片机的车内温碳监测与声光语音报警设计 基于 STM32 的车门状态与环境参数监测系统设计(013601)
  • 人形机器人量产提速:2026 全年整机产量有望突破 10 万台
  • 为什么你的AI销售模型ROI为负?——头部SaaS公司内部复盘:3个被忽视的数据漂移信号与应急响应协议
  • 泛微E9-字符半角变圆角解决方案
  • 2026 郑州二七区DR钻石回收推荐,大学路、铭功路合规实体门店 - 逸程奢侈品回收中心
  • 如何在Obsidian中一键实现多格式文档转换:Obsidian Pandoc插件完整指南
  • 2026运维测试岗面试话术升维指南:从技术描述到业务语言的AI优化方法论
  • 2026年油缸定制企业推荐榜单 - GrowUME
  • 【单片机毕业设计推荐】基于 STM32/51 单片机的土壤温湿度智能灌溉温控系统设计与实现 基于单片机的农田土壤湿度自动浇灌与环境降温控制系统设计(020604)
  • 强力解密Navicat密码:3分钟找回数据库连接密码的终极方案
  • Baserow:解决企业数据孤岛问题的开源无代码数据库平台
  • 2026年,苏州吴江老房翻新公司有何独特秘诀? - 甄选测评馆
  • SPT-AKI存档编辑器:塔科夫离线版终极游戏进度管理器
  • 知识城工装装修公司哪家靠谱:【派福装饰】履约靠谱 - 18102756859
  • Gemini-Balance-Lite进阶开发:自定义代理规则与功能扩展教程