NOVO 📢 Oferta de lançamento limitada: até 70% de desconto no seu primeiro mês, em todos os jogos!Ver planos

Como hospedar um bot do Discord em Go

Hospedagem de bot do DiscordUpdated Oct 29, 20265 min read

Um bot em Go é compilado no seu próprio computador e enviado como um único programa Linux pronto; nada é compilado no servidor, então toda a memória do seu plano vai para o bot. Para rodar um:

  1. Compile-o para Linux x86-64 no seu computador.
  2. Mude o tipo: na página Bot, seção Código, clique em Mudar o que roda ao lado de Runtime e escolha Go Bot.
  3. Envie o programa (chamado bot por padrão) em Files, ou defina o Link de download (opcional) na seção Código.
  4. Cole o seu token na página Bot, seção Discord, e clique em Conectar.
  5. Clique em Iniciar e acompanhe o Console.

1. Compile para Linux

Na pasta do seu projeto, em qualquer computador:

# 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

O CGO_ENABLED=0 gera um arquivo único e independente, que não depende das bibliotecas do sistema do servidor. O resultado é um arquivo chamado bot, sem extensão. Um .exe ou um build para macOS não roda no servidor.

2. Um bot discordgo mínimo

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
}

O token vem de DISCORD_TOKEN. Quando você clica em Parar, o seu programa recebe um sinal de interrupção, então as últimas linhas fecham a conexão com o Discord de forma limpa. Imprimir Logged in as muda o chip em Visão geral para Online no Discord.

3. Mude o tipo para Go Bot

Na página Bot, seção Código, clique em Mudar o que roda ao lado de Runtime e escolha Go Bot. Em um computador, o rótulo do tipo no topo da página (por exemplo Node.js Bot) abre a mesma janela. Veja Como mudar seu bot para outra linguagem ou para um bot pronto.

4. Coloque o programa no servidor

Envie-o: em Files, clique em Enviar e escolha o bot. Envie ao lado dele os arquivos que ele lê. Você não precisa torná-lo executável: o servidor faz isso ao iniciar.

Ou deixe o servidor baixá-lo: na página Bot, seção Código, card Configurações, defina o Link de download (opcional) com um link https para o seu programa pronto, por exemplo um arquivo de release do GitHub, e clique em Salvar. Em um início, quando o arquivo do programa não existe, o servidor o baixa (até 500 MB). Para atualizar, publique um novo build nesse link, exclua o programa em Files e clique em Iniciar.

Com um link de download definido, Iniciar bot no card Configurar seu bot funciona mesmo antes de o arquivo existir: o download roda como parte do início.

A seção Código de um bot Go com o card Como ele roda e o card Configurações listando Argumentos de início e Link de download.

5. Confira as configurações e inicie

  • Arquivo de entrada (card Como ele roda): o nome e a pasta do programa, bot por padrão, por exemplo bin/mybot.
  • Argumentos de início (opcional) (card Configurações): argumentos extras para o seu programa, como --debug. Caracteres de shell como $, ;, & e > não são permitidos.

Cole o seu token na seção Discord, clique em Conectar e depois em Iniciar. O console mostra [PlayNHost] Starting your bot e depois a saída do seu programa.

Linhas de console que você pode ver

LinhaO que fazer
[PlayNHost] Your bot is not set up yet: the program bot was not found.Envie o programa ou coloque em Arquivo de entrada o nome e a pasta exatos dele.
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again.Compile de novo com GOOS=linux GOARCH=amd64.
[PlayNHost] Downloading your program, e depois [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start.O link está errado, é privado ou não é https. Confira o Link de download (opcional) na seção Código, em Configurações.

Bots em Go não têm origem Git nem campo Pacotes: suas bibliotecas estão dentro do programa. Chaves e senhas vão em Ambiente, e são lidas com os.Getenv: Como definir variáveis de ambiente e segredos para o seu bot do Discord.

Seu bot já está em outro lugar? Traga-o para nós

NOSSOS ÚLTIMOS ARTIGOS