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:
- Compile-o para Linux x86-64 no seu computador.
- 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.
- Envie o programa (chamado
botpor padrão) em Files, ou defina o Link de download (opcional) na seção Código. - Cole o seu token na página Bot, seção Discord, e clique em Conectar.
- 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.

5. Confira as configurações e inicie
- Arquivo de entrada (card Como ele roda): o nome e a pasta do programa,
botpor padrão, por exemplobin/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
| Linha | O 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.



