Диаграмма потока (Private Chat)
USER
"Привет, как дела?"
Telegram API
Long-polling (timeout: 30s) → Receive Update object
Message Normalization
Extract
chat_id, user_id, text
Detect
message_type
Context
reply_to, thread_id
Forward
forward_from
Queue (chat_queue)
Global
max 2 concurrent
Per-chat
max 8 pending
If full
"Занят, позже"
Auth & RBAC
Get/create user
Check tier
Rate limits
Ban check
Command Handler
/start, /help, /status
Chat Handler
Simple chat
Operator Handler
Complex tasks
DB Operations
Save message
Load context
Query policy
Create run
LLM Processing
🤖
Agent Select
🧠
Prompt Assembly
🧠
LLM Call
🗄️
Log
Response Assembly
Parse LLM
Format
Split >4096
Update status
Telegram Send
📨
sendMessage
🗄️
Save to DB
⚡
Log Event
USER
"Привет! Всё отлично..."
Типы сообщений
Text Message
Обычное текстовое сообщение
{
"message_id": 123,
"from": {"id": 123456, "username": "user"},
"chat": {"id": 123456, "type": "private"},
"text": "Привет!",
"date": 1709500000
}Voice Message
Голосовое → транскрибация через Whisper
{
"voice": {
"file_id": "AwADBAADbQ...",
"duration": 5,
"mime_type": "audio/ogg"
}
}
# Flow: download → whisper → textCommand
Команда (/start, /help, /status...)
{
"text": "/help",
"entities": [{
"type": "bot_command",
"offset": 0,
"length": 5
}]
}
# Route to CommandHandlerReply
Ответ на сообщение бота
{
"reply_to_message": {
"message_id": 122,
"from": {"id": BOT_ID}
}
}
# Context: reply_to for threadingГрупповые чаты
GROUP
"@bot_name напомни мне через 5 минут"
Addressing Check
@bot_name
Mention
Reply to bot
Thread
/cmd@bot_name
Command
If NO → IGNORE(don't respond to every message!)
(if addressed)
↓Group Context
Load group info
Check permissions
Load context
[Same flow as private chat]
↓Response in Group
reply_to_message_id
@user mention
Markdown
⚠️ Важно: Addressing в группах
В групповых чатах бот отвечает ТОЛЬКО когда:
- • Бот упомянут:
@bot_name - • Команда с упоминанием:
/cmd@bot_name - • Ответ на сообщение бота (reply)
Это предотвращает spam и гарантирует, что бот не отвечает на каждое сообщение в группе.
Smart Messages
Smart Messages — это сообщения с inline-кнопками для взаимодействия с пользователем. Определяются в process_rules.md.
Пример: Web Search Result
Результаты поиска:
Нашёл 5 источников по вашему запросу...
Нашёл 5 источников по вашему запросу...
📖 Подробнее🔄 Повторить⭐ Сохранить
# Smart message structure
{
"text": "Результаты поиска...",
"parse_mode": "Markdown",
"reply_markup": {
"inline_keyboard": [
[
{"text": "📖 Подробнее", "callback_data": "expand:run_id"},
{"text": "🔄 Повторить", "callback_data": "redo:run_id"}
],
[
{"text": "⭐ Сохранить", "callback_data": "save:run_id"}
]
]
}
}Rate Limits
| Tier | Messages/day | LLM calls/day | Processes/day |
|---|---|---|---|
| Free | 100 | 50 | 10 |
| Paid | 1000 | 500 | 100 |
| Owner | Unlimited | Unlimited | Unlimited |
Обработка ошибок
Telegram Errors
- •429 Too Many Requests — exponential backoff
- •403 Forbidden — user blocked bot
- •400 Bad Request — invalid message format
- •Network errors — retry with backoff
User-Facing Errors
- •"Произошла ошибка, попробуйте позже"
- •"Сервис временно недоступен"
- •"Превышен лимит запросов"
- •Never expose internal errors to user
Связанные страницы
Навыки для понимания
Telegram Bot APIMessage handlingQueue patternsError handling