Přejít na hlavní obsah

Vytvoření stavového stroje v rámci knihovny aiogram

Vytváření stavových strojů je jedním z klíčových úkolů při vývoji chatbotů. Stavové stroje vám umožňují spravovat dialogy s uživatelem, ovládat sekvenci otázek a odpovědí a zpracovávat různé příkazy a události. V tomto článku se podíváme na to, jak vytvořit stavový stroj pomocí knihovny aiogram.

aiogram je jednou z nejoblíbenějších knihoven pro vývoj chatbotů na platformě Telegram. Má širokou funkčnost a snadno použitelné API. Vytváření stavového stroje pomocí aiogram umožňuje výrazně zjednodušit proces vývoje a podpory chatbota.

Hlavními prvky stavového stroje v aiogramu jsou Handlery - funkce, které jsou vyvolány za určitých podmínek. Handleři mohou zpracovávat textové zprávy, příkazy, vestavěné klávesnice a dokonce i události související s robotem. Každý Handler má určitý stav, který ukládá informace o aktuálním stavu dialogu s uživatelem.

Chcete-li vytvořit stavový stroj s aiogram, musíte identifikovat hendlery a stavy, nastavit pravidla pro přechody mezi stavy a připoutat hendlery ke konkrétním stavům. Je také třeba vzít v úvahu možnost chyb a nečekaných situací. V článku se podíváme na příklad vytvoření jednoduchého stavového stroje aiogram a implementaci přechodů mezi stavy.

Co je stavový stroj?

Stavový stroj, také známý jako stavový automat nebo konečný automat, je model, který může být v daném časovém okamžiku v jednom z několika stavů.

Při vývoji chatbotů umožňuje stavový stroj logicky uspořádat chování robota a určit jeho stav v reakci na vlastní dotazy. Každý stav může mít svůj vlastní soubor pravidel a činností, které se provádějí, když je robot v daném stavu.

Stavový stroj lze například použít k vytvoření jednoduchého chatbota pro zpracování objednávek v online obchodě. Bot může mít stavy "čekání na objednávku", "čekání na doručovací adresu"a" čekání na potvrzení". V každém z těchto stavů může bot vyzvat uživatele, aby zadal příslušné informace a provedl určité kroky, jako je přidání zboží do košíku nebo odeslání oznámení o potvrzení objednávky.

Použití stavového stroje pomáhá učinit kód strukturovanějším a umožňuje vývojářům snadno přidávat a měnit funkčnost robota, aniž by se změnila celá logika chování.

Místo psaní velkého počtu podmíněných operátorů a větví stavový stroj navrhuje vytvořit samostatné třídy nebo funkce pro každý stav, což usnadňuje čtení a pochopení kódu.

aiogram: základy

Hlavní komponenty aiogram jsou:

  • Bot - základní třída, která poskytuje přístup k funkcím robotického API;
  • Dispatcher - třída zpracovávající příchozí zprávy a volající příslušné obslužné rutiny;
  • Handlers - funkce, které zpracovávají příchozí zprávy nebo příkazy;
  • States - stavový stroj, který umožňuje spravovat stav uživatele během dialogu s robotem;
  • Filters - filtry, které vám umožní vybrat zprávy, které budou zpracovány konkrétní obslužnou rutinou;
  • Middleware - třídy, které umožňují provádět určité činnosti před / po zpracování zpráv;
  • Types - třídy popisující všechny možné typy objektů Telegram API.

Pomocí aiogram můžete vytvářet roboty, kteří zvládnou textové zprávy, příkazy, inline tlačítka, klávesnici a další prvky Telegram API. Framework poskytuje široké možnosti pro práci s mnoha uživateli současně a také pro ukládání dat o stavech různých uživatelů.

Chcete-li vytvořit stavový stroj pomocí aiogram, musíte určit stavy a přechody mezi nimi. V každém stavu lze nastavit obslužné rutiny pro určité typy zpráv nebo příkazů. Stavový stroj umožňuje spravovat dialog s uživatelem, ukládat a přenášet informace mezi stavy a také zpracovávat neočekávané nebo nesprávné akce uživatele.

