Packages
ex_gram
0.60.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/cnt.ex
defmodule ExGram.Cnt do
@moduledoc """
Context struct for ExGram request handling.
The `Cnt` (context) struct flows through the entire request pipeline, carrying
the bot name, bot info, incoming update, parsed message data, middleware state,
and user-defined extra data.
Middleware functions receive and return a `%ExGram.Cnt{}`, allowing them to inspect
and modify the context. Handler callbacks defined with `ExGram.Dsl` also receive
and return this struct.
## Fields
* `:name` - Bot name (atom or binary)
* `:bot_info` - Bot user info (`t:ExGram.Model.User.t/0`)
* `:update` - Incoming update (`t:ExGram.Model.Update.t/0`)
* `:message` - Parsed message data (varies by handler)
* `:halted` - Whether the request pipeline is halted
* `:middlewares` - Middleware configuration
* `:middleware_halted` - Whether middleware chain is halted
* `:commands` - Command configuration
* `:regex` - Regex pattern configuration
* `:answers` - Accumulated answers
* `:responses` - Accumulated responses
* `:extra` - User-defined data (map)
See the [Middlewares guide](middlewares.md) for more details.
"""
@type name :: atom | binary
@type t :: %__MODULE__{
name: name,
bot_info: ExGram.Model.User.t() | nil,
update: ExGram.Model.Update.t() | nil,
message: any | nil,
halted: boolean,
middlewares: list(any),
middleware_halted: boolean,
commands: list(any),
regex: list(any),
answers: list(any),
responses: list(any),
extra: map
}
defstruct name: nil,
bot_info: nil,
update: nil,
message: nil,
halted: false,
middlewares: [],
middleware_halted: false,
commands: [],
regex: [],
answers: [],
responses: [],
extra: %{}
def new(extra \\ %{}) do
Map.merge(%__MODULE__{}, extra)
end
end