YENİ 📢 Sınırlı lansman teklifi: Tüm oyunlarda ilk aya %70'e varan indirim!Paketleri görün

Go Discord botu nasıl barındırılır

Discord botlarıUpdated Oct 29, 20265 min read

Bir Go botu kendi bilgisayarınızda derlenir ve bitmiş tek bir Linux programı olarak yüklenir. Sunucuda hiçbir şey derlenmez, bu yüzden paketinizin tüm belleği bota gider. Bir tane çalıştırmak için:

  1. Bilgisayarınızda Linux x86-64 için derleyin.
  2. Türü değiştirin: Bot sayfasında, Kod bölümünde, Çalışma ortamı’nın yanındaki Çalışanı değiştir’e tıklayın ve Go Bot’u seçin.
  3. Programı (varsayılan adı bot) Files içine yükleyin ya da Kod bölümünde İndirme bağlantısı (isteğe bağlı) alanını ayarlayın.
  4. Token’ınızı Bot sayfasında, Discord bölümüne yapıştırın ve Bağlan’a tıklayın.
  5. Başlat’a basın ve Console’u izleyin.

1. Linux için derleyin

Proje klasörünüzden, herhangi bir bilgisayarda:

# 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, sunucunun sistem kütüphanelerine bağlı olmayan, kendi içinde eksiksiz tek bir dosya üretir. Sonuç, uzantısı olmayan bot adlı bir dosyadır. Bir .exe ya da macOS derlemesi sunucuda çalışmaz.

2. En küçük discordgo botu

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
}

Token DISCORD_TOKEN değişkeninden gelir. Durdur’a bastığınızda programınız bir kesme sinyali alır, bu yüzden son satırlar Discord bağlantısını düzgünce kapatır. Logged in as yazdırmak, Genel bakış sayfasındaki rozeti Discord’da çevrimiçi durumuna çevirir.

3. Türü Go Bot olarak değiştirin

Bot sayfasında, Kod bölümünde, Çalışma ortamı’nın yanındaki Çalışanı değiştir’e tıklayın ve Go Bot’u seçin. Bilgisayarda, sayfanın üstündeki tür etiketi (örneğin Node.js Bot) aynı pencereyi açar. Bkz. Botunuzu başka bir dile ya da hazır bota nasıl geçirirsiniz.

4. Programı sunucuya koyun

Yükleyin: Files içinde Yükle’ye tıklayın ve bot dosyasını seçin. Onun yanında okuduğu dosyaları da yükleyin. Çalıştırılabilir yapmanız gerekmez: sunucu bunu başlangıçta yapar.

Ya da sunucunun indirmesine izin verin: Bot sayfasında, Kod bölümünde, Ayarlar kartında İndirme bağlantısı (isteğe bağlı) alanını bitmiş programınıza giden bir https bağlantısına, örneğin bir GitHub sürüm dosyasına ayarlayın ve Kaydet’e tıklayın. Bir başlangıçta program dosyası yoksa sunucu onu indirir (en fazla 500 MB). Güncellemek için o bağlantıda yeni bir derleme yayımlayın, programı Files içinde silin ve Başlat’a basın.

Bir indirme bağlantısı ayarlıysa Botunuzu kurun kartındaki Botu başlat, dosya henüz yokken bile çalışır: indirme başlangıcın bir parçası olarak yapılır.

Bir Go botunun Kod bölümü: Nasıl çalışır kartı ve Başlangıç argümanları ile İndirme bağlantısını listeleyen Ayarlar kartı.

5. Ayarları kontrol edin ve başlatın

  • Giriş dosyası (Nasıl çalışır kartı): programın adı ve klasörü, varsayılan bot, örneğin bin/mybot.
  • Başlangıç argümanları (isteğe bağlı) (Ayarlar kartı): programınız için ek argümanlar, örneğin --debug. $, ;, & ve > gibi kabuk karakterlerine izin verilmez.

Token’ınızı Discord bölümüne yapıştırın, Bağlan’a tıklayın, sonra Başlat’a basın. Console [PlayNHost] Starting your bot satırını, ardından programınızın çıktısını gösterir.

Görebileceğiniz console satırları

SatırNe yapmalı
[PlayNHost] Your bot is not set up yet: the program bot was not found.Programı yükleyin ya da Giriş dosyası’nı onun tam adına ve klasörüne ayarlayın.
[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 ile yeniden derleyin.
[PlayNHost] Downloading your program, sonra [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.Bağlantı yanlış, özel ya da https değil. Kod bölümünde, Ayarlar altında İndirme bağlantısı (isteğe bağlı) alanını kontrol edin.

Go botlarında Git kaynağı ve Paketler alanı yoktur: kütüphaneleriniz programın içindedir. Anahtarlar ve şifreler Ortam altına girer ve os.Getenv ile okunur: Discord botunuz için ortam değişkenleri ve gizli değerler nasıl ayarlanır.

Botun başka bir yerde mi? Bize taşı

EN YENİ BLOG YAZILARIMIZ