Skip to main content

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

Metadata

Release files for state-manager 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for state-manager 0.2.0
File Size Uploaded
state_manager-0.2.0.tar.gz 13.3 kB Details

Release files / state_manager-0.2.0.tar.gz

Download URL state_manager-0.2.0.tar.gz
Size 13.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3d0d4b6b3bfa3a9dea6d329febe35d4be6162f658cdc232807ec5281c79c9bba
BLAKE2b-256 checksum
How to use checksums
a314b5dcbf35233a75259567ee0671b72fa7f4c129e9d5bdaac6364997a9f6fe
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page