aiogram dává vývojářům možnost vytvářet složité a interaktivní roboty, kteří mohou efektivně komunikovat s uživateli a reagovat na jejich akce. Framework poskytuje praktické nástroje pro správu stavů a zpracování zpráv, díky čemuž je vývoj telegramových robotů rychlý a spolehlivý.

Krok 1: Instalace a konfigurace aiogram

1. Instalace aiogram

K instalaci aiogram stačí spustit následující příkaz na příkazovém řádku:

pip install aiogram

2. Vytvoření robota v telegramu

Pro práci s aiogram je nutné mít Token robota. Chcete-li vytvořit robota a získat jeho Token, postupujte podle pokynů v oficiální dokumentaci telegramu.

3. Nastavení aiogram

Po úspěšné instalaci aiogram a získání tokenu robota je nutné provést jeho konfiguraci. Chcete-li to provést, vytvořte nový soubor Pythonu s příponou. py a přidejte následující kód:

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

Nahraďte 'TOKEN_BOTA' skutečným tokenem vašeho robota získaným v předchozím kroku.

Po provedení těchto kroků bude aiogram plně nainstalován a nakonfigurován tak, aby fungoval s vaším Telegramovým robotem. V následujících krocích se podíváme na vytvoření stavového stroje pro robota pomocí aiogram.

Krok 2: vytváření stavů

Po vytvoření robota v aiogramu je nutné určit stavy, které budou použity ve stavovém stroji. Stavy umožňují určit, v jaké fázi je interakce robota s uživatelem.

Každý stav je samostatná třída, která se dědí ze základní třídy State. Ve stavové třídě jsou definovány metody pro zpracování příchozích zpráv a přechod do následujícího stavu.

Při vytváření stavové třídy je nutné určit metody enter a exit. Metoda enter je způsoben přechodem na tento stav a metoda exit je způsoben odchodem z tohoto stavu. V těchto metodách lze přidat potřebné kroky, jako je odesílání zpráv uživateli nebo aktualizace databáze.

Lze také určit metody pro zpracování příchozích zpráv. Například metoda process_message zavolá se, když bot obdrží novou zprávu od uživatele. V rámci metody je možné analyzovat text zprávy a provést příslušné kroky.

Po určení stavové třídy jej lze přidat do stavového stroje. Chcete-li to provést, musíte vytvořit instanci třídy stavového stroje a vyvolat metodu add_state tím, že jako argument předáte instanci stavové třídy.

Definice stavů je tedy důležitým krokem při vytváření stavového stroje v aiogram. Umožňují určit, jaké činnosti robot provede v každé fázi práce s uživatelem.

Krok 3: Správa stavů

Chcete-li vytvořit stavový stroj pomocí knihovny aiogram, musíte nakonfigurovat správu stavů uživatelské interakce. Každý stav bude zodpovědný za určitou fázi dialogu s uživatelem.

Nejprve identifikujeme všechny možné stavy, které se mohou vyskytnout v našem botě. Mohou to být stavy jako" čekání na zadání jména"," čekání na zadání pošty " atd. pro každý stav bude vytvořen příslušný objekt třídy State .

Poté je třeba určit, jaký stav je pro robota počáteční. To lze provést vytvořením proměnné start_state a přiřazením počátečního stavu.

Dále je nutné pro každý stav určit obslužné rutiny událostí, které budou vyvolány při vstupu do tohoto stavu a při jeho opuštění. Například při přihlášení do stavu "čekání na zadání názvu" můžeme uživatele požádat o zadání jeho jména a při ukončení tohoto stavu uložit zadané jméno do databáze.

Kromě toho by stavový stroj měl vědět, jaký stav bude následující po aktuálním stavu. To lze nastavit pomocí metod next_state a set_next_state . Například po zadání jména může být uživatel vyzván k zadání své pošty a stav se přepne na "čekání na zadání pošty".

Pro pohodlí je možné vytvořit objekt třídy StateMachine, který bude obsahovat všechny stavy a spravovat přechody mezi nimi. Tento objekt lze přenést do návrhu robota aiogram, aby bot věděl, jak spravovat stavy.

Správa stavů v aiogram tedy zahrnuje definování stavů, zadání počátečního stavu, definování obslužných rutin událostí, zadání přechodů mezi stavy a použití objektu StateMachine ke správě stavů.