خطوات إنشاء ونشر بوت Discord

في هذه المقالة، ستقوم ببناء روبوت Discord ونشره باستخدام Node.js، ومكتبة discord.js الرسمية، وحاويات Back4app.

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

إعداد بيئة التطوير الخاصة بك

ستعرض هذه المقالة روبوت Discord الذي يمنح المستخدمين أسئلة تافهة للإجابة عليها بناءً على مستوى الصعوبة المفضل لديهم ونوع السؤال على خادم Discord.

لمتابعة هذا البرنامج التعليمي، يجب أن يكون لديك ما يلي:

قم بإعداد دليل المشروع الخاص بك عن طريق تشغيل الأمر أدناه:

mkdir discord-bot && cd discord-bot && npm init -y

ينشئ الأمر أعلاه دليل Discord bot ويهيئ npm فيه.

بعد ذلك، انتقل إلى ملف package.json الخاص بك وأضف نص البدء أدناه:

"start": "node server.js"

بعد ذلك، قم بتثبيت التبعيات المطلوبة لمشروعك عن طريق تشغيل الأمر أدناه:

npm install discord.js axios dotenv 

تتضمن التبعيات التي قمت بتثبيتها أعلاه ما يلي:

  • discord.js: ستسمح لك هذه المكتبة بالتفاعل مع واجهة برمجة تطبيقات Discord من تطبيق Node.js الخاص بك.
  • dotenv: ستساعدك هذه الحزمة على إدارة البيانات الحساسة مثل الرمز المميز للروبوت الخاص بك.
  • أكسيوس: ستسمح لك هذه الحزمة بطلب واجهة برمجة تطبيقات Trivia.

الآن، لقد قمت بإعداد بيئة التطوير الخاصة بك وتثبيت التبعيات المطلوبة. بعد ذلك، ستنشئ حساب روبوت Discord.

إنشاء حساب بوت Discord بوت

حساب روبوت Discord هو حساب Discord تم إنشاؤه لتشغيل روبوت. على عكس حسابات المستخدمين العاديين التي يتحكم فيها المستخدمون البشريون، تتحكم البرامج في حسابات الروبوتات.

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

يجب عليك أولاً إنشاء تطبيق Discord لإنشاء حساب روبوت على Discord. لإنشاء تطبيق، انتقل إلى بوابة مطوري Discord وانقر على زر “إنشاء تطبيق”، كما هو موضح في الصورة أدناه.

إنشاء تطبيق روبوت ديسكورد ديسكورد

سيطالبك النقر على الزر بتسجيل الدخول إلى حسابك على Discord. بعد تسجيل الدخول، أطلق اسمًا على تطبيقك وانقر على زر “إنشاء”، كما هو موضح في الصورة أدناه.

اسم تطبيق خلاف الاسم

بعد ذلك، قم بإيقاف تشغيل مفتاح الروبوت العام للتأكد من أنك أنت فقط من يمكنه إضافة روبوتك إلى الخوادم.

بعد ذلك، قم بتهيئة أذونات الروبوت عن طريق تبديل جميع “نوايا البوابة ذات الامتيازات” لضمان وصوله إلى التحديثات في الوقت الفعلي على نشاط الخادم مثل وجود الأعضاء.

تكوين نوايا البوابة

بعد ذلك، انتقل إلى علامة التبويب “OAuth2” على الشريط الجانبي الأيسر. ضمن قسم “SCOPES”، حدد خانتي اختيار الروبوت والتطبيق.commands، كما هو موضح في الصورة أدناه.

نطاقات الروبوت

تحديد نطاق الروبوت يسمح لـ Discord بالتعرف على تطبيقك كروبوت بينما يتيح لك نطاق الأوامر إنشاء أوامر مائلة يستمع إليها روبوتك .

سيتم فتح قسم “أذونات الروبوت” عند تحديد خانة اختيار الروبوت. في قسم “أذونات البوت”، حدد خانة اختيار المسؤول، كما هو موضح في الصورة أدناه.

أذونات الروبوت

يؤدي تحديد خانة الاختيار هذه إلى منح الروبوت جميع الأذونات الممكنة داخل الخادم. تتضمن هذه الأذونات القدرة على إدارة الرسائل والقنوات.

أسفل قسم “أذونات الروبوتات”، سينشئ لك Discord عنوان URL لإضافة هذا الروبوت إلى خادم. قم بلصق عنوان URL في متصفح الويب الخاص بك واختر الخادم الذي تريد إضافة البوت الخاص بك.

