telega/bot

Types

Stores information about running bot instance

pub opaque type Bot(session, error)
pub opaque type BotMessage
pub type CallbackQueryFilter {
  CallbackQueryFilter(re: regexp.Regexp)
}

Constructors

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

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

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

Search Document