Skip to content

class Tourmaline::Stage(T)
inherits Reference #

FSM (Finite-state machine) like functionality for Tourmaline in the form of a Stage. Stage allows you to create conversations/wizards which maintain their own state for a particular user and/or chat.

For an example of a stage bot, check out examples/stage_bot.cr

Constructors#

.new(client : Tourmaline::Client, *, context : T, chat_id = nil, user_id = nil, **handler_options) #

Create a new Stage instance

View source

Class methods#

.enter(client, **options) #

Create a new Stage instance and start it immediately

View source

Methods#

#active? : Bool #

True if this Stage is currently active

View source

#await_response(&block : Context -> ) #

Allows you to await a response to a step, yielding the awaited update to the block.

View source

#chat_id : Int::Primitive? #

The chat id that this stage applies to If nil, this stage will be usable across all chats

#chat_id=(chat_id : Int::Primitive?) #

The chat id that this stage applies to If nil, this stage will be usable across all chats

View source

#chat_id? : Int::Primitive | Nil? #

The chat id that this stage applies to If nil, this stage will be usable across all chats

#client : Client #

View source

#context : T #

The context for this stage

View source

#context=(context : T) #

The context for this stage

View source

#current_step : String? #

The key for the currently active step

View source

#exit #

Stop the current Stage and remove the event handler from the client.

View source

#initial_step : String? #

The key to use for the initial step

View source

#on(step, proc : Client -> , initial = false) #

Add an event handler for the given event name using the supplied proc

View source

#on(step, initial = false, &block : Client -> ) #

Add an event handler for the given step name using the supplied block

View source

#on_exit(&block : T -> ) #

Add a handler that's called when this Stage is exited

View source

#on_start(&block : -> ) #

Add a handler that's called when this Stage is started

View source

#start #

Start the current Stage, setting the given initial step as the current step and adding an event handler to the client.

View source

#steps #

A hash containing the steps in this stage

View source

#transition(event) #

Set the current step to the given value

View source

#update_history : Array(Update) #

Maintains a history of updates that match the given chat_id and/or user_id.

View source

#user_id : Int::Primitive? #

The user id that this stage applies to If nil, this stage will be usable across all users

#user_id=(user_id : Int::Primitive?) #

The user id that this stage applies to If nil, this stage will be usable across all users

View source

#user_id? : Int::Primitive | Nil? #

The user id that this stage applies to If nil, this stage will be usable across all users

Macros#

method_missing(call) #

View source