Current section
Files
Jump to
Current section
Files
lib/builders/message.ex
defmodule TelegramEx.Builder.Message do
@moduledoc """
Builder for text message payloads.
Message.text("Hello", "Markdown")
|> Message.inline_keyboard([[%{text: "OK", callback_data: "ok"}]])
|> Message.send(chat_id)
"""
alias TelegramEx.API
def text(ctx, text) do
Map.get(ctx, :payload, %{})
|> Map.put(:text, text)
|> then(&Map.put(ctx, :payload, &1))
end
def text(ctx, text, parse_mode) do
Map.get(ctx, :payload, %{})
|> Map.put(:text, text)
|> Map.put(:parse_mode, parse_mode)
|> then(&Map.put(ctx, :payload, &1))
end
def inline_keyboard(ctx, keyboard) do
Map.get(ctx, :payload, %{})
|> Map.put(:reply_markup, %{inline_keyboard: keyboard})
|> then(&Map.put(ctx, :payload, &1))
end
def reply_keyboard(ctx, keyboard, opts) do
Map.get(ctx, :payload, %{})
|> Map.put(:reply_markup, Map.merge(%{keyboard: keyboard}, Map.new(opts)))
|> then(&Map.put(ctx, :payload, &1))
end
def remove_keyboard(ctx) do
Map.get(ctx, :payload, %{})
|> Map.put(:reply_markup, %{remove_keyboard: true})
|> then(&Map.put(ctx, :payload, &1))
end
def silent(ctx) do
Map.get(ctx, :payload, %{})
|> Map.put(:disable_notification, true)
|> then(&Map.put(ctx, :payload, &1))
end
def answer_callback_query(ctx, callback) do
API.answer_callback_query(Process.get(:token), callback)
ctx
end
def send(ctx, id) do
ctx
|> Map.put(:chat_id, id)
|> Map.put(:method, "sendMessage")
|> Map.put(:format, :json)
|> API.request()
end
end