Zum Hauptinhalt springen

Erstellen einer Zustandsmaschine in der Aiogram-Bibliothek

Das Erstellen von Zustandsmaschinen ist eine der wichtigsten Aufgaben bei der Entwicklung von Chatbots. Mit Zustandsmaschinen können Sie Konversationen mit dem Benutzer verwalten, die Reihenfolge der Fragen und Antworten steuern und verschiedene Befehle und Ereignisse verarbeiten. In diesem Artikel erfahren Sie, wie Sie eine Zustandsmaschine mit der Aiogram-Bibliothek erstellen.

aiogram ist eine der beliebtesten Bibliotheken für die Entwicklung von Chatbots auf der Telegram-Plattform. Es verfügt über eine breite Funktionalität und eine einfach zu bedienende API. Das Erstellen einer Zustandsmaschine mit Aiogram erleichtert die Entwicklung und Wartung eines Chatbots erheblich.

Die Hauptelemente der Zustandsmaschine im Aiogram sind Handler - Funktionen, die unter bestimmten Bedingungen aufgerufen werden. Handler können Textnachrichten, Befehle, integrierte Tastaturen und sogar botbezogene Ereignisse verarbeiten. Jeder Handler hat einen bestimmten Status, der Informationen über den aktuellen Status des Dialogs mit dem Benutzer speichert.

Um eine Zustandsmaschine mit Aiogram zu erstellen, müssen Sie Handler und Zustände definieren, Regeln für Zustandsübergänge festlegen und Handler an bestimmte Zustände binden. Es ist auch notwendig, die Möglichkeit von Fehlern und unerwarteten Situationen zu berücksichtigen. In diesem Artikel betrachten wir ein Beispiel für die Erstellung einer einfachen Aiogram-Zustandsmaschine und die Implementierung von Übergängen zwischen Zuständen.

Was ist eine Zustandsmaschine?

Eine Zustandsmaschine, auch als Zustandsautomat oder Zustandsautomat bekannt, ist ein Modell, das sich zu einem bestimmten Zeitpunkt in einem von mehreren Zuständen befinden kann.

Bei der Entwicklung von Chatbots ermöglicht die Zustandsmaschine, das Verhalten eines Bot logisch zu organisieren und seinen Status als Reaktion auf Benutzeranfragen zu bestimmen. Jeder Status kann über eine Reihe von Regeln und Aktionen verfügen, die ausgeführt werden, wenn sich der Bot in diesem Status befindet.

Zum Beispiel kann eine Zustandsmaschine verwendet werden, um einen einfachen Chat-Bot zu erstellen, mit dem Bestellungen in einem Online-Shop bearbeitet werden können. Der Bot kann die Status "ausstehende Bestellung", "ausstehende Lieferadresse" und "ausstehende Bestätigung" aufweisen. In jedem dieser Zustände kann der Bot den Benutzer auffordern, relevante Informationen einzugeben und bestimmte Aktionen auszuführen, z. B. das Hinzufügen von Artikeln zum Warenkorb oder das Senden einer Bestellbestätigungsbenachrichtigung.

Die Verwendung einer Zustandsmaschine hilft, den Code strukturierter zu gestalten, und ermöglicht es Entwicklern, die Funktionalität eines Bots einfach hinzuzufügen und zu ändern, ohne die gesamte Verhaltenslogik zu ändern.

Anstatt viele bedingte Anweisungen und Verzweigungen zu schreiben, schlägt die Zustandsmaschine vor, separate Klassen oder Funktionen für jeden Zustand zu erstellen, was das Lesen und Verstehen des Codes erleichtert.

aiogram: grundlagen

Die Hauptkomponenten von Aiogram sind:

  • Bot - Hauptklasse, die Zugriff auf Bot-API-Funktionen gewährt;
  • Dispatcher - eine Klasse, die eingehende Nachrichten verarbeitet und die entsprechenden Handler aufruft;
  • Handlers - funktionen, die eingehende Nachrichten oder Befehle verarbeiten;
  • States - Zustandsmaschine, mit der Sie den Status des Benutzers während des Dialogs mit dem Bot steuern können;
  • Filters - filter, mit denen Sie Nachrichten auswählen können, die von einem bestimmten Handler verarbeitet werden;
  • Middleware - klassen, mit denen bestimmte Aktionen vor/nach der Verarbeitung von Nachrichten ausgeführt werden können;
  • Types - klassen, die alle möglichen Arten von Telegramm-API-Objekten beschreiben.

Mit aiogram können Sie Bots erstellen, die Textnachrichten, Befehle, Inline-Schaltflächen, Tastaturen und andere Elemente der Telegram-API verarbeiten können. Das Framework bietet umfangreiche Möglichkeiten, um mit mehreren Benutzern gleichzeitig zu arbeiten und Statusdaten verschiedener Benutzer zu speichern.

Um eine Zustandsmaschine mit aiogram zu erstellen, müssen Sie die Zustände und Übergänge zwischen ihnen definieren. Sie können in jedem Status Handler für bestimmte Nachrichtentypen oder Befehle angeben. Mit der Zustandsmaschine können Sie den Dialog mit dem Benutzer verwalten, Informationen zwischen den Zuständen speichern und übertragen sowie unerwartete oder falsche Benutzeraktionen verarbeiten.

aiogram gibt Entwicklern die Möglichkeit, komplexe und interaktive Bots zu erstellen, die effektiv mit Benutzern kommunizieren und auf ihre Aktionen reagieren können. Das Framework bietet praktische Tools zum Verwalten von Status und zur Verarbeitung von Nachrichten, wodurch die Entwicklung von Telegram-Bots schnell und zuverlässig erfolgt.

