telega/bot
Types
pub opaque type BotMessage
pub type BotSubject =
Subject(BotMessage)
pub type CallbackQueryFilter {
CallbackQueryFilter(re: Regexp)
}
Constructors
-
CallbackQueryFilter(re: Regexp)
Handler called when an error occurs in handler
If handler returns Error
, the bot will be stopped and the error will be logged
The default handler is fn(_) -> Ok(Nil)
, which will do nothing if handler returns an error
pub type CatchHandler(session, error) =
fn(Context(session, error), error) -> Result(Nil, error)
pub opaque type ChatInstanceMessage(session, error)
pub type ChatInstanceSubject(session, error) =
Subject(ChatInstanceMessage(session, error))
Context holds information needed for the bot instance and the current update.
pub type Context(session, error) {
Context(
key: String,
update: Update,
config: Config,
session: session,
chat_subject: ChatInstanceSubject(session, error),
)
}
Constructors
-
Context( key: String, update: Update, config: Config, session: session, chat_subject: ChatInstanceSubject(session, error), )
pub type Handler(session, error) {
HandleAll(
handler: fn(Context(session, error), Update) ->
Result(Context(session, error), error),
)
HandleCommand(
command: String,
handler: fn(Context(session, error), Command) ->
Result(Context(session, error), error),
)
HandleCommands(
commands: List(String),
handler: fn(Context(session, error), Command) ->
Result(Context(session, error), error),
)
HandleText(
handler: fn(Context(session, error), String) ->
Result(Context(session, error), error),
)
HandleHears(
hears: Hears,
handler: fn(Context(session, error), String) ->
Result(Context(session, error), error),
)
HandleMessage(
handler: fn(Context(session, error), model.Message) ->
Result(Context(session, error), error),
)
HandleVoice(
handler: fn(Context(session, error), model.Voice) ->
Result(Context(session, error), error),
)
HandleAudio(
handler: fn(Context(session, error), model.Audio) ->
Result(Context(session, error), error),
)
HandleVideo(
handler: fn(Context(session, error), model.Video) ->
Result(Context(session, error), error),
)
HandlePhotos(
handler: fn(Context(session, error), List(model.PhotoSize)) ->
Result(Context(session, error), error),
)
HandleWebAppData(
handler: fn(Context(session, error), model.WebAppData) ->
Result(Context(session, error), error),
)
HandleCallbackQuery(
filter: CallbackQueryFilter,
handler: fn(Context(session, error), String, String) ->
Result(Context(session, error), error),
)
HandleChatMember(
handler: fn(Context(session, error), model.ChatMemberUpdated) ->
Result(Context(session, error), error),
)
}
Constructors
-
HandleAll( handler: fn(Context(session, error), Update) -> Result(Context(session, error), error), )
Handle all messages.
-
HandleCommand( command: String, handler: fn(Context(session, error), Command) -> Result(Context(session, error), error), )
Handle a specific command.
-
HandleCommands( commands: List(String), handler: fn(Context(session, error), Command) -> Result(Context(session, error), error), )
Handle multiple commands.
-
HandleText( handler: fn(Context(session, error), String) -> Result(Context(session, error), error), )
Handle text messages.
-
HandleHears( hears: Hears, handler: fn(Context(session, error), String) -> Result(Context(session, error), error), )
Handle text message with a specific substring.
-
HandleMessage( handler: fn(Context(session, error), model.Message) -> Result(Context(session, error), error), )
Handle any message.
-
HandleVoice( handler: fn(Context(session, error), model.Voice) -> Result(Context(session, error), error), )
Handle voice messages.
-
HandleAudio( handler: fn(Context(session, error), model.Audio) -> Result(Context(session, error), error), )
Handle audio messages.
-
HandleVideo( handler: fn(Context(session, error), model.Video) -> Result(Context(session, error), error), )
Handle video messages.
-
HandlePhotos( handler: fn(Context(session, error), List(model.PhotoSize)) -> Result(Context(session, error), error), )
Handle photo messages.
-
HandleWebAppData( handler: fn(Context(session, error), model.WebAppData) -> Result(Context(session, error), error), )
Handle web app data messages.
-
HandleCallbackQuery( filter: CallbackQueryFilter, handler: fn(Context(session, error), String, String) -> Result(Context(session, error), error), )
Handle callback query. Context, data from callback query and
callback_query_id
are passed to the handler. -
HandleChatMember( handler: fn(Context(session, error), model.ChatMemberUpdated) -> Result(Context(session, error), error), )
Handle chat member update (when user joins/leaves a group). The bot must be an administrator in the chat and must explicitly specify “chat_member” in the list of
allowed_updates
to receive these updates.
pub type Hears {
HearText(text: String)
HearTexts(texts: List(String))
HearRegex(regex: Regexp)
HearRegexes(regexes: List(Regexp))
}
Constructors
-
HearText(text: String)
-
HearTexts(texts: List(String))
-
HearRegex(regex: Regexp)
-
HearRegexes(regexes: List(Regexp))
pub type SessionSettings(session, error) {
SessionSettings(
persist_session: fn(String, session) ->
Result(session, error),
get_session: fn(String) -> Result(Option(session), error),
default_session: fn() -> session,
)
}
Constructors
-
SessionSettings( persist_session: fn(String, session) -> Result(session, error), get_session: fn(String) -> Result(Option(session), error), default_session: fn() -> session, )
Values
pub fn cancel_conversation(
bot bot: Bot(a, b),
key key: String,
) -> Nil
Stops waiting for any handler for specific key (chat_id)
pub fn get_session(
session_settings: SessionSettings(a, b),
update: Update,
) -> Result(Option(a), b)
pub fn next_session(
ctx ctx: Context(a, b),
session session: a,
) -> Result(Context(a, b), c)
pub fn start(
registry_subject registry_subject: Subject(
RegistryMessage(ChatInstanceMessage(a, b)),
),
config config: Config,
bot_info bot_info: User,
handlers handlers: List(Handler(a, b)),
session_settings session_settings: SessionSettings(a, b),
catch_handler catch_handler: fn(Context(a, b), b) ->
Result(Nil, b),
) -> Result(Subject(BotMessage), TelegaError)
pub fn wait_handler(
ctx ctx: Context(a, b),
handler handler: Handler(a, b),
handle_else handle_else: Option(Handler(a, b)),
timeout timeout: Option(Int),
) -> Result(Context(a, b), c)
Pass any handler to start waiting
or
- calls if there are any other updates
timeout
- the conversation will be canceled after this timeout