بوت Discord لتوليد صور بالذكاء الاصطناعي: بوتات مجانية وطريقة بناء بوتك الخاص

تريد بوت Discord يحوّل النصوص التي تكتبها إلى صور بالذكاء الاصطناعي دون رسوم شهرية؟ يرتّب هذا المقال الخيارات المجانية حسب طريقة عملها الفعلية، ويوضح ما تكلّفك به كل واحدة من وقت انتظار وحدود، ثم يبني معك بوت صور خاصًا بأمر الشرطة المائلة مع كود يعمل.

بوت Discord لتوليد صور بالذكاء الاصطناعي: بوتات مجانية وطريقة بناء بوتك الخاص
Cristian Da Conceicao
مؤسس Picasso IA

اكتب /imagine a lighthouse at dawn في قناة محادثة، وانتظر نحو عشر ثوانٍ، فتظهر الصورة النهائية في الخيط ليتفاعل معها الجميع. هذه هي الجاذبية الكاملة لمولّد صور بالذكاء الاصطناعي عبر بوت Discord: لا نافذة متصفح، ولا نموذج تسجيل، ولا تطبيق إضافي. لكن العيب أن البوتات المشهورة تفرض رسومًا شهرية، والبوتات المجانية تأتي مع طوابير، أو حدود يومية، أو إيقاف مفاجئ. يرتّب هذا المقال الخيارات المجانية حسب طريقة عملها الفعلية، ويوضح ما تكلّفك به كل واحدة من وقت انتظار، ثم يبني معك بوتك الخاص في أقل من 100 سطر من JavaScript.

💡 الإجابة السريعة: أسهل طريق مجاني هو بوت من مجتمع يستعمل وحدات GPU تطوعية. والطريق الأكثر موثوقية هو بوت تستضيفه بنفسك، والكود أدناه قصير بما يكفي لإنهائه في جلسة واحدة.

ماذا تفعل بوتات الصور في Discord فعليًا

بوت الصور في Discord برنامج صغير له ثلاث مهام: الاستماع إلى أمر، وإرسال نصك إلى نموذج صور، ونشر النتيجة في القناة. البوت نفسه لا يقوم تقريبًا بأي عمل ثقيل. العمل الحقيقي يجري على وحدة GPU في مكان آخر، ولهذا يمكن أن يعمل البوت على حاسوب محمول، أو حاسوب مصغّر لا تستعمله، أو أرخص خادم سحابي.

رجل يرتدي هودي رمادي داكن يتابع نافذة دردشة نشر فيها البوت للتو صورة شروق شمس

كيف يعمل الأمر الشرطي

يتبع كل بوت حديث الحلقة نفسها، ورؤيتها مرة واحدة تجعل بقية المقال أسهل في المتابعة:

  1. يكتب أحد الأعضاء /imagine ويملأ الأمر النصي.
  2. يرسل Discord تفاعلًا إلى بوتك، ويتوقع ردًا خلال 3 ثوانٍ.
  3. يرد البوت بحالة "جارٍ التفكير"، وتسمى الرد المؤجَّل، وهي تمنحه حتى 15 دقيقة.
  4. يستدعي البوت نموذج الصور وينتظر انتهاء المهمة.
  5. يعدّل البوت الرد ويرفق الصورة النهائية.

الخطوة 3 هي المكان الذي تفشل فيه معظم المحاولات الأولى. مهام الصور تستغرق أكثر من ثلاث ثوانٍ، لذلك إذا تجاوز البوت الرد المؤجَّل ظهرت رسالة "لم يستجب التطبيق"، وتصل الصورة إلى لا أحد.

منظر من الأعلى لرسم تخطيطي في دفتر وشاشة دردشة على الهاتف وفنجان قهوة على مكتب من خشب البلوط

لماذا يناسب Discord فن الذكاء الاصطناعي

تبيّن أن الدردشة بيت مناسب بشكل مدهش لتوليد الصور:

  • تغذية مشتركة. يرى الجميع كل أمر نصي، فيقلّد الناس ما ينجح ويطوّرونه.
  • ردود فعل فورية. تبيّن التفاعلات والردود النتائج التي لاقت استحسانًا.
  • صلاحيات مدمجة. تحدد الأدوار من يحق له التوليد، وتبقي القنوات التجارب بعيدة عن النقاش الجاد.
  • الهاتف افتراضيًا. يصنع الأعضاء الصور من هواتفهم دون تثبيت أي شيء جديد.

