# Telegramex
<!-- MDOC !-->
Telegram's Bot API wrapper.
[![Hex.pm Version](http://img.shields.io/hexpm/v/telegramex.svg?style=flat)](https://hex.pm/packages/telegramex)
[![CI](https://github.com/thiamsantos/telegramex/workflows/CI/badge.svg?branch=main)](https://github.com/thiamsantos/telegramex/actions?query=branch%3Amain)
[![Coverage Status](https://coveralls.io/repos/github/thiamsantos/telegramex/badge.svg?branch=main)](https://coveralls.io/github/thiamsantos/telegramex?branch=main)
## Features
- Support for multiple bots
- Configurable HTTP client
- No application configuration
## Usage
1. Add the dependencies
```elixir
def deps do
[
{:finch, "~> 0.5"},
{:telegramex, "~> 0.1.1"}
]
end
```
2. Add the [finch](https://github.com/keathley/finch) client to your supervision tree
```elixir
children = [
{Finch, name: Telegramex.HTTPClient}
]
```
**Note**: Checkout the `Telegramex.Client` on how to use other HTTP client.
3. Make a request
```elixir
client = %Telegramex.Client{token: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"}
Telegramex.get_updates(client)
```
Full documentation can be found at [https://hexdocs.pm/telegramex](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](CHANGELOG.md).
<!-- MDOC !-->
## Contributing
See the [contributing file](CONTRIBUTING.md).
## License
[Apache License, Version 2.0](LICENSE) © [Thiago Santos](https://github.com/thiamsantos)