Raxol Telegram
Telegram surface bridge for Raxol. Renders TEA apps as monospace code blocks in Telegram chats with inline keyboard navigation.
Install
{:raxol_telegram, "~> 0.1"}For runtime Telegram API access, add:
{:telegex, "~> 1.8"}Usage
# In your supervision tree
children = [
{Raxol.Telegram.Supervisor, app_module: MyApp.CounterApp}
]Bot Integration
Wire Raxol.Telegram.Bot.handle_update/1 into your Telegex polling loop or webhook handler:
def handle_update(update) do
Raxol.Telegram.Bot.handle_update(update)
end
The bot handles /start and /stop commands. Other messages and inline keyboard taps are translated to Raxol events and routed to per-chat TEA sessions.
How It Works
- Each Telegram chat gets an independent TEA lifecycle (session)
-
The screen buffer renders as
<pre>HTML in Telegram messages - Navigation uses inline keyboards (arrows, tab, enter, quit)
- Button widgets in the view tree become additional keyboard buttons
- Sessions auto-expire after 10 minutes of inactivity
- Message editing avoids spam (re-renders edit the existing message)
Session Limits
The SessionRouter enforces a configurable max_sessions cap (default: 1000) to prevent resource exhaustion:
{Raxol.Telegram.SessionRouter, app_module: MyApp, max_sessions: 500}See main docs for the full Raxol framework.
License
MIT. See LICENSE.md.