# ex_gram_router v0.1.0 - API Reference

## Modules

- DSL
  - [ExGram.Router](ExGram.Router.md): A declarative routing DSL for ExGram bots.

- Filters
  - [ExGram.Router.Filter](ExGram.Router.Filter.md): Behaviour for ExGram.Router filters.
  - [ExGram.Router.Filters.Animation](ExGram.Router.Filters.Animation.md): Filter that matches message updates containing an animation (GIF or H.264/MPEG-4 AVC).
  - [ExGram.Router.Filters.Audio](ExGram.Router.Filters.Audio.md): Filter that matches message updates containing an audio file.
  - [ExGram.Router.Filters.CallbackQuery](ExGram.Router.Filters.CallbackQuery.md): Built-in filter that matches callback query updates (inline keyboard button presses).
  - [ExGram.Router.Filters.Command](ExGram.Router.Filters.Command.md): Built-in filter that matches Telegram command updates.
  - [ExGram.Router.Filters.Contact](ExGram.Router.Filters.Contact.md): Filter that matches message updates containing a shared contact.
  - [ExGram.Router.Filters.Document](ExGram.Router.Filters.Document.md): Filter that matches message updates containing a document (file).
  - [ExGram.Router.Filters.InlineQuery](ExGram.Router.Filters.InlineQuery.md): Built-in filter that matches inline query updates.
  - [ExGram.Router.Filters.Location](ExGram.Router.Filters.Location.md): Built-in filter that matches location message updates.
  - [ExGram.Router.Filters.Message](ExGram.Router.Filters.Message.md): Built-in filter that matches generic message updates (photos, documents,
stickers, audio, video, etc. — any message that is not text or a command).
  - [ExGram.Router.Filters.Photo](ExGram.Router.Filters.Photo.md): Filter that matches message updates containing one or more photos.
  - [ExGram.Router.Filters.Poll](ExGram.Router.Filters.Poll.md): Filter that matches message updates containing a poll.
  - [ExGram.Router.Filters.Regex](ExGram.Router.Filters.Regex.md): Built-in filter that matches text messages against a compiled regex.
  - [ExGram.Router.Filters.Sticker](ExGram.Router.Filters.Sticker.md): Filter that matches message updates containing a sticker.
  - [ExGram.Router.Filters.Text](ExGram.Router.Filters.Text.md): Built-in filter that matches plain text message updates.
  - [ExGram.Router.Filters.Video](ExGram.Router.Filters.Video.md): Filter that matches message updates containing a video file.
  - [ExGram.Router.Filters.VideoNote](ExGram.Router.Filters.VideoNote.md): Filter that matches message updates containing a video note (round video).
  - [ExGram.Router.Filters.Voice](ExGram.Router.Filters.Voice.md): Filter that matches message updates containing a voice message.

- Core
  - [ExGram.Router.Compiler](ExGram.Router.Compiler.md): `@before_compile` hook that generates the `handle/2` function from the
routing tree built by the DSL macros.
  - [ExGram.Router.Dispatcher](ExGram.Router.Dispatcher.md): Runtime component responsible for walking the routing tree and dispatching
updates to the appropriate handler.
  - [ExGram.Router.Dsl](ExGram.Router.Dsl.md): Compile-time DSL macros for building the routing tree.
  - [ExGram.Router.Scope](ExGram.Router.Scope.md): Internal data structure representing a node in the routing tree.

## Mix Tasks

- [mix ex_gram.router.flat](Mix.Tasks.ExGram.Router.Flat.md): Prints a flat, one-line-per-handler listing of all routes in an
`ExGram.Router` bot module. Unlike the tree view, every entry is a leaf
with its full accumulated filter chain (parent scope filters are prepended).
- [mix ex_gram.router.tree](Mix.Tasks.ExGram.Router.Tree.md): Prints the routing tree of an `ExGram.Router` bot module in a human-readable
indented tree format.

