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:
- Zbuduj go dla Linuksa x86-64 na swoim komputerze.
- Zmień typ: na stronie Bot, w sekcji Kod, kliknij Zmień to, co działa obok Runtime i wybierz Go Bot.
- Prześlij program (domyślnie nazwany
bot) w Files albo ustaw Link do pobrania (opcjonalnie) w sekcji Kod. - Wklej swój token na stronie Bot, w sekcji Discord, i kliknij Połącz.
- 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.

5. Sprawdź ustawienia i uruchom
- Plik startowy (karta Jak działa): nazwa programu i folder, domyślnie
bot, na przykładbin/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ć
| Linia | Co 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.



