¿Por qué C# es una excelente opción para un bot de Telegram?
\n\nSi hasta ahora pensabas que los bots de Telegram solo se escriben en Python o JavaScript, prepárate para sorprenderte. C# con su tipado fuerte, enorme ecosistema y velocidad de trabajo es un verdadero "peso pesado" para crear bots. Imagina: escribes el código una vez y el bot funciona durante años sin fallos, procesando miles de mensajes por segundo. Suena tentador, ¿verdad?
\n\nEn esta guía crearemos un bot de Telegram en C# desde cero. Aprenderás cómo registrar el bot en BotFather, conectar la librería Telegram.Bot y escribir código funcional con manejo de comandos. Sin rodeos: solo práctica y ejemplos reales.
¿Qué necesitamos?
\n\nAntes de empezar, asegúrate de tener:
\n- \n
- .NET SDK (versión 6.0 o superior) — se puede descargar desde el sitio oficial; \n
- Visual Studio o VS Code (cualquier IDE donde te sientas cómodo); \n
- Una cuenta en Telegram — sin ella no hay manera; \n
- 5 minutos de tiempo libre — el resto lo hará C#. \n
¿Listo? ¡Vamos!
\n\nPaso 1. Obtenemos el token del bot a través de BotFather
\n\nAntes de escribir código, necesitamos "crear" al bot. Abre Telegram y busca @BotFather — es el principal "creador de bots" en Telegram.
\n\n- \n
- Escribe el comando
/newbot. \n - Inventa un nombre para el bot (por ejemplo, MyFirstCSharpBot). \n
- Inventa un username (obligatoriamente debe terminar en bot, por ejemplo MyFirstCSharpBot). \n
- Obtén el token — una cadena larga como
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. \n
Importante: el token es la clave de acceso a tu bot. No se lo muestres a nadie ni lo publiques en código abierto. Es mejor guardarlo en appsettings.json o en variables de entorno.
Paso 2. Creamos el proyecto e instalamos la librería
\n\nAbre la terminal y ejecuta los comandos:
\n\ndotnet new console -n TelegramBotCSharp\ncd TelegramBotCSharp\ndotnet add package Telegram.Bot\n\nUsamos la librería Telegram.Bot — es la librería más popular y mantenida para trabajar con la API de Telegram en C#. Ella se encarga de todo el "trabajo sucio": conexión al servidor, procesamiento de actualizaciones, envío de mensajes.
\n\nDespués de la instalación, abre el archivo Program.cs — aquí escribiremos la magia.
Paso 3. Escribimos el código base del bot
\n\nEmpecemos con lo más simple: el bot responderá a los comandos /start y /help. Aquí tienes el código funcional mínimo:
using Telegram.Bot;\nusing Telegram.Bot.Exceptions;\nusing Telegram.Bot.Polling;\nusing Telegram.Bot.Types;\nusing Telegram.Bot.Types.Enums;\n\nvar botClient = new TelegramBotClient("TU_TOKEN_AQUÍ");\n\nusing var cts = new CancellationTokenSource();\n\nvar receiverOptions = new ReceiverOptions\n{\n AllowedUpdates = Array.Empty<UpdateType>() // 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 Enter para detener.");\nConsole.ReadLine();\ncts.Cancel();\n\nasync Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)\n{\n if (update.Message is not { } message)\n return;\n if (message.Text is not { } messageText)\n return;\n\n var chatId = message.Chat.Id;\n Console.WriteLine($"Mensaje recibido '{messageText}' de {chatId}");\n\n if (messageText == "/start")\n {\n await botClient.SendTextMessageAsync(\n chatId: chatId,\n text: "