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

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

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

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

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

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

من مجلد مشروعك، على أي حاسوب:

# macOS or Linux
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o bot

# Windows PowerShell
$env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0"; go build -o bot

يصنع CGO_ENABLED=0 ملفًا واحدًا مكتفيًا بذاته لا يعتمد على مكتبات النظام في السيرفر. والنتيجة ملف اسمه bot بلا امتداد. أما ملف .exe أو بناء macOS فلا يعمل على السيرفر.

2. بوت discordgo بسيط

package main

import (
	"fmt"
	"os"
	"os/signal"
	"syscall"

	"github.com/bwmarrin/discordgo"
)

func main() {
	dg, err := discordgo.New("Bot " + os.Getenv("DISCORD_TOKEN"))
	if err != nil {
		fmt.Println("error creating session:", err)
		return
	}
	dg.Identify.Intents = discordgo.IntentsGuilds
	dg.AddHandler(func(s *discordgo.Session, r *discordgo.Ready) {
		fmt.Println("Logged in as", r.User.Username)
	})
	if err := dg.Open(); err != nil {
		fmt.Println("error opening connection:", err)
		return
	}
	defer dg.Close()

	stop := make(chan os.Signal, 1)
	signal.Notify(stop, os.Interrupt, syscall.SIGTERM)
	<-stop
}

يأتي الرمز من DISCORD_TOKEN. وعندما تضغط إيقاف، يتلقى برنامجك إشارة مقاطعة، لذلك تُغلق الأسطر الأخيرة اتصال Discord بشكل سليم. وطباعة Logged in as تحوّل الشارة في نظرة عامة إلى متصل في Discord.

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

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

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

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

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

مع ضبط رابط تنزيل، يعمل تشغيل البوت في بطاقة إعداد بوتك حتى قبل وجود الملف: يجري التنزيل كجزء من التشغيل.

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

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

  • ملف البدء (بطاقة طريقة التشغيل): اسم البرنامج ومجلده، bot افتراضيًا، أو مثلًا bin/mybot.
  • وسائط التشغيل (اختياري) (بطاقة الإعدادات): وسائط إضافية لبرنامجك، مثل --debug. لا يُسمح بمحارف الـ 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.ابنِه من جديد بـ GOOS=linux GOARCH=amd64.
[PlayNHost] Downloading your program، ثم [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.الرابط خاطئ، أو خاص، أو ليس https. تحقق من رابط التنزيل (اختياري) في قسم الكود، تحت الإعدادات.

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

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

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