جديد 📢 عرض الإطلاق لفترة محدودة: خصم حتى 70% على شهرك الأول في كل لعبة.عرض الباقات

كيف تستضيف بوت Discord بلغة Rust

استضافة بوتات DiscordUpdated Oct 29, 20265 min read

يُبنى بوت Rust على حاسوبك ويُرفع برنامجًا واحدًا جاهزًا لنظام Linux. لا يُترجم شيء على السيرفر، فتذهب ذاكرة باقتك كلها إلى البوت. لتشغيل بوت:

  1. ابنِه لنظام Linux x86-64 على حاسوبك.
  2. بدّل النوع: في صفحة البوت، قسم الكود، اضغط تغيير ما يعمل بجوار بيئة التشغيل واختر Rust Bot.
  3. ارفع البرنامج (اسمه bot افتراضيًا) في Files، أو اضبط رابط التنزيل (اختياري) في قسم الكود.
  4. الصق رمزك في صفحة البوت، قسم Discord، واضغط الاتصال.
  5. اضغط تشغيل وراقب Console.

1. ابنِ لنظام Linux

rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl

يظهر البرنامج في target/x86_64-unknown-linux-musl/release/ باسم الـ crate الخاص بك. يصنع هدف musl ملفًا واحدًا مكتفيًا بذاته لا يعتمد على مكتبات النظام في السيرفر. والبناء على Windows أو macOS يحتاج إلى linker لنظام Linux، وتتكفل بذلك أدوات مثل cross أو cargo-zigbuild. أما ملف .exe أو بناء macOS فلا يعمل على السيرفر.

2. بوت serenity بسيط

Cargo.toml (الاعتماديات)

[dependencies]
serenity = "0.12"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

src/main.rs

use serenity::async_trait;
use serenity::model::gateway::Ready;
use serenity::prelude::*;

struct Handler;

#[async_trait]
impl EventHandler for Handler {
    async fn ready(&self, _ctx: Context, ready: Ready) {
        println!("Logged in as {}", ready.user.name);
    }
}

#[tokio::main]
async fn main() {
    let token = std::env::var("DISCORD_TOKEN").expect("DISCORD_TOKEN is not set");
    let mut client = Client::builder(&token, GatewayIntents::GUILDS)
        .event_handler(Handler)
        .await
        .expect("could not create the client");

    if let Err(why) = client.start().await {
        println!("Client error: {why:?}");
    }
}

يأتي الرمز من DISCORD_TOKEN. وطباعة Logged in as تحوّل الشارة في نظرة عامة إلى متصل في Discord. وتعمل بوتات poise وtwilight بالطريقة نفسها: ابنِ، وارفع، وشغّل.

3. بدّل النوع إلى Rust Bot

في صفحة البوت، قسم الكود، اضغط تغيير ما يعمل بجوار بيئة التشغيل واختر Rust Bot. وعلى الحاسوب، تفتح تسمية النوع في أعلى الصفحة (مثل Node.js Bot) النافذة نفسها. راجع كيف تنقل بوتك إلى لغة أخرى.

4. ضع البرنامج على السيرفر

ارفعه: غيّر اسم برنامجك إلى bot (أو اضبط ملف البدء على اسمه)، ثم في Files اضغط رفع واخترْه. وارفع بجانبه أي ملفات يقرؤها. يجعله السيرفر قابلًا للتنفيذ عند البدء.

أو دع السيرفر ينزّله: في صفحة البوت، قسم الكود، بطاقة الإعدادات، اضبط رابط التنزيل (اختياري) على رابط https لبرنامجك الجاهز، مثل ملف إصدار على GitHub، واضغط حفظ. عند البدء، إذا كان ملف البرنامج غير موجود، ينزّله السيرفر (حتى 500 MB). وللتحديث، انشر بناءً جديدًا على الرابط نفسه، واحذف البرنامج في Files، ثم اضغط تشغيل. ومع ضبط رابط، يعمل تشغيل البوت في بطاقة الإعداد قبل وجود الملف: يجري التنزيل كجزء من التشغيل.

قسم الكود لبوت Go، وهو نفسه في بوت Rust: بطاقة «طريقة التشغيل» وبطاقة «الإعدادات» تعرض وسائط التشغيل ورابط التنزيل.

5. تحقق من الإعدادات وشغّل

  • ملف البدء (بطاقة طريقة التشغيل): اسم البرنامج ومجلده، bot افتراضيًا.
  • وسائط التشغيل (اختياري) (بطاقة الإعدادات): وسائط إضافية لبرنامجك. لا يُسمح بمحارف الـ shell مثل $ و; و& و>.

الصق رمزك في قسم Discord، واضغط الاتصال، ثم اضغط تشغيل. تعرض Console السطر [PlayNHost] Starting your bot ثم مخرجات برنامجك.

أسطر Console التي قد تراها

السطرما يجب فعله
[PlayNHost] Your bot is not set up yet: the program bot was not found.ارفع البرنامج، أو اضبط ملف البدء على اسمه ومجلده بالضبط.
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again.ابنِه من جديد لـ x86_64-unknown-linux-musl.
[PlayNHost] Downloading your program، ثم [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.الرابط خاطئ، أو خاص، أو ليس https. تحقق من رابط التنزيل (اختياري) في قسم الكود، تحت الإعدادات.
DISCORD_TOKEN is not set (من المثال)الصق الرمز في قسم Discord، ثم أعد التشغيل.

ليس لبوتات Rust مصدر Git ولا حقل الحزم: حزم crates الخاصة بك داخل البرنامج. المفاتيح وكلمات المرور تُوضع تحت البيئة، وتُقرأ بـ std::env::var: كيف تضبط متغيرات البيئة والأسرار.

بوتك مستضاف في مكان آخر بالفعل؟ انقله إلينا

أحدث مقالات المدونة