zhyu/nadia
Telegram Bot API Wrapper written in Elixir
{ "createdAt": "2015-08-15T02:50:36Z", "defaultBranch": "master", "description": "Telegram Bot API Wrapper written in Elixir", "fullName": "zhyu/nadia", "homepage": null, "language": "Elixir", "name": "nadia", "pushedAt": "2023-03-29T20:57:22Z", "stargazersCount": 364, "topics": [], "updatedAt": "2025-10-21T10:45:56Z", "url": "https://github.com/zhyu/nadia"}Telegram Bot API Wrapper written in Elixir (document)
Installation
Section titled “Installation”Add :nadia to your mix.exs dependencies:
def deps do [ {:nadia, "~> 0.7.0"} ]endAnd run $ mix deps.get.
Configuration
Section titled “Configuration”In config/config.exs, add your Telegram Bot token like [this]!(config/config.exs.example)
config :nadia, token: "bot token"You can also add an optional recv_timeout in seconds (defaults to 5s):
config :nadia, recv_timeout: 10You can also add a proxy support:
config :nadia, proxy: "http://proxy_host:proxy_port", # or {:socks5, 'proxy_host', proxy_port} proxy_auth: {"user", "password"}, ssl: [versions: [:'tlsv1.2']]You can also configure the the base url for the api if you need to for some reason:
config :nadia, # Telegram API. Default: https://api.telegram.org/bot base_url: "http://my-own-endpoint.com/whatever/",
# Telegram Graph API. Default: https://api.telegra.ph graph_base_url: "http://my-own-endpoint.com/whatever/"Environment variables may be used as well:
config :nadia, token: {:system, "ENVVAR_WITH_MYAPP_TOKEN", "default_value_if_needed"}get_me
Section titled “get_me”iex> Nadia.get_me{:ok, %Nadia.Model.User{first_name: "Nadia", id: 666, last_name: nil, username: "nadia_bot"}}get_updates
Section titled “get_updates”iex> Nadia.get_updates limit: 5{:ok, []}
iex> {:ok, [%Nadia.Model.Update{callback_query: nil, chosen_inline_result: nil, edited_message: nil, inline_query: nil, message: %Nadia.Model.Message{audio: nil, caption: nil, channel_chat_created: nil, chat: %Nadia.Model.Chat{first_name: "Nadia", id: 123, last_name: "TheBot", title: nil, type: "private", username: "nadia_the_bot"}, contact: nil, date: 1471208260, delete_chat_photo: nil, document: nil, edit_date: nil, entities: nil, forward_date: nil, forward_from: nil, forward_from_chat: nil, from: %Nadia.Model.User{first_name: "Nadia", id: 123, last_name: "TheBot", username: "nadia_the_bot"}, group_chat_created: nil, left_chat_member: nil, location: nil, message_id: 543, migrate_from_chat_id: nil, migrate_to_chat_id: nil, new_chat_member: nil, new_chat_photo: [], new_chat_title: nil, photo: [], pinned_message: nil, reply_to_message: nil, sticker: nil, supergroup_chat_created: nil, text: "rew", venue: nil, video: nil, voice: nil}, update_id: 98765}]}send_message
Section titled “send_message”iex> case Nadia.send_message(tlg_id, "The message text goes here") do {:ok, _result} -> :ok {:error, %Nadia.Model.Error{reason: "Please wait a little"}} -> :wait end
:okRefer to Nadia document and Telegram Bot API document for more details.
Copyright and License
Section titled “Copyright and License”Copyright (c) 2015 Yu Zhang
This library licensed under the [MIT license]!(./LICENSE.md).