# `ExGram.Cnt`
[🔗](https://github.com/rockneurotiko/ex_gram/blob/0.65.0/lib/ex_gram/cnt.ex#L1)

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.

# `name`

```elixir
@type name() :: atom() | binary()
```

# `t`

```elixir
@type t() :: %ExGram.Cnt{
  answers: [any()],
  bot_info: ExGram.Model.User.t() | nil,
  commands: [any()],
  extra: map(),
  halted: boolean(),
  message: any() | nil,
  middleware_halted: boolean(),
  middlewares: [any()],
  name: name(),
  regex: [any()],
  responses: [any()],
  update: ExGram.Model.Update.t() | nil
}
```

# `new`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
