يُبنى بوت Go على حاسوبك ويُرفع برنامجًا واحدًا جاهزًا لنظام Linux. لا يُترجم شيء على السيرفر، فتذهب ذاكرة باقتك كلها إلى البوت. لتشغيل بوت:
- ابنِه لنظام Linux x86-64 على حاسوبك.
- بدّل النوع: في صفحة البوت، قسم الكود، اضغط تغيير ما يعمل بجوار بيئة التشغيل واختر Go Bot.
- ارفع البرنامج (اسمه
botافتراضيًا) في Files، أو اضبط رابط التنزيل (اختياري) في قسم الكود. - الصق رمزك في صفحة البوت، قسم Discord، واضغط الاتصال.
- اضغط تشغيل وراقب 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، ثم اضغط تشغيل.
مع ضبط رابط تنزيل، يعمل تشغيل البوت في بطاقة إعداد بوتك حتى قبل وجود الملف: يجري التنزيل كجزء من التشغيل.

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: كيف تضبط متغيرات البيئة والأسرار.