عنوان URL الذي تم إنشاؤه بواسطة روبوت الخلاف

بعد ذلك، احصل على الرمز المميز للبوت في علامة التبويب “بوت” بالنقر على زر“إعادة تعيين الرمز المميز“، كما هو موضح في الصورة أدناه.

سيؤدي النقر على الزر للمرة الأولى إلى إعادة تعيين الرمز المميز الافتراضي للبوت الخاص بك وتزويدك برمز مميز جديد. انسخ الرمز المميز وخزنه بأمان. إذا فقدت الرمز المميز، فعليك إعادة تعيينه مرة أخرى، لأنه يظهر مرة واحدة فقط.

قم بإنشاء ملف .env لإضافة متغيرات البيئة الخاصة بك، مثل رمز الروبوت الخاص بك، إلى جانب بيانات أخرى، مثل معرف النقابة التي أضفت إليها الروبوت ومعرف عميل الروبوت الخاص بك:

TOKEN = "<BOT TOKEN>"
GUILD_ID = "<GUILD ID>"
CLIENT_ID = "<BOT'S CLIENT ID>"

لقد قمت الآن بإعداد حساب روبوت Discord الخاص بك. بعد ذلك، ستقوم ببناء روبوت Discord الخاص بك.

بناء مشروع روبوت Discord الخاص بك باستخدام Node.js

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

قم ببناء دليل مشروعك بشكل مشابه للدليل أدناه لمتابعة هذا البرنامج التعليمي.

quiz-bot/
│
├── src/
│   ├── register-commands.js   # Script to register slash commands with Discord
│   └── quiz-bot.js                # Script for message handling and fetching questions
│
├── server.js                  # Entry point for your bot and script for running a server
├── node_modules/              # Node.js modules
│
├── .env                       
├── .gitignore                   
├── package.json                         
└── package-lock.json

تسجيل أوامر تسجيل الروبوتات

تتطلب الروبوتات من المستخدمين إدخال أمر. باستخدام روبوتات Discord، يمكنك تحديد الأوامر التي تريد أن يستمع إليها روبوتك باستخدام البادئة المائلة (/).

لتسجيل أمر / اختبار الروبوت الخاص بك على خادم Discord الخاص بك، أولاً، أضف الواردات التالية من discord.js إلى ملف register-commands.js الخاص بك:

// register-commands.js
const { REST, Routes, ApplicationCommandOptionType } = require('discord.js');

تتضمن الفئات التي قمت باستيرادها أعلاه ما يلي:

  • REST: تسمح لك هذه الفئة بإجراء مكالمات REST API إلى واجهة برمجة تطبيقات Discord.
  • المسارات: توفر هذه الفئة الدوال المساعدة التي تُنشئ نقاط نهاية واجهة برمجة تطبيقات Discord.
  • ApplicationCommandOptionType: تسمح لك هذه الفئة بتعريف أنواع البيانات للخيارات التي سيقبلها الأمر.

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

تسمح هذه الخيارات للمستخدمين بتخصيص أمر الروبوت. في هذه الحالة، ستسمح مصفوفة الخيارات للمستخدمين بتحديد صعوبة ونوع السؤال الذي يجب أن يطرحه روبوت الاختبار.

أضف الكتلة البرمجية أدناه إلى ملف register-commands.js الخاص بك لإنشاء مصفوفة الأوامر الخاصة بك:

// register-commands.js
const commands = [
  {
    name: 'quiz',
    description:
      'Select difficulty and question type to tailor the quiz experience.',
    options: [
      {
        type: ApplicationCommandOptionType.String,
        name: 'difficulty',
        description: "Options include 'easy', 'medium', or 'hard'.",
        required: true,
      },
      {
        type: ApplicationCommandOptionType.String,
        name: 'type',
        description:
          " Choose 'multiple' for multiple choice or 'boolean' for true/false",
        required: true,
      },
    ],
  },
];

تحدد كتلة الشيفرة أعلاه أمر الاختبار في مصفوفة الأوامر. يحتوي كائن الاختبار على خيارين يحتاج المستخدم إلى إدخالهما مع الأمر /الاختبار، مثل مستوى الصعوبة ونوع السؤال للسؤال الذي سيطرحه الروبوت.

