Token del bot de Discord: dónde encontrarlo y cómo protegerlo

El token del bot está en la pestaña Bot del Portal de Desarrolladores de Discord, en el botón Reset Token. Es la contraseña del bot: guárdalo en una variable de entorno, nunca en el código.

Actualizado el 5 min de lectura

Objetivos de aprendizaje

Después de leer este artículo podrás:

  • Obtener el token en la pestaña Bot del Portal de Desarrolladores
  • Guardar el token en una variable de entorno, fuera de Git
  • Restablecer el token y actuar rápido si se filtra
En esta página

El token es la credencial que usa tu código para entrar en Discord como el bot. No hay usuario y contraseña: quien tiene el token puede hacer todo lo que hace el bot, como borrar canales, banear miembros y enviar mensajes en su nombre.

Por eso el tema tiene dos mitades. La primera es encontrar el token. La segunda, la que importa, es evitar que termine en un repositorio, en una captura o en un chat de soporte.

Portalpestaña Bot, Reset Tokendesarrolloproducción.envfuera de Git (.gitignore)Variable de entornoen el hostingProceso del botAuthorization: Bot MTA…API de Discord
El token vive en el entorno, nunca en el código: .env fuera de Git en tu PC, variable de entorno en el hosting.

¿Dónde se obtiene el token del bot?#

El token está en el Portal de Desarrolladores de Discord:

  1. Entra en el Portal y abre tu aplicación (o crea una con New Application).
  2. En el menú lateral, abre la pestaña Bot.
  3. Haz clic en Reset Token y confirma. El token aparece en pantalla.
  4. Cópialo directamente al lugar donde lo vas a guardar (mira la sección siguiente).

Si cierras la página sin copiarlo, no hay forma de volver a leerlo: restablécelo otra vez y usa el token nuevo.

Cada restablecimiento invalida los tokens anteriores del bot. Es útil cuando algo sale mal, pero también deja fuera de línea cualquier proceso que siga usando el valor viejo.

¿Cómo se usa el token?#

Cada llamada a la API REST de Discord lleva el token en la cabecera Authorization, con el prefijo Bot, según la referencia de la API. Las bibliotecas (discord.js, discord.py, JDA) lo hacen por ti al recibir el token en el login. Para verlo en la práctica, este comando devuelve los datos del propio bot:

bash
curl -H "Authorization: Bot $DISCORD_TOKEN" https://discord.com/api/v10/users/@me

Con un token válido, la respuesta incluye el id y el username del bot. Con uno incorrecto o restablecido, recibes 401: Unauthorized. Es la forma más rápida de comprobar que el valor copiado funciona, sin iniciar todo el bot.

¿Cómo guardar el token de forma segura?#

La regla es una sola: el token vive en el entorno, no en el código. En desarrollo, eso es un archivo .env que Git ignora. En producción, es la variable de entorno del hosting. El artículo sobre variables de entorno explica la mecánica.

Crea el .env en la raíz del proyecto:

bash
DISCORD_TOKEN=pega_el_token_aqui

Y haz que Git lo ignore antes del primer commit:

bash
echo ".env" >> .gitignore
git status   # .env no debe aparecer en la lista

¿Cómo leer el token en Node.js?#

En las versiones recientes de Node.js, la opción --env-file carga el .env sin paquetes extra y ya no es experimental, según la documentación de Node.js.

js
import { Client, Events, GatewayIntentBits } from "discord.js";

const token = process.env.DISCORD_TOKEN;
if (!token) {
  console.error("Define DISCORD_TOKEN en el entorno.");
  process.exit(1);
}

const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, (c) => console.log(`Conectado como ${c.user.tag}`));
client.login(token);
bash
node --env-file=.env index.js

¿Cómo leer el token en Python?#

Con discord.py 2.x y el paquete python-dotenv:

python
import os

import discord
from dotenv import load_dotenv

load_dotenv()
token = os.environ["DISCORD_TOKEN"]  # KeyError claro si falta

client = discord.Client(intents=discord.Intents.default())


@client.event
async def on_ready():
    print(f"Conectado como {client.user}")


client.run(token)

Usar os.environ["..."] en lugar de os.getenv hace que el programa falle de inmediato, con un mensaje claro, cuando la variable no existe.

