Un bot de Go se compila en tu propio ordenador y se sube como un único programa de Linux ya terminado; en el servidor no se compila nada, así que toda la memoria de tu plan es para el bot. Para ejecutar uno:
- Compílalo para Linux x86-64 en tu ordenador.
- Cambia el tipo: en la página Bot, sección Código, pulsa Cambiar lo que se ejecuta junto a Entorno de ejecución y elige Go Bot.
- Sube el programa (llamado
botpor defecto) en Files, o pon un Enlace de descarga (opcional) en la sección Código. - Pega tu token en la página Bot, sección Discord, y pulsa Conectar.
- Pulsa Iniciar y mira Console.
1. Compila para Linux
Desde la carpeta de tu proyecto, en cualquier ordenador:
# 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 único archivo autónomo que no depende de las librerías del sistema del servidor. El resultado es un archivo llamado bot sin extensión. Un .exe o una compilación de macOS no se ejecuta en el servidor.
2. Un bot mínimo de 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
}
El token viene de DISCORD_TOKEN. Cuando pulsas Detener, tu programa recibe una señal de interrupción, así que las últimas líneas cierran la conexión con Discord de forma limpia. Imprimir Logged in as cambia la etiqueta del Resumen a En línea en Discord.
3. Cambia el tipo a Go Bot
En la página Bot, sección Código, pulsa Cambiar lo que se ejecuta junto a Entorno de ejecución y elige Go Bot. En un ordenador, la etiqueta del tipo en la parte superior de la página (por ejemplo Node.js Bot) abre el mismo diálogo. Mira Cómo cambiar tu bot a otro lenguaje o a un bot listo para usar.
4. Pon el programa en el servidor
Súbelo: en Files, pulsa Subir y elige bot. Sube junto a él los archivos que lea. No hace falta hacerlo ejecutable: el servidor lo hace al iniciar.
O deja que el servidor lo descargue: en la página Bot, sección Código, tarjeta Ajustes, pon en Enlace de descarga (opcional) un enlace https a tu programa terminado, por ejemplo un archivo de una release de GitHub, y pulsa Guardar. Al iniciar, si falta el archivo del programa, el servidor lo descarga (hasta 500 MB). Para actualizar, publica una compilación nueva en ese enlace, borra el programa en Files y pulsa Iniciar.
Con un enlace de descarga definido, Iniciar bot en la tarjeta Configura tu bot funciona incluso antes de que exista el archivo: la descarga se hace como parte del inicio.

5. Revisa los ajustes e inicia
- Archivo de entrada (tarjeta Cómo se ejecuta): el nombre y la carpeta del programa,
botpor defecto, por ejemplobin/mybot. - Argumentos de inicio (opcional) (tarjeta Ajustes): argumentos adicionales para tu programa, como
--debug. No se permiten caracteres de shell como$,;,&y>.
Pega tu token en la sección Discord, pulsa Conectar y luego Iniciar. La consola muestra [PlayNHost] Starting your bot y después la salida de tu programa.
Líneas de la consola que puedes ver
| Línea | Qué hacer |
|---|---|
[PlayNHost] Your bot is not set up yet: the program bot was not found. | Sube el programa, o pon en Archivo de entrada su nombre y carpeta exactos. |
[PlayNHost] bot is not a Linux program. Build it for Linux x86-64 (not Windows or macOS) and upload it again. | Vuelve a compilar con GOOS=linux GOARCH=amd64. |
[PlayNHost] Downloading your program, y luego [PlayNHost] The download failed. Check the download link on the Bot page, Code, Settings, then press Start. | El enlace es incorrecto, es privado o no es https. Revisa Enlace de descarga (opcional) en la sección Código, bajo Ajustes. |
Los bots de Go no tienen origen Git ni campo Paquetes: tus librerías van dentro del programa. Las claves y contraseñas van en Entorno, y se leen con os.Getenv: Cómo definir variables de entorno y secretos para tu bot de Discord.



