# Bots de Discord

Source : https://webgune.cloud/es-es/docs/bots-discord · Mis à jour le 2026-10-27

# Bots Discord

Un servicio de tipo **Bot Discord** está hecho para un proceso que se conecta a Discord y permanece escuchando. No necesita puerto HTTP ni dominio.

## Crear un bot

1. En tu proyecto, **+ Nuevo servicio** y elige el tipo **Bot Discord**.
2. Selecciona el runtime: **JavaScript** (Node.js) o **Python**.
3. Conecta el repositorio de GitHub que contiene el código del bot.
4. Añade tu token en las variables de entorno (nunca en el código):

```bash
DISCORD_TOKEN=tu-token-de-bot
```

## Ejemplo mínimo (discord.js)

```javascript
import { Client, GatewayIntentBits } from "discord.js";

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once("ready", () => console.log(`Conectado: ${client.user.tag}`));

client.login(process.env.DISCORD_TOKEN);
```

## Ejemplo mínimo (discord.py)

```python
import os, discord

client = discord.Client(intents=discord.Intents.default())

@client.event
async def on_ready():
    print(f"Conectado: {client.user}")

client.run(os.environ["DISCORD_TOKEN"])
```

## Modo shard

A partir de 2.500 servidores, Discord obliga a repartir la conexión del bot en **shards**. Activa el **modo shard** al crear el bot, o más tarde en la pestaña **Bot Discord**, y elige el número de shards (de 2 a 32). El panel indica el número que Discord recomienda para tu bot, aproximadamente un shard por cada 1.000 servidores.

Cada shard se ejecuta en su propio pod: la carga se reparte entre varias máquinas, y un shard que falla no arrastra a los demás. Los pods arrancan uno tras otro, con unos segundos de diferencia, para respetar el límite de identificación de Discord. Cada pod recibe tres variables:

| Variable | Contenido |
|---|---|
| `SHARD_ID` | Número de shard de este pod (0, 1, 2…) |
| `SHARD_COUNT` | Número total de shards |
| `SHARDS` | `[SHARD_ID]`, en el formato que espera discord.js |

**discord.js** lee `SHARDS` y `SHARD_COUNT` por sí solo: el ejemplo mínimo de arriba funciona sin cambios. No añadas un `ShardingManager` encima, la plataforma ya cumple esa función.

**discord.py**: pasa las dos variables al cliente.

```python
import os, discord
from discord.ext import commands

bot = commands.AutoShardedBot(
    command_prefix="!",
    intents=discord.Intents.default(),
    shard_ids=[int(os.environ["SHARD_ID"])],
    shard_count=int(os.environ["SHARD_COUNT"]),
)

bot.run(os.environ["DISCORD_TOKEN"])
```

Cambiar el número de shards reinicia todos los pods del bot, ya que cada uno debe conocer el nuevo total. En la pestaña **Logs**, un selector permite elegir el shard cuyos logs lees. El autoescalado no está disponible para un bot con shards: siempre funciona con un pod por shard.

## Estado de conexión

El panel del servicio muestra el **estado de conexión a Discord** del bot además del estado del contenedor: ves de inmediato si el bot está en línea en Discord, no solo si el proceso está corriendo.

## Puntos a tener en cuenta

- Sin puerto que configurar: un bot no expone un servidor HTTP. Si tu código de todos modos abre un puerto (dashboard integrado…), prefiere un servicio web clásico.
- El proceso debe permanecer vivo: un script que termina provoca un reinicio en bucle. El diagnóstico es el mismo que para los [comandos de inicio](/docs/commande-demarrage).
- Los logs del bot están disponibles en tiempo real en la pestaña **Logs**.