بعد ذلك، تحتاج إلى تسجيل الأمر / الاختبار الخاص بك لجعله متاحًا من خلال الروبوت الخاص بك. لتسجيل الأمر، عليك أولاً إنشاء مثيل لفئة REST باستخدام رمز Discord bot الخاص بك وإصدار REST المفضل لديك.

لتسجيل الأمر/الاختبار الخاص بك وإتاحة الوصول إليه من خلال الروبوت الخاص بك؛ ابدأ بإنشاء مثيل لفئة REST باستخدام رمز روبوت Discord الخاص بك وتحديد إصدار REST المفضل لديك.

هكذا

// register-commands.js
const rest = new REST({ version: '10' }).setToken(process.env.TOKEN);

تقوم شركة Discord بتحديث واجهة برمجة التطبيقات الخاصة بها بانتظام، مما يؤدي إلى تغييرات في نقاط النهاية وبنية الاستجابة والسلوك.

يمكّنك تحديد إصدار REST محدد لمشروع Discord الخاص بك من إدارة الميزات المتاحة لمشروعك بفعالية. تستخدم كتلة التعليمات البرمجية أعلاه الإصدار 10 من واجهة برمجة تطبيقات Discord.

بعد ذلك، تحتاج إلى تعريف دالة غير متزامنة لتسجيل أوامر الروبوت مع خادم النقابة باستخدام أسلوب applicationGuildCommands من فئة المسارات.

هكذا

// register-commands.js
(async () => {
  try {
    console.log('Started refreshing SLASH (/) commands.');
    await rest.put(
      Routes.applicationGuildCommands(
        process.env.CLIENT_ID,
        process.env.GUILD_ID
      ),
      { body: commands }
    );
    console.log('Successfully reloaded SLASH (/) commands.');
  } catch (error) {
    console.error(error);
  }
})();

تقوم كتلة التعليمات البرمجية أعلاه بتنفيذ طلب PUT إلى نقطة نهاية واجهة برمجة تطبيقات Discord مع مصفوفة الأوامر كنص الطلب.

يقوم ببناء نقطة نهاية واجهة برمجة التطبيقات باستخدام أسلوب applicationGuildCommands، مع أخذ معرف عميل الروبوت ومعرف النقابة المستهدفة.

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

التعامل مع تفاعل المستخدم مع Discord bot

للتعامل مع تدفق التفاعل بين الروبوت الخاص بك وعضو النقابة، أولاً، أضف الواردات التالية إلى ملف quiz-bot.js الخاص بك:

// quiz-bot.js
const { Client, IntentsBitField } = require('discord.js');
const axios = require('axios');

تحتاج إلى استخدام صنف العميل لإنشاء مثيل روبوت Discord جديد، بينما ستستخدم صنف IntentsBitField لتحديد النوايا (الأحداث) التي سيتلقّاها روبوتك من واجهة برمجة تطبيقات Discord.

بعد ذلك، أضف كتلة التعليمات البرمجية أدناه في ملف quiz-bot.js الخاص بك لإنشاء مثيل عميل جديد لروبوتك وتحديد مقاصد معينة لتطبيق الروبوت الخاص بك:

// quiz-bot.js
const client = new Client({
  intents: [
    IntentsBitField.Flags.Guilds,
    IntentsBitField.Flags.GuildMembers,
    IntentsBitField.Flags.GuildMessages,
    IntentsBitField.Flags.MessageContent,
  ],
});

تحدد مجموعة التعليمات البرمجية أعلاه المقاصد المحددة التي يحتاجها الروبوت للعمل، والتي تشمل

  • IntentsBitField.Flags.Guilds: يسمح هذا القصد للروبوت بتلقي معلومات حول النقابات (الخوادم) التي هو عضو فيها، بما في ذلك أسمائها وأيقوناتها وأدوارها.
  • IntentsBitField.Flags.GuildMembers: يمكّن هذا القصد الروبوت من تلقي معلومات حول أعضاء النقابة، مثل أسماء المستخدمين والحالات والأدوار الخاصة بهم.
  • IntentsBitField.Flags.GuildMessages: يمنح هذا القصد الروبوت إمكانية الوصول إلى الرسائل المرسلة في النقابات التي ينتمي إليها، مما يسمح له بالاستجابة للأوامر أو الأحداث التي يتم تشغيلها بواسطة الرسائل.
  • IntentsBitField.Flags.MessageContent: يسمح هذا القصد للبوت الخاص بك بالوصول إلى المحتوى الفعلي للرسائل المرسلة في النقابات. بدون هذا القصد، سيكون محتوى الرسالة فارغًا.

