Creando un bot de Telegram en Swift: de la idea al despliegue

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

Bot de Telegram en Swift: guía paso a paso para valientes

\n\n

¡Hola, desarrollador! Si piensas que los bots de Telegram solo se escriben en Python o JavaScript, tengo una noticia para ti. Swift, que tanto amas por su elegancia y rendimiento, es perfecto para el desarrollo del lado del servidor. Sí, ese mismo Swift con el que escribes aplicaciones para iOS también puede funcionar en el backend. En esta guía crearemos un bot de Telegram en Swift desde cero, usando Vapor, un potente framework web. El bot responderá a comandos, procesará mensajes e incluso enviará imágenes. ¡Vamos allá!

\n\n

¿Por qué Swift para un bot de Telegram? Derribando estereotipos

\n\n

Antes de sumergirnos en el código, analicemos por qué escribir un bot en Swift. En primer lugar, si eres desarrollador iOS, ya conoces el lenguaje. No necesitas aprender Python o JS desde cero. En segundo lugar, Swift es seguridad de tipos y velocidad. El bot funcionará rápido y sin sorpresas. En tercer lugar, el ecosistema de Vapor permite integrarse fácilmente con bases de datos, enviar notificaciones e incluso analizar JSON. Y sí, la Telegram Bot API en Swift funciona perfectamente. Lo principal es configurar correctamente el entorno.

\n\n

Paso 1: Preparación del entorno

\n\n

Necesitaremos Xcode (mínimo versión 14), Homebrew y Vapor. Si ya tienes Xcode, genial. Si no, descárgalo de la Mac App Store. Ahora instalemos Vapor:

\n\n
brew install vapor
\n\n

Después de la instalación, verifica la versión:

\n\n
vapor --version
\n\n

¿Ves el número de versión? Excelente. Ahora creemos un nuevo proyecto:

\n\n
vapor new TelegramBotSwift --template web\ncd TelegramBotSwift
\n\n

La bandera --template web creará un esqueleto de aplicación de servidor. Si prefieres minimalismo, usa --template api. Nosotros seguiremos la ruta de la aplicación web para tener más flexibilidad.

\n\n

Paso 2: Conectamos la Telegram Bot API

\n\n

Para trabajar con Telegram necesitamos una librería. Hay varias opciones: TelegramBotSDK de Vapor, SwiftTelegramBot o solicitudes HTTP puras. Recomiendo TelegramBotSDK porque es estable y está documentado. Agreguémoslo a Package.swift:

\n\n
// swift-tools-version:5.9\nimport PackageDescription\n\nlet package = Package(\n    name: "TelegramBotSwift",\n    platforms: [.macOS(.v12)],\n    dependencies: [\n        .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),\n        .package(url: "https://github.com/vapor/telegram-bot-sdk.git", from: "2.0.0")\n    ],\n    targets: [\n        .executableTarget(\n            name: "App",\n            dependencies: [\n                .product(name: "Vapor", package: "vapor"),\n                .product(name: "TelegramBotSDK", package: "telegram-bot-sdk")\n            ]\n        )\n    ]\n)
\n\n

Ahora obtengamos un token para el bot. Abre Telegram, busca a BotFather, escribe /newbot y sigue las instrucciones. Guarda el token; lo necesitarás en un minuto.

\n\n

Paso 3: Escribimos el primer bot en Swift

\n\n

Abre el archivo Sources/App/configure.swift. Este es el punto de entrada. Escribamos la estructura básica:

\n\n
import Vapor\nimport TelegramBotSDK\n\npublic func configure(_ app: Application) throws {\n    // Obtenemos el token de las variables de entorno\n    guard let token = Environment.get("TELEGRAM_BOT_TOKEN") else {\n        fatalError("TELEGRAM_BOT_TOKEN no encontrado")\n    }\n    \n    // Inicializamos el bot\n    let bot = TelegramBot(token: token, app: app)\n    \n    // Manejador del comando /start\n    bot.onCommand("start") { context in\n        try await context.sendMessage("¡Hola! Soy un bot en Swift. ¿En qué puedo ayudarte?")\n    }\n    \n    // Manejador del comando /help\n    bot.onCommand("help") { context in\n        try await context.sendMessage("Comandos disponibles:\\n/start - iniciar\\n/help - ayuda\\n/echo [texto] - repetir mensaje")\n    }\n    \n    // Manejador del comando /echo\n                

Blogs

Book Recommendations