Packages

Elixir library for building Telegram bots with macro-based API

Current section

Files

Jump to
telegram_ex lib api.ex
Raw

lib/api.ex

defmodule TelegramEx.API do
require Logger
def get_updates(token, offset) do
case Req.get("https://api.telegram.org/bot#{token}/getUpdates?offset=#{offset}") do
{:ok, %{status: 200, body: %{"ok" => true, "result" => updates}}} ->
{:ok, updates}
{:ok, %{body: %{"description" => reason}}} ->
Logger.error(reason)
{:error, :bad_request}
{:error, reason} ->
{:error, reason}
end
end
def send_message(token, message) do
case Req.post("https://api.telegram.org/bot#{token}/sendMessage", json: message) do
{:ok, %{status: 200}} ->
:ok
{:ok, %{body: %{"description" => reason}}} ->
Logger.error(reason)
{:error, :bad_request}
{:error, reason} ->
{:error, reason}
end
end
def send_photo(token, photo) do
case Req.post("https://api.telegram.org/bot#{token}/sendPhoto", form_multipart: photo) do
{:ok, %{status: 200}} ->
:ok
{:ok, %{body: %{"description" => reason}}} ->
Logger.error(reason)
{:error, :bad_request}
{:error, reason} ->
{:error, reason}
end
end
def answer_callback_query(token, callback) do
case Req.post("https://api.telegram.org/bot#{token}/answerCallbackQuery",
json: %{callback_query_id: callback}
) do
{:ok, %{status: 200}} ->
:ok
{:ok, %{body: %{"description" => reason}}} ->
Logger.error(reason)
{:error, :bad_request}
{:error, reason} ->
{:error, reason}
end
end
def send_document(token, document) do
case Req.post("https://api.telegram.org/bot#{token}/sendDocument",
form_multipart: document
) do
{:ok, %{status: 200}} ->
Logger.info("sent")
:ok
{:ok, %{body: %{"description" => reason}}} ->
Logger.error(reason)
{:error, :bad_request}
{:ok, response} ->
Logger.error("Unknown error: #{inspect(response)}")
{:error, reason} ->
Logger.error(reason)
{:error, reason}
end
end
end