NOWOŚĆ 📢 Ograniczona oferta na start: do 70% zniżki na pierwszy miesiąc, na każdą grę!Zobacz plany

Jak hostować bota Discord w Go

Hosting botów DiscordUpdated Oct 29, 20265 min read

Bot w Go jest budowany na twoim własnym komputerze i przesyłany jako jeden gotowy program dla Linuksa; na serwerze nic się nie kompiluje, więc cała pamięć twojego planu trafia do bota. Żeby uruchomić takiego bota:

  1. Zbuduj go dla Linuksa x86-64 na swoim komputerze.
  2. Zmień typ: na stronie Bot, w sekcji Kod, kliknij Zmień to, co działa obok Runtime i wybierz Go Bot.
  3. Prześlij program (domyślnie nazwany bot) w Files albo ustaw Link do pobrania (opcjonalnie) w sekcji Kod.
  4. Wklej swój token na stronie Bot, w sekcji Discord, i kliknij Połącz.
  5. Naciśnij Uruchom i obserwuj Console.

1. Zbuduj dla Linuksa

Z folderu swojego projektu, na dowolnym komputerze:

# 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 tworzy jeden samodzielny plik, który nie zależy od bibliotek systemowych serwera. Wynikiem jest plik o nazwie bot, bez rozszerzenia. Plik .exe ani build dla macOS nie uruchomi się na serwerze.

2. Minimalny bot 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
}

Token pochodzi z DISCORD_TOKEN. Gdy naciśniesz Zatrzymaj, twój program dostaje sygnał przerwania, więc ostatnie linie czysto zamykają połączenie z Discordem. Wypisanie Logged in as zmienia znacznik na stronie Przegląd na Online na Discordzie.

3. Zmień typ na Go Bot

Na stronie Bot, w sekcji Kod, kliknij Zmień to, co działa obok Runtime i wybierz Go Bot. Na komputerze to samo okno otwiera etykieta typu u góry strony (na przykład Node.js Bot). Zobacz Jak przełączyć bota na inny język.

4. Umieść program na serwerze

Prześlij go: w Files kliknij Prześlij i wybierz bot. Prześlij obok niego pliki, które odczytuje. Nie musisz nadawać mu uprawnień do uruchamiania: serwer robi to przy starcie.

Albo niech serwer go pobierze: na stronie Bot, w sekcji Kod, na karcie Ustawienia, ustaw Link do pobrania (opcjonalnie) na link https do gotowego programu, na przykład plik wydania z GitHub, i kliknij Zapisz. Przy starcie, gdy brakuje pliku programu, serwer go pobiera (do 500 MB). Żeby zaktualizować, opublikuj nowy build pod tym linkiem, usuń program w Files i naciśnij Uruchom.

Gdy link do pobrania jest ustawiony, Uruchom bota na karcie Skonfiguruj swojego bota działa nawet zanim plik istnieje: pobieranie odbywa się w ramach startu.

Sekcja Kod bota Go z kartą Jak działa i kartą Ustawienia, która wymienia Argumenty startowe i Link do pobrania.

5. Sprawdź ustawienia i uruchom

  • Plik startowy (karta Jak działa): nazwa programu i folder, domyślnie bot, na przykład bin/mybot.
  • Argumenty startowe (opcjonalnie) (karta Ustawienia): dodatkowe argumenty dla twojego programu, takie jak --debug. Znaki powłoki, takie jak $, ;, & i >, są niedozwolone.

Wklej token w sekcji Discord, kliknij Połącz, a potem naciśnij Uruchom. Konsola pokazuje [PlayNHost] Starting your bot, a potem wyjście twojego programu.

Linie konsoli, które możesz zobaczyć

LiniaCo zrobić
[PlayNHost] Your bot is not set up yet: the program bot was not found.Prześlij program albo ustaw Plik startowy na jego dokładną nazwę i folder.
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again.Zbuduj ponownie z GOOS=linux GOARCH=amd64.
[PlayNHost] Downloading your program, a potem [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.Link jest błędny, prywatny albo nie jest https. Sprawdź Link do pobrania (opcjonalnie) w sekcji Kod, w Ustawienia.

Boty w Go nie mają źródła Git ani pola Pakiety: twoje biblioteki są w środku programu. Klucze i hasła trafiają do Środowisko i są odczytywane przez os.Getenv: Jak ustawić zmienne środowiskowe i sekrety.

Twój bot działa już gdzie indziej? Przenieś go do nas

NASZE OSTATNIE WPISY