منظر من زاوية منخفضة لمكتب في غرفة نوم عليه شاشتان تعرضان محادثة صور مولّدة وشيفرة برمجية

💡 نصيحة: امنح البوت قناته الخاصة. فكثرة الصور في دردشة عامة هي أسرع طريقة لإزعاج المجتمع.

مقارنة بوتات Discord المجانية لتوليد الصور

تعني كلمة "مجاني" أشياء مختلفة حسب من يدفع ثمن وحدة GPU. يجمع الجدول الأنواع الرئيسية وفق هذا السؤال الواحد.

نوع البوتمن يدفع ثمن GPUوقت الانتظار المعتادالمحاذير الرئيسية
شبكة GPU مجتمعيةمتطوعون يتبرعون بالسعة الفائضةثوانٍ إلى عدة دقائقأولوية الطابور، وخيارات نماذج محدودة
بوتات التجربة المجانيةمالك البوت، حتى تنفد الأرصدةسريعتنتهي الأرصدة، ثم يظهر جدار الدفع
مفتوحة المصدر تستضيفها بنفسكأنتيعتمد على GPU لديك أو على الواجهة البرمجيةأنت من يصونها
بوتات مدفوعة رائدةاشتراككسريعرسوم شهرية

الأسعار والحدود تتغير كثيرًا، لذا راجع صفحة البوت نفسه قبل دعوته إلى خادمك.

أربعة أصدقاء يضحكون حول شاشة واحدة في غرفة معيشة مشرقة

بوتات GPU المجتمعية

Stable Horde، ويُسمّى اليوم أيضًا AI Horde، هو المثال الأشهر. يتشارك المتطوعون بطاقات الرسوميات، ويستطيع أي شخص طلب صور Stable Diffusion دون مقابل. تُتتبَّع الأولوية بنقاط تسمى kudos، تكسبها بإعارة وقت GPU، لذلك تنتظر الطلبات الصادرة عن مستخدمين لديهم نقاط أقل مدة أطول. البوتات المبنية على هذه الشبكة هي أقرب شيء إلى بوت فن ذكاء اصطناعي مجاني حقًا في Discord، مع عيب واحد: السرعة تعتمد على عدد المتطوعين المتصلين.

بوتات التجربة المجانية

تقدّم بوتات كثيرة عددًا قليلًا من التوليدات المجانية ثم تطلب الدفع. تعمل جيدًا لاختبار أسلوب ما، لكن تحقق من ثلاث علامات تحذير قبل إضافة أي منها إلى خادم:

  • لم يُحدَّث منذ شهور.
  • لا يوجد مالك واضح ولا قناة دعم.
  • طلب صلاحيات لا يحتاج البوت إليها، مثل Administrator.

البوت الذي ينشر صورًا فقط يحتاج إلى Send Messages وAttach Files. لا شيء أكثر من ذلك.

لماذا يكلّف Midjourney المال

بدأ Midjourney بوتًا على Discord وجعل هذه الصيغة شائعة. كل صورة تستهلك دقائق GPU حقيقية، ولا توجد لدى بوت دردشة مساحة إعلانية تغطي هذه التكلفة، فتقع على عاتق المستخدم. ولهذا تميل البوتات المجانية طويلة العمر إلى أن تكون صغيرة، أو تديرها المجتمعات، أو تدعمها شركة أخرى.

كيف تصنع بوتك الخاص

بناء بوتك الخاص يزيل الطابور وجدار الدفع. تختار النموذج والحدود والقواعد. تحتاج إلى Node.js بالإصدار 20.6 أو أحدث، وحساب Discord يستطيع إضافة بوتات إلى خادم، ورمز API من مزود صور. يستخدم الكود أدناه واجهة PicassoIA API لأن تدفقها بسيط: أنشئ تنبؤًا، واستعلم عن حالته، ثم حمّل الملف.

لقطة مقربة ليدي امرأة تكتب على حاسوب محمول مع محرر أكواد في مقهى

