Packages
ex_gram
0.20.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.58.0
0.57.0
0.56.1
0.56.0
0.55.1
0.55.0
0.54.0
0.53.0
0.52.2
0.52.1
0.52.0
0.51.1
0.51.0
0.50.2
0.50.1
0.50.0
0.41.0
0.40.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.1
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.0
0.5.0-rc6
0.5.0-rc5
0.5.0-rc4
0.5.0-rc3
0.5.0-rc2
Telegram Bot API low level and framework
Current section
Files
Jump to
Current section
Files
lib/ex_gram/bot.ex
defmodule ExGram.Bot do
defmacro __using__(ops) do
name =
case Keyword.fetch(ops, :name) do
{:ok, n} -> n
_ -> raise "name parameter is mandatory"
end
username = Keyword.fetch(ops, :username)
setup_commands = Keyword.get(ops, :setup_commands, false)
quote location: :keep do
# quote do
use ExGram.Middleware.Builder
import ExGram.Dsl
@behaviour ExGram.Handler
def name(), do: unquote(name)
def child_spec(opts) do
opts =
Keyword.merge(opts, setup_commands: unquote(setup_commands), username: unquote(username))
ExGram.Bot.Supervisor.child_spec(opts, __MODULE__)
end
@dialyzer {:nowarn_function, start_link: 1}
def start_link(opts) when is_list(opts) do
message = """
Outdate child specification, change your bot's children config to the following:
{#{__MODULE__}, #{inspect(opts)}}
"""
raise message
end
def start_link(m, token \\ nil) do
message = """
Outdate child specification, change your bot's children config to the following:
{#{__MODULE__}, [method: #{m}, token: #{token}]}
"""
raise message
end
def message(from, message) do
GenServer.call(name(), {:message, from, message})
end
# Default implementations
def handle(msg, _cnt) do
error = %ExGram.Error{code: :not_handled, message: "Message not handled: #{inspect(msg)}"}
handle_error(error)
end
def handle_error(error) do
error
# IO.inspect("Error received: #{inspect(error)}")
end
defoverridable ExGram.Handler
end
end
end