# `ExGram.Model.InlineQueryResultCachedDocument`
[🔗](https://github.com/rockneurotiko/ex_gram/blob/0.64.0/lib/ex_gram.ex#L6667)

Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file.

Check the [documentation of this model on Telegram Bot API](https://core.telegram.org/bots/api#inlinequeryresultcacheddocument)

- `type`: Type of the result, must be document
- `id`: Unique identifier for this result, 1-64 bytes
- `title`: Title for the result
- `document_file_id`: A valid file identifier for the file
- `description (optional)`: Optional. Short description of the result
- `caption (optional)`: Optional. Caption of the document to be sent, 0-1024 characters after entities parsing
- `parse_mode (optional)`: Optional. Mode for parsing entities in the document caption. See formatting options for more details.
- `caption_entities (optional)`: Optional. List of special entities that appear in the caption, which can be specified instead of parse_mode
- `reply_markup (optional)`: Optional. Inline keyboard attached to the message
- `input_message_content (optional)`: Optional. Content of the message to be sent instead of the file

# `t`

```elixir
@type t() :: %ExGram.Model.InlineQueryResultCachedDocument{
  caption: String.t() | nil,
  caption_entities: [ExGram.Model.MessageEntity.t()] | nil,
  description: String.t() | nil,
  document_file_id: String.t(),
  id: String.t(),
  input_message_content: ExGram.Model.InputMessageContent.t() | nil,
  parse_mode: String.t() | nil,
  reply_markup: ExGram.Model.InlineKeyboardMarkup.t() | nil,
  title: String.t(),
  type: String.t()
}
```

# `decode_as`

---

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