أنشئ تطبيق Discord

  1. افتح بوابة مطوري Discord وانقر على New Application.
  2. في تبويب Bot، أعد تعيين الرمز وانسخه مرة واحدة. تعامل معه كما تعامل كلمة المرور.
  3. في OAuth2، حدد النطاقات bot وapplications.commands، ثم حدد الصلاحيتين Send Messages وAttach Files.
  4. افتح الرابط الذي أُنشئ وأضف البوت إلى خادم تجريبي.
  5. فعّل وضع المطور في إعدادات Discord، ثم انسخ معرّف خادمك ومعرّف التطبيق.

احفظ القيم في ملف .env بجانب الكود:

DISCORD_TOKEN=your-bot-token
CLIENT_ID=your-application-id
GUILD_ID=your-test-server-id
PICASSOIA_TOKEN=your-picassoia-api-token

ثم شغّل npm init -y وnpm install discord.js، وأضف "type": "module" إلى package.json.

💡 نصيحة: أوامر الشرطة المائلة لا تحتاج إلى Intents مميزة، لذلك تتخطى موافقة 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.

استخدم Flux 2 Pro على PicassoIA

قبل أن تثبّت أي شيء في الكود، اختبر صياغتك على صفحة نموذج. Flux 2 Pro مكان جيد لتتحقق مما إذا كان أسلوب الأمر النصي يعطي نتائج حادة وشبيهة بالصور الفوتوغرافية، ويمكن بعدها أن ينتقل الأمر النصي نفسه مباشرة إلى بوتك.

امرأة ترتدي قميصًا من الدنيم تقارن صورًا مطبوعة على طاولة طويلة

اختر نموذجًا يناسب المهمة

النموذجمناسب لأمر البوت
Flux 2 Proالمشاهد الفوتوغرافية والبورتريهات
Seedream 4.5أعمال فنية نظيفة ومصقولة وتعديلات
GPT Image 2الأوامر النصية الطويلة والنصوص المقروءة داخل الصور
Nano Banana 2المسودات السريعة وتعديلات الصور
Imagen 4مشاهد يومية حادة وواقعية
PicassoIA Imageالنموذج الذي يستدعيه البوت أعلاه عبر الواجهة البرمجية

اختبر الأمر النصي خطوة بخطوة

  1. افتح صفحة Flux 2 Pro على PicassoIA.
  2. اكتب الأمر النصي الدقيق الذي سيرسله عضو إلى /imagine.
  3. اختر نسبة العرض إلى الارتفاع التي تنوي تقديمها: مربعة، أو عريضة، أو طويلة.
  4. ولّد الصورة، وانظر إلى النتيجة، وغيّر تفصيلًا واحدًا فقط في الصياغة كل مرة.
  5. كرر حتى تبدو ثلاث محاولات متتالية صحيحة، ثم احفظ تلك الصياغة كمثال في رسالة /help الخاصة بك.

بعض نصائح المعاملات للبوت نفسه:

  • قدّم الأشكال الثلاثة المذكورة أعلاه فقط. الخيارات الأقل تعني نتائج أقل إرباكًا.
  • اطلب صورة واحدة لكل أمر. تبقى ردود الدردشة سريعة ويبقى الملف صغيرًا، إذ يحدّ Discord المرفقات بنحو 10 ميغابايت على الخادم العادي.
  • استخدم مخرجات 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(). إذا أعادت نصًا، أرسله كرد خاص (أضف MessageFlags إلى استيراد discord.js واستخدم flags: MessageFlags.Ephemeral). وإلا فاضبط lastUse، وأضف واحدًا إلى inFlight، واطرح واحدًا في كتلة finally بعد انتهاء العمل.

مكتب عليه قائمة مراجعة مكتوبة بخط اليد وهاتف بدردشة وقفل نحاسي على دفتر

قواعد المحتوى لخادمك

بوت الصور ينشر كل ما يصنعه النموذج من أي شيء يكتبه الناس، لذا ضع القواعد قبل الإطلاق:

  • حدّد مكان عمله. قيّد /imagine بقناة واحدة أو بدور معين في إعدادات أوامر الخادم.
  • احترم القنوات المقيدة بالعمر. المحتوى الموجّه للبالغين لا يُنشر إلا في القنوات التي يحددها Discord على أنها مقيدة بالعمر، وتبقى قواعد مزود النموذج نفسه سارية.
  • سجّل الأوامر النصية بشكل خاص. انشر كل أمر نصي ومعرّف المستخدم في قناة مخصصة للمشرفين فقط.
  • صفِّ الإساءة الواضحة. ارفض الأوامر النصية التي تطابق قائمة سوداء قصيرة قبل أن تصل إلى النموذج.
  • امنع الإشارات الجماعية. أبقِ allowedMentions معطّلًا للنص الذي يكتبه المستخدمون.

