Skip to main content

fsm for people

Project description

StateManager - fsm for people

Convenient FSM implementation for telegram/vk

Russian version


Installation

Supports python3.8+

Library only

pip install state-manager

Library and vkwave

pip install state-manager[vk]

Library and aiogram

pip install state-manager[telegram]

Full installation

pip install state-manager[full]

Examples

VkWave

from vkwave.bots import SimpleLongPollBot
import logging
from state_manager import VkWaveMainRouter, VkWaveStateManager

logging.basicConfig(level=logging.INFO)

bot = SimpleLongPollBot(tokens="your token", group_id=123123,)
main_state = VkWaveMainRouter(bot)

@main_state.message_handler()
async def home(event: bot.SimpleBotEvent, state_manager: VkWaveStateManager):
    await event.answer("go to home2")
    await state_manager.set_next_state("home2")

@main_state.message_handler()
async def home2(event: bot.SimpleBotEvent, state_manager: VkWaveStateManager):
    await event.answer("go to home")
    await state_manager.back_to_pre_state()

main_state.install()
bot.run_forever(ignore_errors=True)

Aiogram

import logging
from aiogram import Bot, Dispatcher, executor, types
from state_manager import AiogramStateManager
from state_manager.routes.aiogram import AiogramMainRouter

logging.basicConfig(level=logging.INFO)

bot = Bot(token='your token')
dp = Dispatcher(bot)
main_state = AiogramMainRouter(dp)
main_state.install()

@main_state.message_handler()
async def home(msg: types.Message, state_manager: AiogramStateManager):
    await msg.answer("go to home2")
    await state_manager.set_next_state("home2")

@main_state.message_handler()
async def home2(msg: types.Message, state_manager: AiogramStateManager):
    await msg.answer("go to home")
    await state_manager.set_next_state("home")

executor.start_polling(dp, skip_updates=True)

more examples

Storage

The library currently supports:

  • RedisStorage
  • MemoryStorage

If you do not pass arguments to install, Redis Storage is used, which takes the settings from env.

Settings:

  • storage_dsn, default: "redis://localhost:6379"
  • storage_ssl, default: None
  • storage_db: default: None
  • pool_size: default: 10
  • storage_timeout: default: 5

Filters

The library supports out of the box:

  • text_filter
  • text_contains_filter
  • regex_filter

You can also write your filters. aiogram, vkwave

Architecture

Search state in routers

alt text


Router architecture

alt text

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

state_manager-0.2.0.tar.gz (13.3 kB view details)

Uploaded Source

File details

Details for the file state_manager-0.2.0.tar.gz.

File metadata

  • Download URL: state_manager-0.2.0.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.8

File hashes

Hashes for state_manager-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3d0d4b6b3bfa3a9dea6d329febe35d4be6162f658cdc232807ec5281c79c9bba
MD5 f213d6bfe55d96643a1bf118dbb4caa9
BLAKE2b-256 a314b5dcbf35233a75259567ee0671b72fa7f4c129e9d5bdaac6364997a9f6fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page