ستنشئ مستمع حدث لحدث جاهز. يتم تشغيل هذا الحدث عندما يتصل روبوت Discord الخاص بك بنجاح بخوادم Discord ويكون جاهزًا للعمل.

أضف كتلة التعليمات البرمجية أدناه إلى ملف quiz-bot.js الخاص بك لإنشاء مستمع الحدث الجاهز:

// quiz-bot.js
client.on('ready', () => {
  console.log(`✅ Bot is online and ready`);
});

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

عند انبعاثه، سيتلقى مستمع الحدث الخاص بك حدث interactionCreate مع كائن تفاعل.

يتضمن هذا الكائن جميع التفاصيل حول التفاعل، مثل نوع التفاعل والبيانات التي قدمها المستخدم.

أضف كتلة التعليمات البرمجية أدناه إلى ملف quiz-bot.js الخاص بك لإنشاء مستمع حدث التفاعلCreateCreate :

// quiz-bot.js
client.on('interactionCreate', async (interaction) => {
 if (!interaction.isChatInputCommand()) return;
 
 if (interaction.commandName === 'quiz') {
  // Rest of the code goes here...
 }
});

تُنشئ كتلة الشيفرة أعلاه مستمع حدث interactionCreateCreate.

يتحقق مُستمع الحدث مما إذا كان التفاعل بين المستخدم والبوت هو أمر إدخال دردشة (أمر شرطة مائلة) ويقوم بتصفية أنواع أخرى من التفاعلات.

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

إذا كان اسم الأمر هو اختبار، فقم بإجراء طلب GET باستخدام Axios إلى عنوان URL الخاص بواجهة برمجة تطبيقات Trivia للحصول على السؤال وإجاباته (الصحيحة وغير الصحيحة).

قم بخلط الإجابات لتوزيع الخيارات بشكل عشوائي، ثم عرضها على المستخدم.

هكذا

// quiz-bot.js

await interaction.deferReply();

const difficulty = interaction.options.getString("difficulty");
const type = interaction.options.getString("type");

try {
  const url = `https://opentdb.com/api.php?amount=1&difficulty=${difficulty}&type=${type}`;
  const response = await axios.get(url);
  const data = response.data.results[0];
  const question = data.question;
  const correctAnswer = data.correct_answer;
  const options = [...data.incorrect_answers, correctAnswer];

  // Shuffle the options
  for (let i = options.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [options[i], options[j]] = [options[j], options[i]];
  }

  await interaction.editReply({
    content: `Question: ${question}\\nOptions: ${options.join(", ")}`,
  });
} catch (error) {
  console.error(error);
  // Notify the user in case of an error after deferring
  await interaction.followUp("Failed to fetch the question. Please try again.");
}

تؤجل كتلة التعليمات البرمجية أعلاه أولاً رد الروبوت باستخدام طريقة تأجيل الرد للسماح للروبوت بفاصل زمني للتعامل مع طلب GET.

تسترجع كتلة التعليمات البرمجية بعد ذلك الصعوبة التي اختارها المستخدم ونوع السؤال من كائن التفاعل باستخدام interaction.options.getString().

بعد ذلك، يستخرج الروبوت السؤال والإجابة الصحيحة والإجابات غير الصحيحة من البيانات التي تم جلبها.

بعد تبديل الإجابات الصحيحة وغير الصحيحة لترتيب الاختيار عشوائياً، يقوم بتعديل الرد المؤجل الأولي بسؤال الاختبار والخيارات.

بعد ذلك، تحتاج إلى التعامل مع إجابة المستخدم على السؤال من خلال التحقق من الإجابة الصحيحة وإبلاغ المستخدم إذا كانت صحيحة أو خاطئة.

جمع ردود المستخدمين

لجمع إجابة المستخدم على السؤال، ستستخدم أسلوب createMessageCollector على قناة التفاعل(interaction.channel).

تسمح لك هذه الطريقة بتصفية الرسائل غير المرسلة من قبل المستخدم الذي بدأ الأمر /الاختبار، وتعيين حد زمني لرد المستخدم، وتحديد الحد الأقصى لعدد الرسائل المراد جمعها.

