Créer un bot Telegram en Swift : de l'idée au déploiement

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bot Telegram en Swift : guide pas à pas pour les audacieux

\n\n

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

Pourquoi Swift pour un bot Telegram ? Brisons les stéréotypes

\n\n

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

Nous 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\n
brew install vapor
\n\n

Après l'installation, vérifions la version :

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

Tu vois un numéro de version ? Parfait. Créons maintenant un nouveau projet :

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

Le 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é.

\n\n

Étape 2 : Connexion à Telegram Bot API

\n\n

Pour 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 :

\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

Maintenant, 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.

\n\n

Étape 3 : Écrire notre premier bot en Swift

\n\n

Ouvre le fichier Sources/App/configure.swift. C'est le point d'entrée. Écrivons la structure de base :

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

Blogs

Book Recommendations