Chatbots en TypeScript: guía completa para crear desde cero

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Por qué TypeScript es la mejor opción para chatbots?

\n\n

Cuando se trata de crear chatbots, muchos desarrolladores piensan inmediatamente en Python o JavaScript. Pero hay un lenguaje que combina la flexibilidad del tipado dinámico con la seguridad de la verificación estática: TypeScript. En esta guía práctica, analizaremos cómo crear chatbots en TypeScript que no solo funcionen de manera estable, sino que también sean fáciles de mantener.

\n\n

TypeScript no es solo una "extensión" de JavaScript. Es una herramienta completa que permite escribir código que es más difícil de romper. Imagina: estás escribiendo un bot para Telegram y, de repente, tu colega pasa a la función no una cadena, sino un número. En JavaScript te enterarías en tiempo de ejecución, cuando el bot se caiga. En TypeScript, el compilador te indicará el error antes de ejecutarlo. ¿No es magia?

\n\n

Por dónde empezar: configuración del entorno

\n\n

Antes de sumergirnos en el código, configuremos el espacio de trabajo. Necesitaremos Node.js (versión 16 o superior) y un gestor de paquetes npm o yarn.

\n\n

Paso 1: Inicialización del proyecto

\n\n
mkdir my-chat-bot\ncd my-chat-bot\nnpm init -y\n
\n\n

Paso 2: Instalación de dependencias

\n\n

Para trabajar con chatbots, usaremos la popular biblioteca telegraf (para Telegram) y discord.js (para Discord). Pero en esta guía nos centraremos en un enfoque universal.

\n\n
npm install typescript @types/node telegraf dotenv\nnpx tsc --init\n
\n\n

El archivo tsconfig.json debe ajustarse un poco: active strict: true e indique outDir: "./dist". Esto hará que el código sea más seguro.

\n\n

Estructura del proyecto para chatbots en TypeScript

\n\n

Una buena arquitectura es la clave del éxito. Así es como recomiendo organizar los archivos:

\n\n
src/\n├── bot/\n│   ├── index.ts          # Punto de entrada\n│   ├── handlers/         # Manejadores de comandos\n│   ├── middleware/        # Manejadores intermedios\n│   └── types/            # Tipos e interfaces\n├── config/\n│   └── index.ts          # Configuración\n└── utils/\n    └── logger.ts         # Registro de logs\n
\n\n

Escribimos el primer chatbot en TypeScript

\n\n

Vamos a crear un bot simple de Telegram que responda al comando /start y a los mensajes de eco.

\n\n

Archivo: src/config/index.ts

\n\n
import dotenv from 'dotenv';\ndotenv.config();\n\nexport const config = {\n  BOT_TOKEN: process.env.BOT_TOKEN || '',\n  PORT: parseInt(process.env.PORT || '3000')\n};\n
\n\n

Archivo: src/bot/index.ts

\n\n
import { Telegraf } from 'telegraf';\nimport { config } from '../config';\nimport { startHandler } from './handlers/start';\nimport { echoHandler } from './handlers/echo';\n\nconst bot = new Telegraf(config.BOT_TOKEN);\n\n// Registramos los manejadores\nbot.start(startHandler);\nbot.on('text', echoHandler);\n\n// Iniciamos el bot\nbot.launch()\n  .then(() => console.log('¡Bot iniciado!'))\n  .catch((err) => console.error('Error de inicio:', err));\n\n// Graceful shutdown\nprocess.once('SIGINT', () => bot.stop('SIGINT'));\nprocess.once('SIGTERM', () => bot.stop('SIGTERM'));\n
\n\n

Archivo: src/bot/handlers/start.ts

\n\n
import { Context } from 'telegraf';\n\nexport const startHandler = async (ctx: Context) => {\n  const userName = ctx.from?.first_name || 'amigo';\n  await ctx.reply(`¡Hola, ${userName}! Soy un bot en TypeScript. Escríbeme algo.`);\n};\n
\n\n

Archivo: src/bot/handlers/echo.ts

\n\n
import { Context } from 'telegraf';\n\nexport const echoHandler = async (ctx: Context) => {\n  const message = ctx.message?.text || '';\n  await ctx.reply(`Escribiste: "${message}". ¡Genial!`);\n};\n
\n\n

Observa la tipificación: Context de la biblioteca telegraf está completamente tipificado. Esto significa que el IDE te sugerirá todos los métodos y propiedades disponibles. Los chatbots en Ty

Blogs

Book Recommendations