Telegramex (Telegramex v0.1.1) View Source

Telegram's Bot API wrapper.

Hex.pm Version CI Coverage Status

Features

  • Support for multiple bots
  • Configurable HTTP client
  • No application configuration

Usage

  1. Add the dependencies
def deps do
  [
    {:finch, "~> 0.5"},
    {:telegramex, "~> 0.1.1"}
  ]
end
  1. Add the finch client to your supervision tree
children = [
  {Finch, name: Telegramex.HTTPClient}
]

Note: Checkout the Telegramex.Client on how to use other HTTP client.

  1. Make a request
client = %Telegramex.Client{token: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"}
Telegramex.get_updates(client)

Full documentation can be found at https://hexdocs.pm/telegramex.

Telemetry

Telegramex executes the following events:

  • [:telegramex, :call, :start] - Executed before calling the Telegram Bot API.

    Measurements

    • :system_time - The system time

      Metadata:

    • :method - The Telegram Bot API method call
    • :body - The body of the API call
  • [:telegramex, :call, :stop] - Executed after a API call.

    Measurements

    • :duration - Duration of the API call.

      Metadata

    • :method - The Telegram Bot API method call
    • :body - The body of the API call
    • :response - (optional) In case of success (status 200), the response of the api as returned by the HTTP client.
    • :error - (optional) In case of a error, returns the error.
  • [:telegramex, :call, :exception] - Executed if the API call raises an exception.

    Measurements

    • :duration - The time it took before raising an exception

      Metadata

    • :method - The Telegram Bot API method call
    • :body - The body of the API call
    • :kind - The type of exception.
    • :error - Error description or error data.
    • :stacktrace - The stacktrace

Changelog

See the changelog.

Link to this section Summary

Functions

Use this method to send answers to an inline query.

Use this method to receive incoming updates using long polling.

Link to this section Functions

Link to this function

answer_inline_query(client, inline_query_id, results, opts \\ [])

View Source

Specs

answer_inline_query(Telegramex.Client.t(), String.t(), [map()], Keyword.t()) ::
  {:ok, map()} | {:error, term()}

Use this method to send answers to an inline query.

Options

  • cache_time - (optional)
  • is_personal - (optional)
  • next_offset - (optional)
  • switch_pm_text - (optional)
  • switch_pm_parameter - (optional)

Checkout the Telegram Bot API Documentation for a complete description of each option.

Usage

client = %Telegramex.Client{token: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"}
Telegramex.answer_inline_query(client, "2648678931644704387", results)
Link to this function

get_updates(client, opts \\ [])

View Source

Specs

get_updates(Telegramex.Client.t(), Keyword.t()) ::
  {:ok, map()} | {:error, term()}

Use this method to receive incoming updates using long polling.

Options

  • offset - (optional)
  • limit - (optional)
  • timeout - (optional)
  • allowed_updates - (optional)

Checkout the Telegram Bot API Documentation for a complete description of each option.

Usage

client = %Telegramex.Client{token: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"}
Telegramex.get_updates(client)