NapNodes

← Guías de Bots de Discord

Bots de Discord · actualizada el 22 de octubre de 2026

Cómo hacer un bot de Discord con IA (ChatGPT, Gemini…) en Python

Un bot de Discord con IA no lleva la IA dentro: le pasa la pregunta a un servicio como ChatGPT (OpenAI) o Gemini (Google) por internet y devuelve lo que contesta. Por eso el bot es pequeño y el código, corto: este tiene un comando /pregunta y vale para casi cualquier IA cambiando dos líneas del .env.

¿Se lo pasas a tu grupo?WhatsApp

1. Lo que necesitas

Un bot de Discord creado en el portal de desarrolladores, con su token. Si es tu primer bot, haz antes el bot en Python paso a paso: aquí se da por hecho que sabes crearlo e invitarlo (con «bot» y «applications.commands»).

Y una clave de la API de la IA que quieras usar. La de OpenAI se saca en platform.openai.com y la de Gemini en Google AI Studio (aistudio.google.com). No es la suscripción de ChatGPT Plus: la API se paga aparte, por lo que se usa (por tokens, trozos de texto), y Gemini tiene una capa gratis con límites de uso. Mira los precios y límites de hoy en la página del proveedor antes de empezar.

¿Prefieres no montarlo tú? Hosting de bots de Discord desde 1,50 € al mes, sin permanencia y con devolución íntegra en 72 horas. O crea un bot de Discord gratis, sin tarjeta.

2. Una sola librería para casi todas las IA

La librería oficial de OpenAI para Python (openai) habla con OpenAI y también con cualquier servicio que copie su forma de API, que son muchos: Gemini lo admite en https://generativelanguage.googleapis.com/v1beta/openai/, y otros como OpenRouter o Groq tienen su propia dirección compatible. Así que el mismo bot sirve para todos: en el .env cambias la dirección (IA_URL), la clave (IA_CLAVE) y el modelo (IA_MODELO).

Para OpenAI, deja IA_URL vacía. El nombre del modelo cópialo tal cual de la documentación de tu proveedor: cambian a menudo y uno que ya no existe da error.

3. El código

Tres ficheros en una carpeta. El comando /pregunta primero avisa a Discord de que va a tardar (Discord solo espera 3 segundos una respuesta, y la IA suele tardar más), luego pregunta a la IA y contesta con lo que diga, cortado a 2000 caracteres, el máximo de un mensaje de Discord.

Las INSTRUCCIONES son lo que la IA lee antes de cada pregunta: cámbialas para darle personalidad o centrarla en tu comunidad (las normas, tu servidor de Minecraft…).

requirements.txt
discord.py
openai
python-dotenv
.env
DISCORD_TOKEN=pega-aquí-el-token-del-bot
IA_CLAVE=pega-aquí-la-clave-de-la-api
IA_MODELO=nombre-del-modelo
# Vacía para OpenAI; para Gemini:
# IA_URL=https://generativelanguage.googleapis.com/v1beta/openai/
IA_URL=
app.py
import os

import discord
from discord import app_commands
from dotenv import load_dotenv
from openai import AsyncOpenAI

load_dotenv()  # lee el token y la clave del fichero .env

ia = AsyncOpenAI(
    api_key=os.environ["IA_CLAVE"],
    base_url=os.getenv("IA_URL") or None,  # vacía = OpenAI
)
MODELO = os.environ["IA_MODELO"]
INSTRUCCIONES = (
    "Eres el asistente de un servidor de Discord. "
    "Contesta en español, breve y con buen tono."
)

intents = discord.Intents.default()
client = discord.Client(intents=intents)
tree = app_commands.CommandTree(client)


@tree.command(name="pregunta", description="Pregúntale algo a la IA")
@app_commands.describe(texto="Lo que le quieres preguntar")
@app_commands.checks.cooldown(1, 30)  # una pregunta cada 30 s por persona
async def pregunta(interaction: discord.Interaction, texto: str):
    await interaction.response.defer(thinking=True)  # «El bot está pensando…»
    try:
        r = await ia.chat.completions.create(
            model=MODELO,
            messages=[
                {"role": "system", "content": INSTRUCCIONES},
                {"role": "user", "content": texto},
            ],
        )
        respuesta = r.choices[0].message.content or "(sin respuesta)"
    except Exception as e:
        print("Error de la IA:", e)  # sale en la consola
        respuesta = "La IA no ha contestado. Prueba dentro de un rato."
    await interaction.followup.send(respuesta[:2000])