Schritt 1: Aiogram installieren und konfigurieren

1. Installation von Aiogram

Um aiogram zu installieren, führen Sie einfach den folgenden Befehl an der Eingabeaufforderung aus:

pip install aiogram

2. Einen Bot in Telegram erstellen

Für die Arbeit mit Aiogram ist ein Bot-Token erforderlich. Um einen Bot zu erstellen und sein Token zu erhalten, folgen Sie den Anweisungen in der offiziellen Telegram-Dokumentation.

3. Einrichten von Aiogram

Nachdem aiogram erfolgreich installiert und das Bot-Token erhalten wurde, müssen Sie es konfigurieren. Erstellen Sie dazu eine neue Python-Datei mit der Erweiterung .py und fügen Sie den folgenden Code hinzu:

import aiogram# Создание объекта ботаbot = aiogram.Bot(token='ТОКЕН_БОТА')# Создание объекта диспетчераdp = aiogram.Dispatcher(bot)# Запуск ботаaiogram.executor.start_polling(dp)

Ersetzen Sie 'BOT-TOKEN' durch das echte Token Ihres Bot, das Sie im vorherigen Schritt erhalten haben.

Nach Abschluss dieser Schritte wird aiogram vollständig installiert und konfiguriert, um mit Ihrem Telegram-Bot zu arbeiten. In den nächsten Schritten betrachten wir die Erstellung einer Zustandsmaschine für einen Bot mit aiogram.

Schritt 2: Erstellen von Zuständen

Nachdem Sie einen Bot in aiogram erstellt haben, müssen Sie die Zustände bestimmen, die in der Zustandsmaschine verwendet werden sollen. Mit den Zuständen können Sie bestimmen, in welchem Stadium sich die Interaktion des Bot mit dem Benutzer befindet.

Jeder Zustand ist eine separate Klasse, die von der Basisklasse erbt State. Die Statusklasse definiert Methoden zum Verarbeiten eingehender Nachrichten und zum nächsten Status.

Beim Erstellen einer Zustandsklasse müssen Sie Methoden definieren enter und exit. Methode enter wird aufgerufen, wenn Sie zu diesem Zustand wechseln, und die Methode wird aufgerufen exit wird aufgerufen, wenn dieser Zustand beendet wird. Mit diesen Methoden können Sie die erforderlichen Aktionen hinzufügen, z. B. das Senden von Nachrichten an den Benutzer oder das Aktualisieren der Datenbank.

Sie können auch Methoden zum Verarbeiten eingehender Nachrichten definieren. Zum Beispiel die Methode process_message wird aufgerufen, wenn der Bot eine neue Nachricht vom Benutzer erhält. Innerhalb der Methode können Sie den Nachrichtentext analysieren und entsprechende Aktionen ausführen.

Nachdem Sie eine Zustandsklasse definiert haben, können Sie sie der Zustandmaschine hinzufügen. Dazu müssen Sie eine Instanz der Zustandsmaschinenklasse erstellen und die Methode aufrufen add_state durch Übergeben einer Instanz der Zustandsklasse als Argument.

Daher ist die Bestimmung von Zuständen ein wichtiger Schritt beim Erstellen einer Zustandsmaschine in aiogram. Sie ermöglichen es Ihnen zu bestimmen, welche Aktionen der Bot in jeder Phase der Arbeit mit dem Benutzer ausführen wird.

Schritt 3: Verwalten von Zuständen

Um eine Zustandsmaschine mit der Aiogram-Bibliothek zu erstellen, müssen Sie die Zustandsverwaltung für die Benutzerinteraktion konfigurieren. Jeder Status ist für eine bestimmte Phase des Dialogs mit dem Benutzer verantwortlich.

Zuerst definieren wir alle möglichen Zustände, die in unserem Bot auftreten können. Dies können Zustände sein, z. B. "Warten auf Namenseingabe", "Warten auf E-Mail-Eingabe" usw. Für jeden Status wird ein entsprechendes State-Klassenobjekt erstellt.

Sie müssen dann festlegen, welcher Startstatus für den Bot ist. Sie können dies tun, indem Sie die Variable start_state erstellen und ihr einen Anfangszustand zuweisen.

Als nächstes müssen Sie für jeden Status Ereignishandler definieren, die aufgerufen werden, wenn Sie diesen Status eingeben und beenden. Wenn Sie sich beispielsweise in den Status "Warten auf Eingabe eines Namens" anmelden, können Sie den Benutzer auffordern, seinen Namen einzugeben, und wenn Sie diesen Status verlassen, können Sie den eingegebenen Namen in der Datenbank speichern.

Außerdem muss die Zustandsmaschine wissen, welcher Zustand nach dem aktuellen Zustand als nächstes kommt. Dies kann mit den Methoden next_state und set_next_state festgelegt werden. Wenn Sie beispielsweise einen Namen eingegeben haben, werden Sie möglicherweise aufgefordert, ihre E-Mails einzugeben, und der Status wird auf "Warten auf E-Mails" umgeschaltet.

Der Einfachheit halber können Sie ein Objekt der StateMachine-Klasse erstellen, das alle Zustände enthält und die Übergänge zwischen ihnen steuert. Dieses Objekt kann an den Aiogram-Botkonstruktor übergeben werden, damit der Bot weiß, wie er die Zustände verwaltet.

Die Zustandsverwaltung in Aiogram umfasst daher das Definieren von Zuständen, das Festlegen des Startstatus, das Definieren von Ereignishandlern, das Festlegen von Übergängen zwischen Zuständen und die Verwendung eines StateMachine-Objekts zum Verwalten von Zuständen.