Discord Bot AI Image Generator: मुफ़्त बॉट और अपना बॉट बनाने का तरीका
क्या आपको ऐसा Discord बॉट चाहिए जो बिना मासिक फ़ीस के टेक्स्ट प्रॉम्प्ट को AI इमेज में बदल दे? यह लेख मुफ़्त विकल्पों को उनके असली काम करने के तरीके से छाँटता है, बताता है कि हर एक में कतार के इंतज़ार और सीमाओं की कितनी कीमत चुकानी पड़ती है, और काम करने वाले कोड के साथ आपका अपना स्लैश कमांड इमेज बॉट बनाता है।
/imagine a lighthouse at dawn टाइप करें, लगभग दस सेकंड इंतज़ार करें, और चैट चैनल के थ्रेड में एक तैयार तस्वीर आ जाएगी जिस पर सब प्रतिक्रिया दे सकें। Discord बॉट AI इमेज जनरेटर की असली खूबी यही है: न ब्राउज़र टैब, न साइन-अप फ़ॉर्म, न कोई अतिरिक्त ऐप। दिक्कत यह है कि मशहूर बॉट मासिक फ़ीस लेते हैं, और मुफ़्त वाले कतार, रोज़ाना की सीमा या अचानक बंद हो जाने के साथ आते हैं। यह लेख मुफ़्त विकल्पों को उनके असली काम करने के तरीके से छाँटता है, बताता है कि हर एक आपका कितना इंतज़ार समय लेता है, और फिर 100 लाइनों से कम JavaScript में आपका अपना बॉट बनाता है।
💡 त्वरित उत्तर: सबसे आसान मुफ़्त रास्ता एक कम्युनिटी बॉट है जो स्वयंसेवकों के GPU उधार लेता है। सबसे भरोसेमंद रास्ता एक बॉट है जिसे आप खुद होस्ट करते हैं, और नीचे का कोड इतना छोटा है कि एक बैठक में पूरा हो जाए।
Discord इमेज बॉट असल में क्या करते हैं
एक Discord इमेज बॉट एक छोटा प्रोग्राम है जिसके तीन काम होते हैं: कमांड सुनना, आपका टेक्स्ट एक इमेज मॉडल को भेजना, और नतीजा वापस चैनल में पोस्ट करना। बॉट खुद लगभग कोई भारी काम नहीं करता। असली काम कहीं और एक GPU पर होता है, इसीलिए बॉट एक लैपटॉप, किसी खाली मिनी PC या सबसे सस्ते क्लाउड सर्वर पर भी चल सकता है।
स्लैश कमांड कैसे काम करता है
हर आधुनिक बॉट एक ही लूप पर चलता है, और इसे एक बार देख लेने से आगे का लेख समझना आसान हो जाएगा:
एक सदस्य /imagine टाइप करता है और प्रॉम्प्ट भरता है।
Discord आपके बॉट को एक इंटरैक्शन भेजता है और 3 सेकंड के अंदर जवाब की उम्मीद करता है।
बॉट "सोच रहा है" वाली स्थिति के साथ जवाब देता है, जिसे डिफ़र्ड रिप्लाई कहते हैं, और इससे 15 मिनट तक का समय मिल जाता है।
बॉट एक इमेज मॉडल को कॉल करता है और काम पूरा होने का इंतज़ार करता है।
बॉट जवाब को एडिट करता है और तैयार तस्वीर जोड़ देता है।
चरण 3 पर ही ज़्यादातर पहली कोशिशें फ़ेल होती हैं। इमेज का काम तीन सेकंड से ज़्यादा समय लेता है, इसलिए जो बॉट डिफ़र्ड रिप्लाई छोड़ देता है वह "The application did not respond" दिखाता है और तस्वीर किसी तक नहीं पहुँचती।
Discord AI आर्ट के लिए क्यों उपयुक्त है
चैट, इमेज जनरेशन का एक आश्चर्यजनक रूप से अच्छा घर साबित होता है:
साझा फ़ीड। हर किसी को हर प्रॉम्प्ट दिखता है, इसलिए लोग वही कॉपी करते हैं जो काम करता है और उसे और बेहतर बनाते हैं।
तुरंत फ़ीडबैक। रिएक्शन और जवाब बताते हैं कि कौन से नतीजे पसंद आए।
अंतर्निहित अनुमतियाँ। रोल तय करते हैं कौन जनरेट कर सकता है, और चैनल प्रयोगों को गंभीर बातचीत से दूर रखते हैं।
डिफ़ॉल्ट रूप से मोबाइल। सदस्य बिना कुछ नया इंस्टॉल किए फ़ोन से इमेज बना लेते हैं।
💡 टिप: बॉट को उसका अपना चैनल दें। सामान्य चैट में इमेज का स्पैम किसी कम्युनिटी को परेशान करने का सबसे तेज़ तरीका है।
मुफ़्त Discord इमेज बॉट की तुलना
"मुफ़्त" का मतलब इस पर निर्भर करता है कि GPU का खर्च कौन उठा रहा है। नीचे की तालिका मुख्य प्रकारों को इसी एक सवाल से बाँटती है।
बॉट का प्रकार
GPU का खर्च कौन उठाता है
आम इंतज़ार
मुख्य पेच
कम्युनिटी GPU नेटवर्क
स्वयंसेवक जो अपनी खाली क्षमता दान करते हैं
कुछ सेकंड से कई मिनट
कतार की प्राथमिकता, सीमित मॉडल विकल्प
मुफ़्त ट्रायल बॉट
बॉट का मालिक, जब तक क्रेडिट खत्म न हों
तेज़
क्रेडिट खत्म होते ही पेवॉल
सेल्फ़-होस्टेड ओपन-सोर्स
आप
आपके GPU या API पर निर्भर
रखरखाव आपको करना होगा
पेड फ़्लैगशिप बॉट
आपकी सब्सक्रिप्शन
तेज़
मासिक फ़ीस
कीमतें और सीमाएँ अक्सर बदलती हैं, इसलिए अपने सर्वर पर बॉट बुलाने से पहले उसका अपना पेज ज़रूर देखें।
कम्युनिटी GPU बॉट
Stable Horde, जिसे अब AI Horde भी कहा जाता है, सबसे मशहूर उदाहरण है। स्वयंसेवक ग्राफ़िक्स कार्ड साझा करते हैं, और कोई भी बिना खर्च के Stable Diffusion इमेज माँग सकता है। प्राथमिकता kudos नाम के पॉइंट्स से तय होती है, जो GPU समय उधार देने से मिलते हैं, इसलिए कम पॉइंट्स वाले उपयोगकर्ताओं के अनुरोध ज़्यादा देर तक इंतज़ार करते हैं। इस नेटवर्क पर बने कम्युनिटी बॉट सचमुच मुफ़्त Discord AI आर्ट बॉट के सबसे करीब हैं, जिसमें एक समझौता करना पड़ता है: रफ़्तार इस पर निर्भर करती है कि कितने स्वयंसेवक ऑनलाइन हैं।
मुफ़्त ट्रायल बॉट
कई बॉट कुछ मुफ़्त जनरेशन देते हैं और फिर भुगतान माँगते हैं। स्टाइल आज़माने के लिए ये अच्छे हैं, लेकिन किसी सर्वर में जोड़ने से पहले तीन चेतावनी संकेत जाँच लें:
कई महीनों से कोई अपडेट नहीं।
कोई साफ़ मालिक या सपोर्ट चैनल नहीं।
ऐसी अनुमति माँगना जिसकी बॉट को ज़रूरत नहीं, जैसे Administrator।
जो बॉट सिर्फ़ तस्वीरें पोस्ट करता है, उसे Send Messages और Attach Files चाहिए। बस इतना ही।
Midjourney पैसे क्यों लेता है
Midjourney एक Discord बॉट के रूप में शुरू हुआ और उसने इस फ़ॉर्मेट को लोकप्रिय बनाया। हर इमेज असली GPU मिनट खर्च करती है, और चैट बॉट के पास उनका खर्च उठाने के लिए विज्ञापन की जगह नहीं होती, इसलिए बोझ उपयोगकर्ता पर पड़ता है। इसीलिए लंबे समय तक चलने वाले मुफ़्त बॉट अक्सर छोटे, कम्युनिटी द्वारा चलाए जाने वाले, या किसी दूसरे व्यवसाय के सहारे चलने वाले होते हैं।
अपना बॉट कैसे बनाएँ
अपना बॉट बनाने से कतार और पेवॉल दोनों हट जाते हैं। मॉडल, सीमाएँ और नियम आप खुद चुनते हैं। आपको Node.js 20.6 या उससे नया, एक Discord अकाउंट जो सर्वर में बॉट जोड़ सके, और किसी इमेज प्रोवाइडर का API टोकन चाहिए। नीचे का कोड PicassoIA API इस्तेमाल करता है क्योंकि इसका फ़्लो सरल है: प्रिडिक्शन बनाएँ, उसकी स्थिति जाँचें, फ़ाइल डाउनलोड करें।
Discord एप्लिकेशन बनाएँ
Discord Developer Portal खोलें और New Application पर क्लिक करें।
Bot टैब में टोकन रीसेट करें और उसे एक बार कॉपी कर लें। इसे पासवर्ड की तरह संभालें।
OAuth2 में स्कोप bot और applications.commands चुनें, फिर अनुमतियाँ Send Messages और Attach Files चुनें।
बनाया गया URL खोलें और बॉट को एक टेस्ट सर्वर में जोड़ें।
Discord की सेटिंग में Developer Mode चालू करें, फिर अपने सर्वर ID और application ID कॉपी करें।
इन मानों को अपने कोड के बगल में .env फ़ाइल में सहेजें:
फिर npm init -y चलाएँ और npm install discord.js, और "type": "module" को package.json में जोड़ें।
💡 टिप: स्लैश कमांड को किसी प्रिविलेज्ड इंटेंट की ज़रूरत नहीं होती, इसलिए आप वह Message Content अप्रूवल छोड़ सकते हैं जो टेक्स्ट-कमांड बॉट को माँगना पड़ता है।
स्लैश कमांड रजिस्टर करें
register.js बनाएँ। यह Discord को बताता है कि /imagine मौजूद है, जिसमें एक ज़रूरी प्रॉम्प्ट और एक वैकल्पिक शेप है:
import { REST, Routes, SlashCommandBuilder } from "discord.js";
const imagine = new SlashCommandBuilder()
.setName("imagine")
.setDescription("Make an image from a text prompt")
.addStringOption((o) =>
o.setName("prompt").setDescription("What to picture").setRequired(true).setMaxLength(500)
)
.addStringOption((o) =>
o.setName("ratio").setDescription("Image shape").addChoices(
{ name: "Square", value: "1:1" },
{ name: "Wide", value: "16:9" },
{ name: "Tall", value: "9:16" }
)
);
const rest = new REST().setToken(process.env.DISCORD_TOKEN);
await rest.put(
Routes.applicationGuildCommands(process.env.CLIENT_ID, process.env.GUILD_ID),
{ body: [imagine.toJSON()] }
);
console.log("Command registered");
इसे node --env-file=.env register.js के साथ एक बार चलाएँ। एक सर्वर के लिए रजिस्टर किए गए कमांड तुरंत दिखते हैं, जबकि ग्लोबल कमांड दिखने में ज़्यादा समय ले सकते हैं, इसलिए पहले एक सर्वर पर टेस्ट करें।
इमेज हैंडलर लिखें
bot.js बनाएँ। यही पूरा बॉट है:
import { Client, GatewayIntentBits, AttachmentBuilder } from "discord.js";
const API = "https://api.picassoia.com/v1";
const headers = {
Authorization: `Bearer ${process.env.PICASSOIA_TOKEN}`,
"Content-Type": "application/json",
};
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function generateImage(prompt, aspectRatio) {
const create = await fetch(`${API}/models/picassoia/picassoia-image/predictions`, {
method: "POST",
headers,
body: JSON.stringify({ input: { prompt, aspect_ratio: aspectRatio } }),
});
if (!create.ok) throw new Error(`Create failed with status ${create.status}`);
let prediction = await create.json();
while (["starting", "processing"].includes(prediction.status)) {
await sleep(2000);
const poll = await fetch(`${API}/predictions/${prediction.id}`, { headers });
prediction = await poll.json();
}
if (prediction.status !== "succeeded") throw new Error(`Prediction ${prediction.status}`);
return prediction.output[0];
}
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.on("interactionCreate", async (interaction) => {
if (!interaction.isChatInputCommand() || interaction.commandName !== "imagine") return;
const prompt = interaction.options.getString("prompt", true);
const ratio = interaction.options.getString("ratio") ?? "1:1";
await interaction.deferReply();
try {
const imageUrl = await generateImage(prompt, ratio);
const file = Buffer.from(await (await fetch(imageUrl)).arrayBuffer());
await interaction.editReply({
content: `**${interaction.user.username}:** ${prompt.slice(0, 300)}`,
files: [new AttachmentBuilder(file, { name: "image.jpg" })],
allowedMentions: { parse: [] },
});
} catch (error) {
console.error(error);
await interaction.editReply("That one failed. Try again in a minute.");
}
});
client.login(process.env.DISCORD_TOKEN);
इसे node --env-file=.env bot.js से शुरू करें, अपने टेस्ट सर्वर में /imagine टाइप करें, और कुछ सेकंड में एक तस्वीर दिखनी चाहिए। चार बातों पर थोड़ा ध्यान देना चाहिए:
deferReply() 3 सेकंड की खिड़की के अंदर जवाब देता है, फिर असली काम को 15 मिनट मिलते हैं।
पोलिंग लूप हर 2 सेकंड में जाँच करता है और जब स्थिति starting और processing से बाहर निकल जाती है तो रुक जाता है।
allowedMentions: { parse: [] } रोकता है कि @everyone वाला प्रॉम्प्ट पूरे सर्वर को पिंग न करे।
फ़ाइल दोबारा अपलोड करना तस्वीर को एक सामान्य Discord अटैचमेंट के रूप में चैनल में रखता है।
PicassoIA पर Flux 2 Pro इस्तेमाल करें
कुछ भी हार्ड-कोड करने से पहले, किसी मॉडल पेज पर अपने शब्दों को परखें। Flux 2 Pro यह जाँचने की अच्छी जगह है कि कोई प्रॉम्प्ट स्टाइल तीखे, फ़ोटोग्राफ़िक नतीजे देता है या नहीं, और वही प्रॉम्प्ट फिर सीधे आपके बॉट में जा सकता है।
वही सटीक प्रॉम्प्ट लिखें जो कोई सदस्य /imagine को भेजेगा।
वह आस्पेक्ट रेशियो चुनें जो आप देना चाहते हैं: स्क्वेयर, वाइड या टॉल।
जनरेट करें, नतीजा देखें, और एक बार में शब्दों में से कोई एक बात बदलें।
तब तक दोहराएँ जब तक लगातार तीन कोशिशें सही न लगें, फिर वह शब्दावली अपने /help मैसेज के लिए उदाहरण के रूप में सहेजें।
बॉट के लिए कुछ पैरामीटर टिप्स:
ऊपर के सिर्फ़ तीन शेप ही दें। कम विकल्प मतलब कम भ्रमित करने वाले नतीजे।
हर कमांड के लिए एक इमेज माँगें। चैट के जवाब तेज़ रहते हैं और फ़ाइल छोटी रहती है, क्योंकि स्टैंडर्ड सर्वर पर Discord अटैचमेंट लगभग 10 MB तक सीमित करता है।
चैट के लिए JPG आउटपुट इस्तेमाल करें। यह PNG से तेज़ अपलोड होता है।
एक वैकल्पिक seed नंबर जोड़ें ताकि दोस्त एक-दूसरे के नतीजे दोबारा बना सकें।
💡 प्लान नोट: API पेज के अनुसार प्रिडिक्शन अभी के लिए क्रेडिट-मुक्त बताए गए हैं और Infinite प्लान माँगा गया है। इस पर बनाने से पहले मौजूदा शर्तों के लिए PicassoIA API पेज देखें।
बॉट में इमेज चलने लगें तो वही पैटर्न दूसरे कमांड भी चला सकता है। एक /edit कमांड PicassoIA Image Editor Pro को कॉल कर सकता है, और एक /animate कमांड Seedance 2.0 जैसा वीडियो मॉडल इस्तेमाल कर सकता है। वीडियो में ज़्यादा समय लगता है, इसलिए वहाँ डिफ़र्ड रिप्लाई और भी ज़रूरी हो जाता है।
बॉट को तेज़ और सुरक्षित रखें
जो बॉट सिर्फ़ आपके लिए काम करता है, वह भी तब गिर सकता है जब बीस सदस्य एक साथ उसे इस्तेमाल करें।
कूलडाउन और कतार की सीमाएँ
PicassoIA API हर अकाउंट के लिए 5 कतारबद्ध या चल रहे प्रिडिक्शन की अनुमति देता है, जो आपके सारे टोकन में साझा हैं। बॉट में यह संख्या ट्रैक करें और हर उपयोगकर्ता को एक छोटा कूलडाउन दें:
const COOLDOWN_MS = 20_000;
const MAX_IN_FLIGHT = 5;
const lastUse = new Map();
let inFlight = 0;
function checkLimits(userId) {
const wait = (lastUse.get(userId) ?? 0) + COOLDOWN_MS - Date.now();
if (wait > 0) return `Slow down, try again in ${Math.ceil(wait / 1000)}s.`;
if (inFlight >= MAX_IN_FLIGHT) return "The queue is full. Try again in a minute.";
return null;
}
हैंडलर में, checkLimits को deferReply() से पहले कॉल करें। अगर वह टेक्स्ट लौटाता है, तो उसे निजी जवाब के रूप में भेजें (अपने discord.js इंपोर्ट में MessageFlags जोड़ें और flags: MessageFlags.Ephemeral इस्तेमाल करें)। नहीं तो lastUse सेट करें, inFlight में एक जोड़ें, और काम खत्म होने के बाद finally ब्लॉक में एक घटाएँ।
आपके सर्वर के लिए कंटेंट नियम
इमेज बॉट वही पोस्ट करता है जो मॉडल लोगों के टाइप किए किसी भी इनपुट से बनाता है, इसलिए लॉन्च से पहले नियम तय कर लें:
बॉट की जगह सीमित करें। सर्वर की कमांड सेटिंग में /imagine को एक चैनल या एक रोल तक सीमित करें।
एज-रिस्ट्रिक्टेड चैनलों का सम्मान करें। वयस्क कंटेंट सिर्फ़ उन्हीं चैनलों में रहना चाहिए जिन्हें Discord एज-रिस्ट्रिक्टेड मार्क करता है, और मॉडल प्रोवाइडर के अपने नियम तब भी लागू रहते हैं।
प्रॉम्प्ट निजी तौर पर लॉग करें। हर प्रॉम्प्ट और उपयोगकर्ता ID को सिर्फ़ मॉडरेटर वाले चैनल में पोस्ट करें।
स्पष्ट दुरुपयोग फ़िल्टर करें। मॉडल तक पहुँचने से पहले उन प्रॉम्प्ट को रोकें जो एक छोटी ब्लॉकलिस्ट से मेल खाते हैं।
मास पिंग ब्लॉक करें। उपयोगकर्ता के टेक्स्ट के लिए allowedMentions बंद रखें।
बॉट को कहाँ होस्ट करें
चूँकि मॉडल कहीं और चलता है, बॉट को खुद बहुत कम CPU या मेमोरी चाहिए। 1 GB का सर्वर पर्याप्त है।
मिनी PC या क्लाउड सर्वर
विकल्प
लागत
अपटाइम
किन बातों का ध्यान रखें
आपका अपना लैपटॉप
मुफ़्त
सिर्फ़ तब तक जब तक वह जागा है
ढक्कन बंद करते ही बॉट ऑफ़लाइन हो जाता है
घर पर मिनी PC
थोड़ा बिजली का बिल
आपके इंटरनेट जितना अच्छा
होम राउटर का रीस्टार्ट
छोटा क्लाउड सर्वर
कुछ डॉलर प्रति माह
बहुत ज़्यादा
अपडेट आपको संभालने होंगे
मुफ़्त होस्टिंग टियर
मुफ़्त
अक्सर निष्क्रिय समय के बाद सो जाता है
बॉट सदस्य सूची से गायब हो जाता है
जो भी चुनें, बॉट को pm2 या systemd जैसे प्रोसेस मैनेजर के तहत चलाएँ ताकि क्रैश होने पर वह अपने-आप रीस्टार्ट हो, और .env फ़ाइल को वर्ज़न कंट्रोल से बाहर रखें।
चैट में काम करने वाले प्रॉम्प्ट
सदस्य छोटे और अस्पष्ट प्रॉम्प्ट टाइप करेंगे। आपका काम है छोटे प्रॉम्प्ट को भी काम का बनाना, और लोगों को दिखाना कि बेहतर प्रॉम्प्ट कैसा दिखता है।
प्रॉम्प्ट को फ़ोटो ब्रीफ़ की तरह लिखें
एक भरोसेमंद पैटर्न है सब्जेक्ट, सेटिंग, रोशनी, लेंस। चैनल में एक उदाहरण पिन करें:
कमज़ोर प्रॉम्प्ट
बेहतर प्रॉम्प्ट
एक कुत्ता
सूर्योदय के समय एक भीगे समुद्र तट पर एक गोल्डन रिट्रीवर, लो एंगल, 35mm फ़ोटो, सॉफ़्ट बैकलाइट
पुराना शहर
भोर के समय कोहरे में डूबा एक बंदरगाह वाला कस्बा, मछली पकड़ने की नावें, भीगे कोबलस्टोन, 35mm फ़ोटो
कॉफ़ी
एक घिसी हुई ओक की मेज़ पर कॉफ़ी का सिरेमिक कप, बाईं ओर से खिड़की की रोशनी, 85mm मैक्रो
भाषा मॉडल से प्रॉम्प्ट का विस्तार करवाएँ
छोटे प्रॉम्प्ट के लिए एक रीराइट स्टेप जोड़ें: सदस्य के टेक्स्ट को किसी चैट मॉडल को यह निर्देश देकर भेजें, "इसे सब्जेक्ट, सेटिंग, रोशनी और लेंस के साथ एक वाक्य के फ़ोटो ब्रीफ़ में लिखें", फिर नतीजा इमेज मॉडल को दें। पहले यह निर्देश हाथ से परखें। PicassoIA पर Gemini 3.5 Flash या Claude Sonnet 5 में चिपकाएँ और बॉट में जोड़ने से पहले आउटपुट पढ़ें। रीराइट किया गया प्रॉम्प्ट जवाब में दिखाएँ, ताकि सदस्य देख सकें कि नतीजा कैसे बना।
आज ही अपनी पहली इमेज बनाएँ
अब आपके पास पूरा नक्शा है: जल्दी मज़े के लिए मुफ़्त कम्युनिटी बॉट, परखने के लिए ट्रायल बॉट, और नियंत्रण चाहिए तो एक छोटा सेल्फ़-होस्टेड बॉट। यह जानने का सबसे तेज़ तरीका कि आपके सर्वर को कौन से प्रॉम्प्ट पसंद आएँगे, यह है कि बॉट बनने से पहले ही उन्हें आज़मा लिया जाए।
PicassoIA पर Flux 2 Pro या Seedream 4.5 खोलें, तीन ऐसे प्रॉम्प्ट लिखें जो आपकी कम्युनिटी सचमुच भेजेगी, और सबसे अच्छे नतीजे अपने /help मैसेज के लिए उदाहरण के रूप में सहेजें। फिर ऊपर का कोड उठाएँ, /imagine कमांड जोड़ें, और दोस्तों को बुलाएँ। जब आपको और विकल्प चाहिए हों, तो picassoia.com/en/all-models पर हर इमेज, वीडियो और भाषा मॉडल देखें और जो आपके सर्वर के लिए सबसे सटीक हो, उसे लगा दें।