عندما يرسل المستخدم استجابة، يقوم أسلوب createMessageCollector بتشغيل حدث تجميع.

تحتاج إلى إضافة مستمع إلى هذا الحدث؛ سيتحقق المستمع من إجابة المستخدم مقابل الإجابة الصحيحة للسؤال ويرسل رسالة مناسبة.

من ناحية أخرى، إذا لم يرسل المستخدم ردًا مناسبًا خلال المهلة الزمنية المحددة، فسيقوم أسلوب createMessageCollector بتشغيل حدث إنهاء.

تحتاج إلى إضافة مستمع يستجيب للمستخدم لإعلامه بأن وقته قد انتهى لهذا الحدث.

هكذا

// quiz-bot.js
const filter = (m) => m.author.id === interaction.user.id;

const collector = interaction.channel.createMessageCollector({
  filter,
  time: 15000,
  max: 1,
});

collector.on("collect", async (m) => {
  if (m.content.toLowerCase() === correctAnswer.toLowerCase()) {
    await m.reply("Correct answer! 🎉");
  } else {
    await m.reply(`Wrong answer! The correct answer was: ${correctAnswer}`);
  }
});

collector.on("end", (collected) => {
  if (collected.size === 0) {
    interaction.followUp("Time is up! No answer was provided.");
  }
});

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

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

سيقوم مستمع الحدث الثاني، النهاية، بتشغيل رد استدعاء لإعلام المستخدم بأنه لم يقدم إجابة خلال المهلة الزمنية المحددة.

بعد ذلك، أنشئ اتصالاً بين الروبوت الخاص بك و Discord عن طريق إضافة سطر التعليمات البرمجية في نهاية ملف quiz-bot.js الخاص بك:

// quiz-bot.js
client.login(process.env.TOKEN);

إنشاء ملف الدخول

ستنشئ ملف دخول، وهو ملف واحد سيقوم بتهيئة تطبيق الروبوت الخاص بك بالكامل. سيخدم وظيفتين:

  • استيراد منطق البوت: سيقوم ملف الإدخال بتشغيل منطق البوت عن طريق طلب ملفات جافا سكريبت، التي تتعامل مع تسجيل أمر البوت الخاص بك مع خادم Discord والاستجابة لرسائل المستخدم.
  • بدء تشغيل الخادم: سيقوم ملف الإدخال بإعداد خادم يسمح بتشغيل الروبوت الخاص بك على حاوية Back4app. تتطلب حاويات Back4app منافذ مكشوفة لنجاح نشر تطبيقك.

أضف كتلة التعليمات البرمجية أدناه إلى ملف server.js لإنشاء خادم :

// server.js
require('dotenv').config();
const http = require('http');
require('./src/register-commands.js');
require('./src/quiz-bot.js');

http
  .createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Bot is running!');
  })
  .listen(3000, () => {
    console.log('Server is ready.');
  });

تقوم كتلة الشيفرة أعلاه بإعداد روبوت Discord للتشغيل عن طريق إنشاء خادم HTTP بسيط. يعمل هذا الخادم كنقطة دخول، مما يسمح للبوت بالعمل داخل بيئة الحاوية.

يستورد مكوِّن الشيفرة أعلاه المنطق الأساسي للبوت الخاص بك ويحدد منفذ Back4app للسماح للبوت الخاص بك بالنشر على حاوية Back4app.

بعد إنشاء ملف الإدخال، يمكنك اختبار روبوت Discord الخاص بك محليًا قبل نشره في حاوية Back4app.

اختبار روبوت Discord الخاص بك

ابدأ تشغيل روبوت Discord الخاص بك عن طريق تشغيل كتلة التعليمات البرمجية أدناه في طرفية تطبيقك:

node server.js

سيسجل الأمر رسائل توضح أنك سجلت روبوتك بنجاح وأن روبوتك جاهز ومتصل بالإنترنت.

ابدأ بوت محلياً

انتقل إلى الخادم الذي أضفت إليه الروبوت الخاص بك. يجب أن تلاحظ أنه متصل بالإنترنت الآن.

اختبار تطبيق الاختبار

للتفاعل مع الروبوت الخاص بك، أرسل الأمر /quiz. يجب أن يستجيب الروبوت بخيارات توضح بالتفصيل كيف تريد أن يبدو سؤال الاختبار الخاص بك.

حدد صعوبة السؤال ونوعه

