Tu primer chatbot en C#: desde la idea hasta un asistente funcional
\n\n¿Alguna vez has querido crear tu propio asistente inteligente? No uno que solo responda «Hola», sino un bot real que pueda pedir una pizza, recordarte una reunión o moderar un chat. La buena noticia: no necesitas ser un gurú del aprendizaje automático. Basta con saber C# y tener un par de tardes libres.
\n\nEn este artículo, analizaremos cómo escribir un chatbot en C# desde cero. Sin magia, solo código claro, arquitectura correcta y consejos prácticos. Aprenderás cómo conectarte a la Telegram Bot API, procesar comandos y construir diálogos. ¡Allá vamos!
\n\n¿Por qué C# es ideal para chatbots?
\n\nMuchos piensan que los bots solo se escriben en Python o JavaScript. Pero C# es una herramienta potente y subestimada para esta tarea. He aquí por qué:
\n\n- \n
- Tipado fuerte — detectarás errores en la compilación, no en producción. \n
- Async/await — el bot debe manejar miles de solicitudes simultáneamente. C# lo hace de maravilla. \n
- Ecosistema .NET — bibliotecas listas para Telegram, Discord, Slack e incluso protocolos propios. \n
- Rendimiento — .NET Core / .NET 8 funciona rápido y consume poca memoria. \n
Si ya programas en C#, estás a medio camino de crear un chatbot profesional. Y si no, es una excelente razón para empezar.
\n\nPlanificando la arquitectura: para que el bot no se rompa el primer día
\n\nAntes de escribir código, pensemos cómo estará estructurado nuestro chatbot en C#. Una mala arquitectura es la causa del 90% de los problemas. La buena noticia: para un bot simple, bastan tres componentes:
\n\n- \n
- Cliente API — se comunica con el mensajero (Telegram, VK, Discord). \n
- Manejador de comandos — analiza los mensajes y decide qué hacer. \n
- Lógica — las funciones en sí: búsqueda, cálculos, consultas a la base de datos. \n
Usaremos el patrón Chain of Responsibility (cadena de responsabilidad) para manejar comandos. Es flexible y fácil de ampliar. Añadir un nuevo comando: 5 minutos.
\n\nPreparación: qué necesitas instalar
\n\nPara trabajar necesitaremos:
\n- \n
- .NET SDK 8.0 o superior — descárgalo desde el sitio oficial. \n
- Cualquier IDE: Visual Studio, Rider o VS Code. \n
- Una cuenta en Telegram (para pruebas). \n
Crea un nuevo proyecto:
\ndotnet new console -n MyTelegramBot\ncd MyTelegramBot\ndotnet add package Telegram.Bot\n\nLa biblioteca Telegram.Bot es la más popular para C#. Cubre completamente la API de Telegram y cuenta con soporte activo.
\n\nObteniendo el token del bot
\n\nEntra en Telegram, busca a @BotFather y ejecuta el comando /newbot. Sigue las instrucciones. Al final, obtendrás un token, una cadena secreta como esta:
1234567890:ABCdefGHIjklmNOPqrstUVwxyz-1234567\n\nImportante: nunca publiques el token en un lugar público. Usa variables de entorno o archivos de configuración.
\n\nEscribiendo el código: conectándonos a Telegram
\n\nEmpecemos con lo más simple: un bot que responda «¡Hola!» a cualquier mensaje.
\n\nusing Telegram.Bot;\nusing Telegram.Bot.Types;\nusing Telegram.Bot.Polling;\n\nvar botClient = new TelegramBotClient("TU_TOKEN");\n\nusing var cts = new CancellationTokenSource();\n\nvar receiverOptions = new ReceiverOptions\n{\n AllowedUpdates = { } // recibimos todos los tipos de actualizaciones\n};\n\nbotClient.StartReceiving(\n updateHandler: HandleUpdateAsync,\n pollingErrorHandler: HandlePollingErrorAsync,\n receiverOptions: receiverOptions,\n cancellationToken: cts.Token\n);\n\nConsole.WriteLine("Bot iniciado. Presiona cualquier tecla para detener.");\nConsole.ReadKey