NUOVO 📢 Offerta di lancio limitata: fino al 70% di sconto sul tuo primo mese, per tutti i giochi!Vedi i piani

Come ospitare un bot Discord in Go

Hosting di bot DiscordUpdated Oct 29, 20265 min read

Un bot Go si compila sul tuo computer e si carica come un unico programma Linux già pronto; sul server non viene compilato nulla, quindi tutta la memoria del tuo piano va al bot. Per eseguirne uno:

  1. Compilalo per Linux x86-64 sul tuo computer.
  2. Cambia il tipo: nella pagina Bot, sezione Codice, clicca su Cambia cosa viene eseguito accanto a Runtime e scegli Go Bot.
  3. Carica il programma (chiamato bot in modo predefinito) in Files, oppure imposta Link di download (facoltativo) nella sezione Codice.
  4. Incolla il tuo token nella pagina Bot, sezione Discord, e clicca su Collega.
  5. Premi Avvia e guarda Console.

1. Compila per Linux

Dalla cartella del tuo progetto, su qualsiasi computer:

# 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 crea un unico file autonomo che non dipende dalle librerie di sistema del server. Il risultato è un file chiamato bot senza estensione. Un .exe o una build per macOS non gira sul server.

2. Un bot discordgo minimo

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
}

Il token arriva da DISCORD_TOKEN. Quando premi Ferma, il tuo programma riceve un segnale di interruzione, quindi le ultime righe chiudono pulitamente la connessione a Discord. Stampare Logged in as porta il badge nella Panoramica su Online su Discord.

3. Passa il tipo a Go Bot

Nella pagina Bot, sezione Codice, clicca su Cambia cosa viene eseguito accanto a Runtime e scegli Go Bot. Da computer, l'etichetta del tipo in cima alla pagina (per esempio Node.js Bot) apre la stessa finestra. Vedi Come passare il tuo bot a un altro linguaggio.

4. Metti il programma sul server

Caricalo: in Files, clicca su Carica e scegli bot. Carica anche gli eventuali file che legge, accanto a lui. Non serve renderlo eseguibile: lo fa il server all'avvio.

Oppure lascia che lo scarichi il server: nella pagina Bot, sezione Codice, riquadro Impostazioni, imposta Link di download (facoltativo) su un link https al tuo programma già pronto, per esempio un file di una release su GitHub, e clicca su Salva. All'avvio, quando il file del programma manca, il server lo scarica (fino a 500 MB). Per aggiornare, pubblica una nuova build a quel link, elimina il programma in Files e premi Avvia.

Con un link di download impostato, Avvia il bot nel riquadro Configura il tuo bot funziona anche prima che il file esista: il download fa parte dell'avvio.

La sezione Codice di un bot Go con il riquadro Come viene eseguito e il riquadro Impostazioni che elenca Argomenti di avvio e Link di download.

5. Controlla le impostazioni e avvia

  • File di avvio (riquadro Come viene eseguito): il nome e la cartella del programma, bot in modo predefinito, per esempio bin/mybot.
  • Argomenti di avvio (facoltativo) (riquadro Impostazioni): argomenti aggiuntivi per il tuo programma, come --debug. I caratteri della shell come $, ;, & e > non sono ammessi.

Incolla il tuo token nella sezione Discord, clicca su Collega, poi premi Avvia. La console mostra [PlayNHost] Starting your bot e poi l'output del tuo programma.

Righe della console che puoi vedere

RigaCosa fare
[PlayNHost] Your bot is not set up yet: the program bot was not found.Carica il programma, oppure imposta File di avvio sul suo nome e sulla sua cartella esatti.
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again.Compila di nuovo con GOOS=linux GOARCH=amd64.
[PlayNHost] Downloading your program, poi [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.Il link è sbagliato, privato o non https. Controlla Link di download (facoltativo) nella sezione Codice, sotto Impostazioni.

I bot Go non hanno un'origine Git né un campo Pacchetti: le tue librerie sono dentro il programma. Le chiavi e le password vanno sotto Ambiente, lette con os.Getenv: Come impostare variabili d'ambiente e segreti.

Il tuo bot è già ospitato altrove? Spostalo da noi

ULTIMI ARTICOLI