@pregunta.error
async def pregunta_error(interaction: discord.Interaction, error):
    if isinstance(error, app_commands.CommandOnCooldown):
        await interaction.response.send_message(
            f"Espera {error.retry_after:.0f} s para otra pregunta.", ephemeral=True
        )
    else:
        print("Error:", error)


@client.event
async def on_ready():
    await tree.sync()  # publica el comando /pregunta
    print(f"Conectado como {client.user}")


client.run(os.environ["DISCORD_TOKEN"])

4. Pruébalo en tu ordenador

Con Python 3.10 o más nuevo: abre una terminal en la carpeta, instala las librerías con «pip install -r requirements.txt» y arráncalo con «python app.py». Cuando diga «Conectado como…», escribe /pregunta en tu servidor de Discord. La primera vez el comando puede tardar unos minutos en aparecer.

Si contesta «La IA no ha contestado», mira la terminal: el error dice qué pasa. Lo más común es una clave mal copiada, un nombre de modelo que no existe, una IA_URL mal copiada o la cuenta del proveedor sin saldo o sin la capa gratis activada.

5. Que no te gasten el saldo

Cada pregunta cuesta tokens, y en un servidor con mucha gente alguien puede ponerse a preguntar sin parar. Tres frenos:

El tiempo de espera entre preguntas: en el código, @app_commands.checks.cooldown(1, 30) deja una pregunta cada 30 segundos por persona. Súbelo si tu comunidad es grande.

Un límite de gasto en el panel de tu proveedor: casi todos dejan poner un tope al mes o avisar al llegar a una cifra. Ponlo antes de abrir el bot a todo el mundo.

Quién puede usarlo: en tu servidor de Discord, «Ajustes del servidor» → «Integraciones» → tu bot deja elegir qué roles y canales pueden usar /pregunta, sin tocar el código.

6. La clave, a salvo

La clave de la IA es dinero: quien la tenga gasta a tu cuenta. Igual que el token del bot, va en el .env y nunca en un repositorio público de GitHub (si subes el código, añade .env a tu .gitignore). Si se te escapa, bórrala en el panel del proveedor y crea otra.

7. Déjalo encendido siempre

El trabajo pesado lo hace la IA en los servidores del proveedor; tu bot solo pasa mensajes, así que usa poca memoria y cabe de sobra en el bot gratis de NapNodes, de 256 MB.

En NapNodes: crea el bot, pásalo a Python en «Configuración» → «Lenguaje», sube los tres ficheros en «Archivos» y pulsa «Encender». Las librerías de requirements.txt se instalan solas al arrancar y app.py es el fichero de inicio que viene puesto; lo que imprime el bot (los errores de la IA incluidos) sale en «Consola». Todo el proceso, en la guía de hosting para tu bot.

El bot gratis se renueva con un clic cada semana. Si no quieres acordarte, el plan Mini (512 MB) está encendido siempre sin renovar nada (precios de los bots).

Preguntas frecuentes

¿Puedo meter ChatGPT en mi servidor de Discord?

Sí, con un bot propio que use la API de OpenAI: le pasa la pregunta y devuelve la respuesta. La API se paga por uso, aparte de la suscripción de ChatGPT.

¿Hay alguna IA gratis para un bot de Discord?

Gemini, de Google, tiene una capa gratis con límites de uso, y se usa con el mismo código cambiando la dirección, la clave y el modelo en el .env. Comprueba sus límites de hoy en la página de Google.

¿Por qué mi bot dice «La aplicación no ha respondido»?

Discord espera solo 3 segundos la primera respuesta a un comando con barra, y la IA tarda más. Hay que avisar antes de que va a tardar (interaction.response.defer) y contestar después con interaction.followup.send, como en el código de esta guía.

¿Puede contestar cuando lo mencionan, sin comando?

Sí, leyendo los mensajes con on_message, pero entonces el bot necesita «Message Content Intent», que se activa en la pestaña «Bot» del portal de desarrolladores (y en el código, intents.message_content = True). Con el comando /pregunta no hace falta.

¿Cuánta RAM necesita un bot de Discord con IA?

Poca: la IA funciona en los servidores del proveedor, no en el tuyo. Un bot como el de esta guía va de sobra en 256 MB.

¿Te ha servido esta guía?

¿Lo montamos?

Hosting de bots de Discord desde 1,50 € al mes, sin sobreventa: tu RAM es solo tuya. Y si quieres empezar sin pagar, tienes un bot de Discord gratis, sin tarjeta.

Sigue leyendo

Todas las guías de Bots de Discord, ordenadas →