class Tourmaline::Stage(T)

Overview

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

Defined in:

tourmaline/extra/stage.cr

Constructors

Class Method Summary

Instance Method Summary

Macro Summary

Constructor Detail

def self.new(client : Tourmaline::Client, *, context : T, chat_id : Int128 | Int16 | Int32 | Int64 | Int8 | UInt128 | UInt16 | UInt32 | UInt64 | UInt8 | Nil = nil, user_id : Int128 | Int16 | Int32 | Int64 | Int8 | UInt128 | UInt16 | UInt32 | UInt64 | UInt8 | Nil = nil, **handler_options) #

Create a new Stage instance


[View source]

Class Method Detail

def self.enter(client, **options) #

Create a new Stage instance and start it immediately


[View source]

Instance Method Detail

def active? : Bool #

True if this Stage is currently active


[View source]
def await_response(&block : Context -> ) #

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


[View source]
def chat_id : Int::Primitive | Nil #

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


def chat_id=(chat_id : Int::Primitive | Nil) #

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


[View source]
def chat_id? : Int::Primitive | Nil | Nil #

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


def client : Client #

[View source]
def context : T #

The context for this stage


[View source]
def context=(context : T) #

The context for this stage


[View source]
def current_step : String | Nil #

The key for the currently active step


[View source]
def exit #

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


[View source]
def initial_step : String | Nil #

The key to use for the initial step


[View source]
def on(step, initial = false, &block : Client -> ) #

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


[View source]
def on(step, proc : Client -> , initial = false) #

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


[View source]
def on_exit(&block : T -> ) #

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


[View source]
def on_start(&block : -> ) #

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


[View source]
def start #

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


[View source]
def steps #

A hash containing the steps in this stage


[View source]
def transition(event) #

Set the current step to the given value


[View source]
def update_history : Array(Update) #

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


[View source]
def user_id : Int::Primitive | Nil #

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


def user_id=(user_id : Int::Primitive | Nil) #

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


[View source]
def user_id? : Int::Primitive | Nil | Nil #

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


Macro Detail

macro method_missing(call) #

[View source]