¿Qué errores filtran un token?#

  • Pegar el token en el código. client.login("MTA...") funciona y parece inofensivo hasta el primer git push.
  • Subir el .env con un commit. Pasa cuando el .gitignore se crea después del primer commit. El archivo ya está en el historial.
  • Mostrar el token en una captura o en un log. Un console.log(process.env) o una captura de la terminal para pedir ayuda ya basta.
  • Compartir el proyecto en un ZIP. El .env viaja con la carpeta.
  • Enviar el token por mensaje. En un servidor de soporte nadie necesita tu token para ayudarte. Quien lo pida es un estafador.

GitHub busca tokens de bots de Discord en los repositorios: el patrón discord_bot_token aparece en la lista de patrones de secret scanning, con push protection y aviso al proveedor del token (partner alert). Ayuda, pero no lo tomes como única defensa ni supongas que Discord restablece el token por ti.

¿Qué hacer si el token se filtró?#

Actúa en este orden:

  1. Restablece el token ahora. Portal, pestaña Bot, Reset Token. El valor filtrado deja de valer al instante.
  2. Actualiza el nuevo token en el hosting y en tu .env local, y reinicia el bot.
  3. Revisa el servidor. Busca canales, roles, webhooks o invitaciones que no creaste.
  4. Limpia el repositorio si quieres (por ejemplo con git filter-repo), pero solo después del paso 1. Reescribir el historial no sirve si el valor viejo ya se copió, y por eso restablecer va primero.

Si tu bot tenía el permiso de Administrador, el daño posible es mayor. Dale al bot solo los permisos que necesita.

Si tras el cambio el bot sigue sin conectarse, lee por qué un bot de Discord se desconecta: un token viejo olvidado en algún entorno es una causa común.

¿Cómo separar el token de pruebas del de producción?#

Crea dos aplicaciones en el Portal: una para desarrollar y otra para el bot que queda en línea. Cada una tiene su token. Así, la filtración del token de pruebas no tumba el bot de producción, y puedes probar cambios sin tocar el bot que está en línea.

Usa el mismo nombre de variable (DISCORD_TOKEN) en ambos entornos y cambia solo el valor. El código no necesita saber cuál es cuál. Para llevar el bot a un hosting, sigue la guía de cómo alojar un bot de discord.js.

Cómo hacerlo en Square Cloud#

En Square Cloud el token no necesita estar en ningún archivo del proyecto. Las variables de entorno se configuran por aplicación, en el panel, por la API, por la CLI o con la extensión de VS Code. El panel también importa un .env y exporta el conjunto como KEY=VALUE.

Crea la variable DISCORD_TOKEN con el valor del Portal y deja el .env fuera del ZIP y del repositorio. El cambio se aplica en el siguiente reinicio, sin rebuild. Si tienes que cambiar el token tras una filtración, edita el valor y reinicia.

El hosting de bots admite discord.js, discord.py, JDA, Discord.Net o cualquier biblioteca de Gateway, y el reinicio automático (activado por defecto en el deploy desde el panel) trae el bot de vuelta cuando el proceso termina con error. El deploy y la configuración los haces tú. Mira los detalles en hosting de bots de Discord.

Hosting de bots

Tu bot en línea 24/7, con reinicio automático

Más información

Preguntas frecuentes

¿Dónde está el token del bot de Discord?

En el Portal de Desarrolladores, entra en Applications, elige tu app y abre la pestaña Bot. El token aparece al hacer clic en Reset Token y confirmar.

Perdí el token. ¿Puedo verlo otra vez?

No. Un token antiguo no se puede volver a leer. Haz clic en Reset Token para generar otro y actualiza el valor en todos los lugares donde lo usa el bot.

¿Qué pasa si subo el token a un repositorio público?

Cualquiera que lo copie controla tu bot. Restablece el token en el Portal de inmediato; borrar el commit después no basta, porque el valor antiguo ya pudo copiarse.

¿Necesito un token para cada bot?

Sí. Cada aplicación del Portal tiene su propio bot y su token. Usa una aplicación para desarrollo y otra para el bot en producción.

Siguiente paso · Paso 3 de 5Cómo hospedar un bot de Discord con Node.jsPara hospedar un bot de discord.js, crea la app en el Portal, guarda el token en una variable de entorno y ejecuta el proceso en una máquina siempre encendida.