Warum Go die ideale Wahl für Chat-Bots ist
\n\nWenn Sie jemals einen Chat-Bot in Python geschrieben haben, wissen Sie: Es funktioniert. Aber wenn die Last auf Tausende von Anfragen pro Sekunde steigt, fängt Python an zu "denken". Go (oder Golang) wurde entwickelt, um nicht zu denken – es macht einfach. Hohe Leistung, integrierte Netzwerkfunktionen, Goroutinen (leichtgewichtige Threads) und minimaler Speicherverbrauch machen Go zur besten Sprache für die Erstellung hochbelastbarer Chat-Bots.
\n\nIn diesem Leitfaden erstellen wir einen vollwertigen Telegram-Bot in Go, der Befehle verarbeitet, mit der API arbeitet und sich leicht skalieren lässt. Sie erhalten nicht nur Theorie, sondern sofort ausführbaren Code, den Sie in 5 Minuten starten können.
\n\nWas werden wir bauen?
\n\nUnser Go-Bot wird in der Lage sein:
\n- \n
- Auf den Befehl
/startmit einer Begrüßung zu antworten. \n - Textnachrichten zu akzeptieren und in Großbuchstaben zurückzugeben (ein Echo-Bot mit "Charakter"). \n
- Fehler zu behandeln und Aktionen zu protokollieren. \n
- Über die Telegram Bot API zu arbeiten (das häufigste Szenario für Chat-Bots). \n
Der gesamte Code wird in reinem Go ohne Drittanbieter-Bibliotheken geschrieben (nur die Standardbibliothek und der HTTP-Client), damit Sie verstehen, wie alles "unter der Haube" funktioniert.
\n\nSchritt 1: Einrichtung der Umgebung
\n\nStellen Sie sicher, dass Go installiert ist (Version 1.21+). Sie können dies mit dem Befehl überprüfen:
\n\ngo version\n\nErstellen Sie ein neues Verzeichnis für das Projekt und initialisieren Sie das Modul:
\n\nmkdir go-chat-bot\ncd go-chat-bot\ngo mod init github.com/yourname/go-chat-bot\n\nSie benötigen einen Bot-Token. Falls Sie noch keinen haben:
\n- \n
- Schreiben Sie Telegram an @BotFather. \n
- Senden Sie den Befehl
/newbotund folgen Sie den Anweisungen. \n - Kopieren Sie den erhaltenen Token (er sieht so aus:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11). \n
Speichern Sie den Token in einer Umgebungsvariable (speichern Sie Tokens niemals im Code!):
\n\nexport BOT_TOKEN="your_token_here"\n\nSchritt 2: Grundlegende Bot-Struktur in Go
\n\nErstellen Sie eine Datei main.go. Wir beginnen mit einem einfachen HTTP-Server, der Updates von Telegram empfängt. Go ist dafür dank des integrierten net/http-Pakets ideal.
package main\n\nimport (\n "encoding/json"\n "fmt"\n "io"\n "log"\n "net/http"\n "os"\n "strings"\n)\n\n// Update — Struktur für eingehende Updates von Telegram\ntype Update struct {\n UpdateID int `json:"update_id"`\n Message struct {\n Text string `json:"text"`\n Chat struct {\n ID int64 `json:"id"`\n } `json:"chat"`\n } `json:"message"`\n}\n\nfunc main() {\n botToken := os.Getenv("BOT_TOKEN")\n if botToken == "" {\n log.Fatal("BOT_TOKEN not set")\n }\n\n http.HandleFunc("/webhook", func(w http.ResponseWriter, r *http.Request) {\n handleWebhook(w, r, botToken)\n })\n\n log.Println("Bot started on :8080")\n log.Fatal(http.ListenAndServe(":8080", nil))\n}\n\nfunc handleWebhook(w http.ResponseWriter, r *http.Request, token string) {\n body, err := io.ReadAll(r.Body)\n if err != nil {\n log.Printf("Error reading request body: %v", err)\n http.Error(w, "Bad Request", http.StatusBadRequest)\n return\n }\n defer r.Body.Close()\n\n var update Update\n if err := json.Unmarshal(body, &update); err != nil {\n log.Printf("Error parsing JSON: %v", err)\n http.Error(w, "Bad JSON", http.StatusBadRequest)\n return\n }\n\n // Wenn die Nachricht leer ist – ignorieren\n if update.Message.Text == "" {\n return\n }\n\n log.Printf("Received message: %s", update.Message.Text)\n\n // Antwort formulieren\n var replyText string\n if strings.HasPrefix(update.Message.Text, "/start") {\n replyText = "Hello! I am a bot in Go. Write"\n