NIEUW 📢 Beperkte lanceeractie: tot 70% korting op je eerste maand, voor elke game!Bekijk pakketten

Een Go Discord-bot hosten

Discord-bothostingUpdated Oct 29, 20265 min read

Een Go-bot bouw je op je eigen computer en upload je als één afgewerkt Linux-programma. Er wordt niets op de server gecompileerd, dus al het geheugen van je pakket gaat naar de bot. Zo draai je er een:

  1. Bouw hem voor Linux x86-64 op je computer.
  2. Wissel het type: klik op de pagina Bot, deel Code, naast Runtime op Wijzigen wat er draait en kies Go Bot.
  3. Upload het programma (standaard bot genoemd) in Files, of vul Downloadlink (optioneel) in het deel Code in.
  4. Plak je token op de pagina Bot, deel Discord, en klik op Verbinden.
  5. Druk op Starten en volg Console.

1. Bouw voor Linux

Vanuit je projectmap, op elke 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 maakt één op zichzelf staand bestand dat niet afhangt van de systeembibliotheken van de server. Het resultaat is een bestand met de naam bot zonder extensie. Een .exe of een macOS-build draait niet op de server.

2. Een minimale discordgo-bot

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
}

Het token komt uit DISCORD_TOKEN. Als je op Stoppen drukt, krijgt je programma een onderbrekingssignaal, dus de laatste regels sluiten de Discord-verbinding netjes af. Door Logged in as te printen verandert het statuslabel op Overzicht in Online in Discord.

3. Wissel het type naar Go Bot

Klik op de pagina Bot, deel Code, naast Runtime op Wijzigen wat er draait en kies Go Bot. Op een computer opent het typelabel bovenaan de pagina (bijvoorbeeld Node.js Bot) hetzelfde venster. Zie Je bot naar een andere taal of een kant-en-klare bot overzetten.

4. Zet het programma op de server

Upload het: klik in Files op Uploaden en kies bot. Upload ook de bestanden die het ernaast leest. Je hoeft het niet uitvoerbaar te maken: de server doet dat bij het starten.

Of laat de server het downloaden: zet op de pagina Bot, deel Code, kaart Instellingen, Downloadlink (optioneel) op een https-link naar je afgewerkte programma, bijvoorbeeld een releasebestand op GitHub, en klik op Opslaan. Bij een start downloadt de server het programmabestand als het ontbreekt (tot 500 MB). Om bij te werken publiceer je een nieuwe build op die link, verwijder je het programma in Files en druk je op Starten.

Met een downloadlink werkt Bot starten in de kaart Je bot instellen ook voordat het bestand bestaat: de download hoort bij de start.

Het deel Code van een Go-bot met de kaart Hoe hij draait en de kaart Instellingen met Startargumenten en Downloadlink.

5. Controleer de instellingen en start

  • Startbestand (kaart Hoe hij draait): de naam en map van het programma, standaard bot, bijvoorbeeld bin/mybot.
  • Startargumenten (optioneel) (kaart Instellingen): extra argumenten voor je programma, zoals --debug. Shelltekens zoals $, ;, & en > zijn niet toegestaan.

Plak je token in het deel Discord, klik op Verbinden en druk dan op Starten. De console toont [PlayNHost] Starting your bot en daarna de uitvoer van je programma.

Consoleregels die je kunt zien

RegelWat je doet
[PlayNHost] Your bot is not set up yet: the program bot was not found.Upload het programma, of zet Startbestand op de exacte naam en map.
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again.Bouw opnieuw met GOOS=linux GOARCH=amd64.
[PlayNHost] Downloading your program, daarna [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.De link is fout, privé of niet https. Controleer Downloadlink (optioneel) in het deel Code, onder Instellingen.

Go-bots hebben geen Git-bron en geen veld Packages: je libraries zitten in het programma. Sleutels en wachtwoorden horen onder Omgeving en je leest ze met os.Getenv: Omgevingsvariabelen en geheimen instellen voor je Discord-bot.

Draait je bot al ergens anders? Verhuis hem naar ons

ONZE NIEUWSTE BLOGS