اختر الخيارات التي تريدها (مثل تحديد فئة الاختبار أو مستوى الصعوبة) واضغط على Enter. سيرد الروبوت بسؤال ويحدد مهلة 15 ثانية لإجابتك.

إذا قمت بإرسال إجابتك خلال الوقت المحدد، سيقارن الروبوت إجابتك بالإجابة الصحيحة ويرد عليك لإعلامك إذا كانت إجابتك صحيحة أو خاطئة.

استجابة الروبوت على الخلاف

لقد قررت أن الروبوت الخاص بك يمكنه التعامل مع جميع الميزات التي صممته للتعامل معها؛ بعد ذلك، انشر روبوت Discord الخاص بك في حاوية Back4app.

نشر روبوت Discord على حاويات Back4app مع وكيل الذكاء الاصطناعي

في هذا القسم، ستقوم بنشر روبوت Discord الخاص بك على حاويات Back4app مع وكيل الذكاء الاصطناعي Back4app.

لنشر تطبيق على حاويات Back4app، تحتاج إلى ما يلي:

  • ملف Dockerfile في مشروعك
  • مستودع GitHub: يجب تحميل مشروعك إلى مستودع GitHub.
  • تطبيق Back4app GitHub: قم بتثبيت ومنح الأذونات اللازمة لتطبيق Back4app GitHub لمستودعك

أولًا، أنشئ ملف Dockerfile في الدليل الجذر لمشروعك وأضف إليه الكتلة البرمجية أدناه:

# Dockerfile
FROM node:18-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

بعد ذلك، تحتاج إلى تحميل شفرتك البرمجية إلى مستودع GitHub لجعلها متاحة للنشر.

قبل اتباع الخطوة التالية، تأكد من تثبيت تطبيق Back4App Containers GitHub على حساب GitHub الخاص بك، وتأكد من أنه يحتوي على الأذونات اللازمة المطلوبة للوصول إلى التطبيق الذي تريد نشره.

انتقل إلى الصفحة الرئيسية لتطبيق Back4app وانقر على زر “تطبيق جديد” في الزاوية العلوية اليمنى من الشاشة.

سينقلك هذا إلى شاشة التهيئة، حيث ستحتاج إلى اختيار نوع التطبيق الذي تريد إنشاءه.

حدد خيار وكيل Back4app، كما هو موضح في الصورة أدناه.

عند تحديد خيار وكيل Back4app، ستتم إعادة توجيهك إلى صفحة وكيل Back4app AI.

أعط وكيل الذكاء الاصطناعي المطالبة أدناه لنشر تطبيقك:

Deploy my "YOUR_REPOSITORY_URL" repository on GitHub to a Back4App Container.
Here are the required environmental variables:
TOKEN = "YOUR_DISCORD_BOT_TOKEN"
GUILD_ID = "YOUR_GUILD_ID"
CLIENT_ID = "YOUR_CLIENT_ID"

استبدل العناصر النائبة في المطالبة أعلاه بقيمها الفعلية.

يجب أن تحصل على رد مشابه للرد أدناه:

استجابة وكيل الذكاء الاصطناعي

يُظهر الرد أعلاه أن عملية النشر جارية وأن طلبك سيكون متصلاً بالإنترنت ومتاحاً في عنوان URL المقدم.

يمكنك مراقبة عملية النشر على لوحة معلومات حاويات Back4app، أو يمكنك إعطاء وكيل الذكاء الاصطناعي المطالبة أدناه بعد فترة لتأكيد حالة النشر الحالية.

What is the current deployment status of my web app?

يجب أن تحصل على رد مشابه للرد أدناه:

استجابة وكيل الذكاء الاصطناعي

بدلاً من ذلك، يمكنك اختيار نشر تطبيقك على Back4App يدويًا.

الخاتمة

في هذه المقالة، تعلمت كيفية إنشاء روبوت Discord باستخدام Node.js. استكشفتَ كيفية إنشاء حساب روبوت Discord، وتسجيل أوامر الروبوت، والتعامل مع استجابات المستخدمين.

بالإضافة إلى ذلك، اختبرت روبوت Discord الخاص بك ونشرته على حاوية Back4app بمساعدة وكيل الذكاء الاصطناعي.

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

الكود الكامل المستخدم في هذا البرنامج التعليمي متاح على مستودع GitHub هذا.


Leave a reply

Your email address will not be published.