Skip to main content

Documentation Index

Fetch the complete documentation index at: https://agno-v2-fix-deploy-docs-restructure.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Interface Parameters

Pass one of agent, team, or workflow to the Telegram constructor.
from agno.os.interfaces.telegram import Telegram

Telegram(agent=my_agent, streaming=True, prefix="/telegram")
ParameterTypeDefaultDescription
agentOptional[Agent]NoneAgno Agent instance.
teamOptional[Team]NoneAgno Team instance.
workflowOptional[Workflow]NoneAgno Workflow instance.
prefixstr"/telegram"URL prefix for Telegram endpoints (e.g., /telegram/webhook).
tagsOptional[List[str]]["Telegram"]FastAPI route tags for API documentation.
tokenOptional[str]NoneBot token. Falls back to TELEGRAM_TOKEN environment variable.
streamingboolTrueEnable token-by-token streaming with live message edits.
show_reasoningboolFalseSend reasoning content as a blockquote message before the response.
reply_to_mentions_onlyboolTrueIn groups, respond only to @mentions and replies to the bot. In DMs, always respond.
reply_to_bot_messagesboolTrueRespond when users reply to the bot’s own messages in groups.
start_messagestr"Hello! I'm ready..."Message sent for /start command.
help_messagestr"Send me text..."Message sent for /help command.
error_messagestr"Sorry, error..."Message sent when processing fails.
new_messagestr"New conversation..."Message sent for /new command (requires database).
commandsOptional[List[Dict]]See belowBot commands to register. Each dict has command and description keys.
register_commandsboolTrueRegister commands with Telegram Bot API on first message.
quoted_responsesboolFalseBot replies quote the user’s message (reply-to behavior).
Default commands:
[
    {"command": "start", "description": "Start the bot"},
    {"command": "help", "description": "Show help"},
    {"command": "new", "description": "Start a new conversation"},
]

Endpoints

POST {prefix}/webhook

Receives Telegram updates (messages, edited messages, media).
StatusResponseDescription
200{"status": "processing"}Message accepted for background processing.
200{"status": "duplicate"}Webhook retry detected (ignored).
200{"status": "ignored"}Not a message event (callback query, etc.).
403ErrorInvalid X-Telegram-Bot-Api-Secret-Token header.
500ErrorProcessing error or missing TELEGRAM_TOKEN.

GET {prefix}/status

Health check. Returns {"status": "available"}.

Security

Webhook requests must include the X-Telegram-Bot-Api-Secret-Token header, validated against TELEGRAM_WEBHOOK_SECRET_TOKEN using constant-time comparison. Development mode: Set APP_ENV=development to bypass validation (logs a warning).

Message Processing

StepBehavior
DeduplicationUpdates tracked by update_id for 60 seconds. Retries ignored.
Bot filteringMessages from other bots ignored.
Group filteringWhen reply_to_mentions_only=True, only process @mentions and replies to the bot.
Command handling/start, /help, /new handled with configurable messages.
Text cleanupBot mentions stripped from message text before passing to agent.
Media processingPhotos, voice, audio, video, documents, stickers, animations downloaded (max 20 MB).

Session Scope

Session IDs are scoped to prevent cross-chat context leakage:
Chat TypeSession Scope Format
DMs, basic groupstg:{entity_id}:{chat_id}
Supergroup threads, forum topicstg:{entity_id}:{chat_id}:{message_thread_id}

Streaming Events

When streaming=True, the interface dispatches real-time status updates:
EventDisplay
reasoning_started”Reasoning…”
tool_call_started…”
tool_call_completedStatus cleared
tool_call_error failed”
run_contentAccumulated content, edited every 1.0s
memory_update_started”Updating memory…”
Workflow events: Step names, loop iterations, and parallel execution status shown with indentation. Rate limiting: Respects Telegram’s 429 retry_after field. Pauses edits during rate-limit periods.

Text Formatting

Markdown is converted to Telegram HTML:
MarkdownTelegram HTML
**bold**<b>bold</b>
*italic*<i>italic</i>
__underline__<u>underline</u>
~~strike~~<s>strike</s>
`code`<code>code</code>
```lang\ncode\n```<pre><code class="language-lang">code</code></pre>
> quote<blockquote>quote</blockquote>
[text](url)<a href="url">text</a>
- item• item
Messages exceeding 4096 characters are automatically split.

Media Support

Input (from users):
TypeConverted To
PhotosImage
Voice, AudioAudio
Video, Animation, Video NoteVideo
DocumentsFile
Max download size: 20 MB. Output (from agent): Images, audio, videos, and files sent via respective Telegram API methods.

Environment Variables

VariableRequiredDescription
TELEGRAM_TOKENYesBot token from @BotFather. Can also pass via token parameter.
TELEGRAM_WEBHOOK_SECRET_TOKENProductionWebhook validation secret. Bypassed when APP_ENV=development.
APP_ENVNoSet to development to bypass webhook secret validation.

Developer Resources

Telegram Guide

Setup, code examples, and streaming behavior.

TelegramTools

Toolkit for sending messages and media from agents.