Bot Telegram en Swift : guide pas à pas pour les audacieux
\n\nBonjour développeur ! Si tu penses que les bots Telegram ne s'écrivent qu'en Python ou JavaScript, j'ai une nouvelle pour toi. Swift, que tu aimes tant pour son élégance et ses performances, est parfaitement adapté au développement serveur. Oui, oui, ce même Swift avec lequel tu écris des applications iOS peut aussi fonctionner en backend. Dans ce guide, nous allons créer un bot Telegram en Swift à partir de zéro, en utilisant Vapor, un puissant framework web. Le bot répondra aux commandes, traitera les messages et enverra même des images. C'est parti !
\n\nPourquoi Swift pour un bot Telegram ? Brisons les stéréotypes
\n\nAvant de plonger dans le code, voyons pourquoi écrire un bot en Swift. Premièrement, si tu es développeur iOS, tu connais déjà le langage. Pas besoin d'apprendre Python ou JS à partir de zéro. Deuxièmement, Swift offre la sécurité des types et la rapidité. Le bot fonctionnera vite et sans surprises. Troisièmement, l'écosystème Vapor permet une intégration facile avec les bases de données, l'envoi de notifications et même l'analyse JSON. Et oui, Telegram Bot API fonctionne parfaitement avec Swift. L'essentiel est de bien configurer l'environnement.
\n\nÉtape 1 : Préparation de l'environnement
\n\nNous aurons besoin de Xcode (version minimale 14), Homebrew et Vapor. Si tu as déjà Xcode, parfait. Sinon, télécharge-le depuis le Mac App Store. Maintenant, installons Vapor :
\n\nbrew install vapor\n\nAprès l'installation, vérifions la version :
\n\nvapor --version\n\nTu vois un numéro de version ? Parfait. Créons maintenant un nouveau projet :
\n\nvapor new TelegramBotSwift --template web\ncd TelegramBotSwift\n\nLe flag --template web crée une structure d'application serveur. Si tu préfères le minimalisme, utilise --template api. Nous suivrons la voie de l'application web pour plus de flexibilité.
Étape 2 : Connexion à Telegram Bot API
\n\nPour travailler avec Telegram, nous avons besoin d'une bibliothèque. Plusieurs options existent : TelegramBotSDK de Vapor, SwiftTelegramBot ou des requêtes HTTP brutes. Je recommande TelegramBotSDK : il est stable et bien documenté. Ajoutons-le dans Package.swift :
// 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\nMaintenant, obtenons un token pour le bot. Ouvre Telegram, trouve BotFather, écris /newbot, suis les instructions. Garde le token – tu en auras besoin dans une minute.
Étape 3 : Écrire notre premier bot en Swift
\n\nOuvre le fichier Sources/App/configure.swift. C'est le point d'entrée. Écrivons la structure de base :
import Vapor\nimport TelegramBotSDK\n\npublic func configure(_ app: Application) throws {\n // Récupérer le token depuis les variables d'environnement\n guard let token = Environment.get("TELEGRAM_BOT_TOKEN") else {\n fatalError("TELEGRAM_BOT_TOKEN non trouvé")\n }\n \n // Initialiser le bot\n let bot = TelegramBot(token: token, app: app)\n \n // Gestionnaire de la commande /start\n bot.onCommand("start") { context in\n try await context.sendMessage("Bonjour ! Je suis un bot en Swift. Comment puis-je t'aider ?")\n }\n \n // Gestionnaire de la commande /help\n bot.onCommand("help") { context in\n try await context.sendMessage("Commandes disponibles :\\n/start - démarrer\\n/help - aide\\n/echo [texte] - répéter le message")\n }\n \n // Gestionnaire de la commande /echo\n