telega/bot
Types
pub opaque type BotMessage
pub type BotSubject =
process.Subject(BotMessage)
pub type CallbackQueryFilter {
CallbackQueryFilter(re: regexp.Regexp)
}
Constructors
-
CallbackQueryFilter(re: regexp.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) =
process.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.Update,
config: //internal,
session: session,
chat_subject: process.Subject(
ChatInstanceMessage(session, error),
),
)
}
Constructors
-
Context( key: String, update: update.Update, config: //internal, session: session, chat_subject: process.Subject( ChatInstanceMessage(session, error), ), )
pub type Handler(session, error) {
HandleAll(
handler: fn(Context(session, error), update.Update) -> Result(
Context(session, error),
error,
),
)
HandleCommand(
command: String,
handler: fn(Context(session, error), update.Command) -> Result(
Context(session, error),
error,
),
)
HandleCommands(
commands: List(String),
handler: fn(Context(session, error), update.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.Update) -> Result( Context(session, error), error, ), )
Handle all messages.
-
HandleCommand( command: String, handler: fn(Context(session, error), update.Command) -> Result( Context(session, error), error, ), )
Handle a specific command.
-
HandleCommands( commands: List(String), handler: fn(Context(session, error), update.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.Regexp)
HearRegexes(regexes: List(regexp.Regexp))
}
Constructors
-
HearText(text: String)
-
HearTexts(texts: List(String))
-
HearRegex(regex: regexp.Regexp)
-
HearRegexes(regexes: List(regexp.Regexp))
pub type SessionSettings(session, error) {
SessionSettings(
persist_session: fn(String, session) -> Result(session, error),
get_session: fn(String) -> Result(
option.Option(session),
error,
),
default_session: fn() -> session,
)
}
Constructors
-
SessionSettings( persist_session: fn(String, session) -> Result(session, error), get_session: fn(String) -> Result(option.Option(session), error), default_session: fn() -> session, )
Values
pub fn cancel_conversation(
bot bot: Bot(session, error),
key key: String,
) -> Nil
Stops waiting for any handler for specific key (chat_id)
pub fn get_session(
session_settings: SessionSettings(session, error),
update: update.Update,
) -> Result(option.Option(session), error)
pub fn next_session(
ctx ctx: Context(session, error),
session session: session,
) -> Result(Context(session, error), error)
pub fn start(
registry_subject registry_subject: process.Subject(
//internal(ChatInstanceMessage(session, error)),
),
config config: //internal,
bot_info bot_info: model.User,
handlers handlers: List(Handler(session, error)),
session_settings session_settings: SessionSettings(
session,
error,
),
catch_handler catch_handler: fn(Context(session, error), error) -> Result(
Nil,
error,
),
) -> Result(process.Subject(BotMessage), error.TelegaError)
pub fn wait_handler(
ctx ctx: Context(session, error),
handler handler: Handler(session, error),
handle_else handle_else: option.Option(Handler(session, error)),
timeout timeout: option.Option(Int),
) -> Result(Context(session, error), error)
Pass any handler to start waiting
or
- calls if there are any other updates
timeout
- the conversation will be canceled after this timeout