Arbeiten mit Datum und Uhrzeit in JavaScript: Fortgeschrittenes Niveau

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum Go die ideale Wahl für Chat-Bots ist

\n\n

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

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

Was werden wir bauen?

\n\n

Unser Go-Bot wird in der Lage sein:

\n
    \n
  • Auf den Befehl /start mit 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
\n\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\n

Schritt 1: Einrichtung der Umgebung

\n\n

Stellen Sie sicher, dass Go installiert ist (Version 1.21+). Sie können dies mit dem Befehl überprüfen:

\n\n
go version
\n\n

Erstellen Sie ein neues Verzeichnis für das Projekt und initialisieren Sie das Modul:

\n\n
mkdir go-chat-bot\ncd go-chat-bot\ngo mod init github.com/yourname/go-chat-bot
\n\n

Sie benötigen einen Bot-Token. Falls Sie noch keinen haben:

\n
    \n
  1. Schreiben Sie Telegram an @BotFather.
  2. \n
  3. Senden Sie den Befehl /newbot und folgen Sie den Anweisungen.
  4. \n
  5. Kopieren Sie den erhaltenen Token (er sieht so aus: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11).
  6. \n
\n\n

Speichern Sie den Token in einer Umgebungsvariable (speichern Sie Tokens niemals im Code!):

\n\n
export BOT_TOKEN="your_token_here"
\n\n

Schritt 2: Grundlegende Bot-Struktur in Go

\n\n

Erstellen 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.

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

Blogs

Buchempfehlungen