Bot de Telegram en C#: creamos desde cero en 30 minutos

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é C# es una excelente opción para un bot de Telegram?

\n\n

Si 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\n

En 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.

\n\n

¿Qué necesitamos?

\n\n

Antes 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
\n\n

¿Listo? ¡Vamos!

\n\n

Paso 1. Obtenemos el token del bot a través de BotFather

\n\n

Antes de escribir código, necesitamos "crear" al bot. Abre Telegram y busca @BotFather — es el principal "creador de bots" en Telegram.

\n\n
    \n
  1. Escribe el comando /newbot.
  2. \n
  3. Inventa un nombre para el bot (por ejemplo, MyFirstCSharpBot).
  4. \n
  5. Inventa un username (obligatoriamente debe terminar en bot, por ejemplo MyFirstCSharpBot).
  6. \n
  7. Obtén el token — una cadena larga como 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11.
  8. \n
\n\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.

\n\n

Paso 2. Creamos el proyecto e instalamos la librería

\n\n

Abre la terminal y ejecuta los comandos:

\n\n
dotnet new console -n TelegramBotCSharp\ncd TelegramBotCSharp\ndotnet add package Telegram.Bot
\n\n

Usamos 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\n

Después de la instalación, abre el archivo Program.cs — aquí escribiremos la magia.

\n\n

Paso 3. Escribimos el código base del bot

\n\n

Empecemos con lo más simple: el bot responderá a los comandos /start y /help. Aquí tienes el código funcional mínimo:

\n\n
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: "                

Blogs

Book Recommendations