أين تستضيف البوت

لأن النموذج يعمل في مكان آخر، يحتاج البوت نفسه إلى قدر ضئيل جدًا من المعالج والذاكرة. خادم بسعة 1 غيغابايت يكفي تمامًا.

حاسوب مصغّر أسود صغير على رف خشبي مع كابل إيثرنت موصول به

حاسوب مصغّر أو خادم سحابي

الخيارالتكلفةوقت التشغيلانتبه إلى
حاسوب محمول تملكه بالفعلمجانيفقط أثناء استيقاظهيتوقف البوت عند إغلاق الغطاء
حاسوب مصغّر في المنزلفاتورة كهرباء صغيرةبجودة اتصالك بالإنترنتإعادة تشغيل جهاز التوجيه المنزلي
خادم سحابي صغيربضعة دولارات شهريًامرتفع جدًاأنت تدير التحديثات
مستويات الاستضافة المجانيةمجانيغالبًا ما تنام بعد فترة خموليختفي البوت من قائمة الأعضاء

أيًّا كان اختيارك، شغّل البوت تحت مدير عمليات مثل pm2 أو systemd ليعيد تشغيله بعد أي تعطل، وأبقِ ملف .env خارج نظام التحكم بالإصدارات.

أوامر نصية تعمل في الدردشة

سيكتب الأعضاء أوامر قصيرة وغامضة. مهمتك أن تجعل الأوامر القصيرة تعمل، وأن تُري الناس كيف يبدو الأمر الأفضل.

اكتب الأوامر النصية كأنها موجز تصوير

النمط الموثوق هو الموضوع والمكان والإضاءة والعدسة. ثبّت مثالًا في القناة:

أمر نصي ضعيفأمر نصي أقوى
كلبغولدن ريتريفر على شاطئ مبلل عند الشروق، زاوية منخفضة، صورة بعدسة 35 ملم، إضاءة خلفية ناعمة
المدينة القديمةميناء تكسوه الضباب عند الفجر، قوارب صيد، أرصفة حجرية مبللة، صورة بعدسة 35 ملم
قهوةفنجان قهوة من الخزف على طاولة بلوط متآكلة، ضوء نافذة من اليسار، ماكرو بعدسة 85 ملم

دع نموذجًا لغويًا يوسّع الأوامر النصية

بالنسبة إلى الأوامر القصيرة، أضف خطوة إعادة صياغة: أرسل نص العضو إلى نموذج دردشة مع التعليمة "أعد كتابة هذا كموجز تصوير من جملة واحدة يتضمن الموضوع والمكان والإضاءة والعدسة"، ثم مرر النتيجة إلى نموذج الصور. اختبر التعليمة يدويًا أولًا. الصقها في Gemini 3.5 Flash أو Claude Sonnet 5 على PicassoIA واقرأ المخرجات قبل ربطها بالبوت. اعرض الأمر النصي المعاد صياغته في الرد حتى يرى الأعضاء كيف صُنعت النتيجة.

ولّد أول صورة لك اليوم

أصبحت لديك الخريطة الكاملة: بوتات مجتمعية مجانية للمتعة السريعة، وبوتات تجريبية للاختبار، وبوت صغير تستضيفه بنفسك حين تريد التحكم. أسرع طريقة لتعرف الأوامر النصية التي سيحبها خادمك هي تجربتها قبل أن يوجد البوت أصلًا.

رجل مبتسم في مقهى يحمل هاتفًا يعرض صورة جبل مولّدة

افتح Flux 2 Pro أو Seedream 4.5 على PicassoIA، واكتب ثلاثة أوامر نصية يرسلها مجتمعك فعلًا، واحفظ أفضل النتائج كأمثلة لرسالة /help الخاصة بك. ثم خذ الكود أعلاه، وأضف أمر /imagine، وادعُ أصدقاءك. وحين تريد خيارات أكثر، تصفّح كل نماذج الصور والفيديو والنماذج اللغوية على picassoia.com/en/all-models واستبدل بأي منها ما يناسب خادمك أكثر.

شارك هذا المقال

اختر لغتك

مقالات ذات صلة