Erstellen eines Chatbots in Swift: Von der Idee bis zum ersten Dialog

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 Swift eine ausgezeichnete Wahl für einen Chatbot ist?

\n

Wenn es um die Erstellung von Chatbots geht, denken viele sofort an Python oder JavaScript. Und das ist logisch: Dort gibt es jede Menge fertige Bibliotheken und Beispiele. Aber was, wenn Ihr Stack das Apple-Ökosystem ist? Oder Sie möchten einen Bot erstellen, der direkt auf einem Vapor-Server läuft? Oder vielleicht möchten Sie einfach Swift außerhalb der iOS-Entwicklung ausprobieren?

\n

Swift ist nicht nur eine schöne Syntax und Typsicherheit. Es bietet auch blitzschnelle Geschwindigkeit, hervorragende Netzwerkfähigkeiten und leistungsstarke Werkzeuge für die Datenanalyse. In diesem Artikel werden wir nicht schon wieder einen "Hallo-Welt"-Bot schreiben. Wir werden Schritt für Schritt einen vollwertigen Telegram-Bot in Swift zusammenbauen, der Befehle beantworten, Textnachrichten verarbeiten und JSON parsen kann. Los geht's!

\n\n

Was brauchen wir?

\n

Bevor wir in den Code eintauchen, lassen Sie uns die Werkzeuge klären. Für unser Projekt verwenden wir:

\n
    \n
  • Swift 5.9+ — die neueste stabile Version.
  • \n
  • Foundation — die integrierte Bibliothek für Netzwerk- und JSON-Arbeit.
  • \n
  • Telegram Bot API — die REST-API, die wir ansprechen müssen.
  • \n
  • SwiftBot-Bibliothek — ein leichtgewichtiger Wrapper für die Arbeit mit Telegram (oder wir schreiben unseren eigenen minimalen Client).
  • \n
\n

Wenn Sie den Weg der maximalen Kontrolle gehen möchten, verwenden wir nur die Standardwerkzeuge von Foundation. Keine externen Abhängigkeiten – nur reines Swift.

\n\n

Schritt 1: Bot bei BotFather registrieren

\n

Dies ist der einfachste Schritt. Öffnen Sie Telegram, suchen Sie BotFather, schreiben Sie /newbot und folgen Sie den Anweisungen. Als Ergebnis erhalten Sie einen Token – eine lange Zeichenfolge wie 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Speichern Sie ihn in einer Umgebungsvariable oder einer Konfigurationsdatei. Nähen Sie den Token niemals direkt in den Code, wenn Sie vorhaben, das Projekt auf GitHub zu veröffentlichen.

\n

Der Token ist der Zugangsschlüssel zu Ihrem Bot. Über ihn senden wir Anfragen an die Telegram API.

\n\n

Schritt 2: Struktur für die Arbeit mit der API erstellen

\n

Zuerst müssen wir einen einfachen HTTP-Client schreiben. Die Telegram API arbeitet mit GET- und POST-Anfragen. Wir verwenden URLSession – das Standardwerkzeug von Swift für die Netzwerkarbeit.

\n\n

Basisklasse BotClient erstellen

\n
import Foundation\n\nclass BotClient {\n    private let token: String\n    private let baseURL = "https://api.telegram.org/bot"\n    \n    init(token: String) {\n        self.token = token\n    }\n    \n    // Methode zum Senden von Anfragen\n    private func sendRequest(method: String, parameters: [String: Any] = [:], completion: @escaping (Data?, Error?) -> Void) {\n        let urlString = "\\(baseURL)\\(token)/\\(method)"\n        guard let url = URL(string: urlString) else {\n            completion(nil, NSError(domain: "Invalid URL", code: -1))\n            return\n        }\n        \n        var request = URLRequest(url: url)\n        request.httpMethod = "POST"\n        request.setValue("application/json", forHTTPHeaderField: "Content-Type")\n        \n        if !parameters.isEmpty {\n            request.httpBody = try? JSONSerialization.data(withJSONObject: parameters)\n        }\n        \n        let task = URLSession.shared.dataTask(with: request) { data, response, error in\n            completion(data, error)\n        }\n        task.resume()\n    }\n    \n    // Updates abrufen (neue Nachrichten)\n    func getUpdates(offset: Int? = nil, completion: @escaping ([Update]?) -> Void) {\n        var params: [String: Any] = [:]\n        if let offset = offset {\n            params["offset"] = offset\n        }\n        \n        sendRequest(method: "getUpdates", parameters: params) { data, error in\n            guard let data = data else {\n                completion(nil)\n                return\n            }\n            \n            do {\n                let response = try JSONDecoder().decode(TelegramRespons                

Blogs

Buchempfehlungen