# `Jido.Chat.Telegram.Extensions`
[🔗](https://github.com/agentjido/jido_chat_telegram/blob/v1.0.0/lib/jido/chat/telegram/extensions.ex#L1)

Telegram-specific extension API for features outside core `Jido.Chat.Adapter`.

This module is intentionally platform-specific and keeps Telegram-only semantics
out of `jido_chat` core abstractions.

# `extension_capabilities`

```elixir
@type extension_capabilities() :: %{optional(atom()) =&gt; extension_status()}
```

# `extension_status`

```elixir
@type extension_status() :: :native | :fallback | :unsupported
```

# `answer_callback_query`

```elixir
@spec answer_callback_query(
  String.t(),
  keyword() | map() | Jido.Chat.Telegram.CallbackAnswerOptions.t()
) :: {:ok, Jido.Chat.Telegram.CallbackAnswerResult.t()} | {:error, term()}
```

Answers a Telegram callback query.

# `capabilities`

```elixir
@spec capabilities() :: extension_capabilities()
```

Returns Telegram extension capability statuses.

# `parse_update`

```elixir
@spec parse_update(map()) ::
  {:ok, Jido.Chat.Telegram.UpdateEnvelope.t()} | {:error, term()}
```

Parses a Telegram update into a typed extension envelope.

# `send_document`

```elixir
@spec send_document(
  String.t() | integer(),
  String.t() | {:file, String.t()} | {:file_content, binary(), String.t()},
  keyword() | map() | Jido.Chat.Telegram.DocumentOptions.t()
) :: {:ok, Jido.Chat.Telegram.MediaMessage.t()} | {:error, term()}
```

Sends a Telegram document message and returns a typed media result.

# `send_photo`

```elixir
@spec send_photo(
  String.t() | integer(),
  String.t() | {:file, String.t()} | {:file_content, binary(), String.t()},
  keyword() | map() | Jido.Chat.Telegram.PhotoOptions.t()
) :: {:ok, Jido.Chat.Telegram.MediaMessage.t()} | {:error, term()}
```

Sends a Telegram photo message and returns a typed media result.

---

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