# ExGram FSM v0.1.0 - Table of Contents Multi-flow Finite State Machine and conversation state management for ExGram Telegram bots. ## Pages - [ExGram FSM](readme.md) - [Changelog](changelog.md) - [LICENSE](license.md) ## Modules - [ExGram.FSM.StorageInit](ExGram.FSM.StorageInit.md): `ExGram.BotInit` hook that initialises the FSM storage backend at bot startup. - Core - [ExGram.FSM](ExGram.FSM.md): Finite State Machine / conversation state management for ExGram Telegram bots. - [ExGram.FSM.Flow](ExGram.FSM.Flow.md): Behaviour and DSL for declaring a named FSM conversation flow. - [ExGram.FSM.Helpers](ExGram.FSM.Helpers.md): Runtime helper functions for FSM flow and state management. - [ExGram.FSM.State](ExGram.FSM.State.md): Struct representing a user's FSM flow, state, and associated data. - [ExGram.FSM.States](ExGram.FSM.States.md): Behaviour for declaring FSM states and allowed transitions. - Storage - [ExGram.FSM.Storage](ExGram.FSM.Storage.md): Behaviour for FSM state storage backends. - [ExGram.FSM.Storage.ETS](ExGram.FSM.Storage.ETS.md): Default in-memory FSM storage using ETS. - Key Adapters - [ExGram.FSM.Key](ExGram.FSM.Key.md): Behaviour for extracting FSM storage keys from Telegram updates. - [ExGram.FSM.Key.Chat](ExGram.FSM.Key.Chat.md): FSM key: `{chat_id}`. - [ExGram.FSM.Key.ChatTopic](ExGram.FSM.Key.ChatTopic.md): FSM key: `{chat_id, thread_id}`. - [ExGram.FSM.Key.ChatTopicUser](ExGram.FSM.Key.ChatTopicUser.md): FSM key: `{chat_id, thread_id, user_id}`. - [ExGram.FSM.Key.ChatUser](ExGram.FSM.Key.ChatUser.md): Default FSM key: `{chat_id, user_id}`. - [ExGram.FSM.Key.User](ExGram.FSM.Key.User.md): FSM key: `{user_id}`. - Filters - [ExGram.FSM.Filter.Flow](ExGram.FSM.Filter.Flow.md): An `ExGram.Router.Filter` that matches on the current active FSM flow name. - [ExGram.FSM.Filter.InFlow](ExGram.FSM.Filter.InFlow.md): An `ExGram.Router.Filter` that matches when any FSM flow is active. - [ExGram.FSM.Filter.State](ExGram.FSM.Filter.State.md): An `ExGram.Router.Filter` that matches on the current FSM state or FSM data. - Internals - [ExGram.FSM.Middleware](ExGram.FSM.Middleware.md): ExGram middleware that loads FSM state before every handler call. - [ExGram.FSM.TransitionError](ExGram.FSM.TransitionError.md): Exception raised when an invalid FSM transition is attempted and the `on_invalid_transition` policy is `:raise` (the default).