
MidJourney-Wrapper源碼解析Salai.py中的Discord交互協議實現【免費下載鏈接】MidJourney-WrapperMidJourney wrapper in Discord.項目地址: https://gitcode.com/gh_mirrors/mi/MidJourney-WrapperMidJourney-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命令的請求其中幾個關鍵參數需要特別注意type2表示這是一個應用命令(Application Command)application_id固定為MidJourney機器人的ID(936929561302675456)data.options包含了實際的繪畫提示詞(prompt)authorization頭使用用戶的SALAI_TOKEN進行身份驗證2. 圖像操作的交互類型與文本轉圖像的應用命令不同圖像放大和變體功能使用的是組件交互(Component Interaction)對應type3。以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_IDDiscord服務器IDCHANNEL_ID命令發送的頻道IDSALAI_TOKEN用戶認證令牌這些配置需要用戶根據自己的Discord環境進行設置是實現交互的必要前提。實際應用從API調用到用戶交互Salai.py的函數在main.py中被封裝為Discord機器人命令提供用戶友好的交互界面。例如bot.command(descriptionThis 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的強大功能。其核心價值在于協議抽象隱藏了Discord API的細節讓開發者專注于業務邏輯功能完整性實現了從繪圖到放大、變體的全流程操作易于集成通過簡單的函數調用即可將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),僅供參考