Pourquoi Go est le langage idéal pour les bots Telegram
Si vous avez déjà écrit des bots en Python, vous savez : tout fonctionne jusqu'à ce que vous rencontriez des limites de performance. Go résout ce problème au niveau de l'architecture. Il est rapide, léger et ne nécessite pas d'environnement virtuel. Un bot Telegram en Go n'est pas un simple jouet, mais un service à part entière qui supporte des milliers de requêtes par seconde et consomme très peu de mémoire.
Dans cet article, nous allons créer de zéro un bot en Golang qui répondra aux commandes, traitera les messages et même interagira avec une API externe. Pas de théorie superflue — seulement du code que vous pouvez exécuter immédiatement.
Étape 1 : Préparation de l'environnement
Avant d'écrire un bot Telegram en Go, assurez-vous d'avoir installé Go version 1.20 ou supérieure. Vous pouvez vérifier avec la commande :
go versionSi Go n'est pas installé — téléchargez-le depuis le site officiel. L'installation prend 2 minutes.
Vous aurez également besoin d'un token de bot. Allez dans Telegram, trouvez BotFather et exécutez la commande :
/newbotEntrez le nom et le nom d'utilisateur du bot. Après la création, BotFather vous enverra un token — conservez-le, il sera nécessaire pour vous connecter à l'API Telegram Bot.
Étape 2 : Structure du projet
Créez un dossier pour le projet et initialisez le module :
mkdir my-telegram-botcd my-telegram-botgo mod init my-telegram-botPour travailler avec Telegram, nous utiliserons la bibliothèque tgbotapi — c'est la bibliothèque Go pour Telegram la plus populaire. Installez-la :
go get github.com/go-telegram-bot-api/telegram-bot-api/v5Créez maintenant le fichier main.go. La structure de base sera la suivante :
package main
import ( "log" "os" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5")
func main() { token := os.Getenv("TELEGRAM_BOT_TOKEN") bot, err := tgbotapi.NewBotAPI(token) if err != nil { log.Panic(err) }
bot.Debug = true log.Printf("Bot @%s démarré", bot.Self.UserName)
u := tgbotapi.NewUpdate(0) u.Timeout = 60
updates := bot.GetUpdatesChan(u)
for update := range updates { if update.Message != nil { log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text) msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Bonjour ! Je fonctionne avec Go !") bot.Send(msg) } }}Lancez le bot :
export TELEGRAM_BOT_TOKEN="votre_token"go run main.goÉcrivez au bot dans Telegram — il devrait répondre. Si tout fonctionne, passons à l'étape suivante.
Étape 3 : Traitement des commandes
Répondre simplement « Bonjour » est ennuyeux. Ajoutons le traitement des commandes pour le bot Telegram. Implémentons les commandes /start et /help :
for update := range updates { if update.Message != nil { switch update.Message.Command() { case "start": msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Bienvenue ! Je suis un bot en Go. Utilise /help pour la liste des commandes.") bot.Send(msg) case "help": msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Commandes disponibles :/start - accueil/help - aide/echo - répéter le message") bot.Send(msg) default: msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Commande inconnue. Utilise /help") bot.Send(msg) } }}Maintenant, le bot réagit aux commandes. Mais ce n'est que le début. La véritable force d'un bot Telegram en Golang réside dans ses performances sous forte charge.
Étape 4 : Travail avec une API externe
Ajoutons une fonction utile