messaging-telegram
Telegram бот: приём сообщений, медиа, пересылка на платформу
Source: magicreek
Files: 5
Stack:
Pythonaiogram
Specification
messaging-telegram
Назначение
Telegram бот для приёма сообщений из групповых чатов и пересылки на платформу через REST API.
Контракты
Типы сообщений
| Тип | Описание | Данные |
|---|
|-----|----------|--------|
| text | Текстовое сообщение | textContent |
|---|---|---|
| audio | Голосовое/аудио | mediaPath, textContent (caption) |
| video | Видео/видео-кружок | mediaPath, textContent (caption) |
| document | Документ | mediaPath, textContent (caption) |
API для пересылки на платформу
POST-запрос к платформе с заголовком `x-api-key`:
{
"telegramChatId": "string (chat ID)",
"telegramMessageId": "string (message ID)",
"senderName": "string (имя отправителя)",
"senderTelegramId": "string (telegram user ID)",
"type": "text|photo|audio|video|document",
"textContent": "string? (текст или caption)",
"mediaPath": "string? (путь к скачанному файлу)",
"replyToTelegramMessageId": "string? (ID исходного сообщения при reply)"
}Архитектура модулей
src/
├── bot.py # Entrypoint: Bot + Dispatcher + polling
├── handlers.py # Message handlers по типам (text, photo, audio, video, document)
├── api_client.py # Async HTTP клиент к платформе (aiohttp, singleton session)
├── config.py # Pydantic Settings (env-переменные)
└── media.py # Скачивание медиа из Telegram APIКонфигурация
| Переменная | Описание | По умолчанию |
|---|
|-----------|----------|-------------|
| TELEGRAM_BOT_TOKEN | Токен бота из @BotFather | — (обязательно) |
|---|---|---|
| PLATFORM_API_KEY | Ключ для x-api-key header | — |
| MEDIA_DIR | Директория для медиа-файлов | /app/media |
Зависимости
•Python 3.12+
•aiogram >= 3.15
•aiohttp (встроен в aiogram)
•pydantic-settings
Реализации
| Стек | Путь | Источник | Статус |
|---|
|------|------|----------|--------|
| Python aiogram 3 | implementations/aiogram/ | magicreek | проверен |
|---|
Адаптация
•**PLATFORM_API_URL** — адрес бэкенда, куда пересылать сообщения.
•**PLATFORM_API_KEY** — должен совпадать с INTERNAL_API_KEY на платформе.
•**Handlers** — добавить/убрать типы сообщений (sticker, location и т.д.).
•**API payload** — расширить поля в api_client.py под свой бэкенд.
•**Медиа-директория** — настроить MEDIA_DIR и общий Docker volume с платформой.