Cuando en una reunión surge la idea «vamos a conectar ChatGPT con Telegram», normalmente hay suspiros y preguntas sobre los plazos. En realidad todo es más sencillo de lo que parece. A continuación — dos perspectivas sobre la misma tarea: lista rápida de verificación para los impacientes y guía desarrollada para quienes quieran entender cada tornillo. La información no se duplica: primero la ruta corta, luego la inmersión profunda.
Parte 1. Lista rápida: «de cero a la primera respuesta»
- Obtener la clave de OpenAI. Entrar en platform.openai.com → «API keys» → Create new secret key → guardar OPENAI_API_KEY.
- Crear el bot con @BotFather. Comando /newbot → obtener TELEGRAM_BOT_TOKEN.
- Instalar dependencias.
python -m venv venv && source venv/bin/activate pip install python-telegram-bot openai python-dotenv
- Escribir 30 líneas de código. bot.py mínimo en python-telegram-bot asíncrono v21+ — ver detalles en la parte desarrollada.
- Iniciar polling. python bot.py y comprobar la respuesta en el chat de Telegram.
- Pasar a producción. Docker, webhooks, registro y límites — más adelante en el texto.
Tiempo para completar la lista rápida: 20–30 minutos, si la conexión a Internet es rápida.
Parte 2. Guía detallada con ejemplo de código y despliegue
2.1 ¿Por qué conectar ChatGPT y Telegram?
Telegram — una interfaz universal: multiplataforma, notificaciones instantáneas y muchos chats listos para usar. ChatGPT — un backend versátil para ideas, textos y código. Juntos se convierten en un asistente personal, un generador de ideas para equipos o incluso soporte técnico que responde tickets en segundos.
2.2 Acceso a la API de OpenAI
Registro y creación de la clave — formalidades, pero la clave debe estar protegida. Variables de entorno o un gestor de secretos son tus aliados. Nunca subas sk‑*** a GitHub.
2.3 Registrar el bot en Telegram
/newbot con @BotFather — dos minutos y el token estará en tu bolsillo. Allí también puedes establecer la descripción, el menú de comandos y el avatar.
2.4 Preparar el entorno
Python + venv
python -m venv venv source venv/bin/activate pip install python-telegram-bot openai python-dotenv
Docker‑Compose
version: "3.9"
services:
chatgpt-tg:
image: python:3.12
env_file: .env
volumes: [".:/app"]
working_dir: /app
command: ["python", "bot.py"]
2.5 Bot.py mínimo
import os, asyncio, openai
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
async def start(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("¡Bienvenido! Pregunta lo que quieras.")
async def chat(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
user_msg = update.message.text
resp = await openai.ChatCompletion.acreate(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": user_msg}],
max_tokens=500,
temperature=0.7
)
await update.message.reply_text(resp.choices[0].message.content.strip())
async def main():
app = Application.builder().token(os.getenv("TELEGRAM_BOT_TOKEN")).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, chat))
await app.run_polling()
if __name__ == "__main__":
asyncio.run(main())
2.6 Ejecución y pruebas
export $(grep -v '^#' .env | xargs) # o 'dotenv run -- python bot.py' python bot.py
Abrir el chat con el bot, pulsar Start — el bot responde con texto generado por ChatGPT.
3. Mejoras que facilitarán la vida
| Tarea | Dónde buscar |
|---|---|
| Plantilla lista con soporte para GPT‑4, roles, Redis y Docker | n3d1117/chatgpt‑telegram‑bot |
| Modos avanzados, voz, DALLE, configuración por YAML | father‑bot/chatgpt_telegram_bot |
| Despliegue rápido en la nube (Render/Railway) | Crear tu propia imagen Docker a partir de cualquiera de los repositorios |
3.1 Contexto del diálogo
Almacena los últimos N mensajes en Redis o Postgres y pásalos en messages. El bot empieza a «recordar» la conversación.
3.2 Webhooks en lugar de polling
Polling — sencillo, pero consume tráfico adicional. Con webhooks Telegram envía actualizaciones directamente a tu endpoint. Ejemplo con FastAPI:
@app.post("/webhook")
async def tg_webhook(update: dict):
await application.update_queue.put(Update.de_json(update, application.bot))
return {"ok": True}
Registrar la URL: https://api.telegram.org/bot<TOKEN>/setWebhook?url=<URL>.
3.3 Control de gastos
- Limita max_tokens, la temperature y la longitud del contexto.
- Por defecto usa gpt-3.5-turbo, y gpt‑4o — mediante un comando especial.
- Registra user_id, número de tokens y coste — incluso SQLite ofrece estadísticas claras.
4. Problemas frecuentes y cómo evitarlos
- Proxy/firewall. ¿Servidor en Rusia? Telegram puede requerir SOCKS5; OpenAI necesita salida sin DPI.
- Límite de 4096 caracteres. Divide las respuestas largas o córtalas por párrafos.
- MarkdownV2 y HTML. Escapa caracteres especiales o cambia a ParseMode.HTML.
- Telegram 429. No más de 30 mensajes/s por bot y 1 mensaje/s por chat. Una cola de mensajes soluciona el problema.
- Temperatura del modelo. Para soporte técnico 0.2–0.4, para creatividad 0.7–0.9.
5. Toques finales
Ahora tienes tanto una receta rápida como un libro de cocina detallado para integrar ChatGPT en Telegram. Después puedes añadir roles («traductor», «revisor de código»), generar imágenes con DALL·E o incluso cobrar por el acceso. Lo principal — guarda las claves en secreto y controla los gastos: la IA es una interlocutora talentosa, pero cara si no la limitas.
¡Éxitos en tus experimentos y menos sorpresas en los registros!