telega/bot

Types

Stores information about running bot instance

pub opaque type Bot(session, error)
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)) ->
      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),
  )
  HandleCallbackQuery(
    filter: CallbackQueryFilter,
    handler: fn(Context(session, error), String, String) ->
      Result(Context(session, error), error),
  )
}

Constructors

  • HandleAll(
      handler: fn(Context(session, error)) ->
        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.

  • 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.

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,
    )

Functions

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 update_to_string(update: Update) -> String
pub fn wait_handler(
  ctx: Context(a, b),
  handler: Handler(a, b),
) -> Result(Context(a, b), c)
Search Document