messaging-telegram

Telegram бот: приём сообщений, медиа, пересылка на платформу

Code
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 3implementations/aiogram/magicreekпроверен

Адаптация

**PLATFORM_API_URL** — адрес бэкенда, куда пересылать сообщения.
**PLATFORM_API_KEY** — должен совпадать с INTERNAL_API_KEY на платформе.
**Handlers** — добавить/убрать типы сообщений (sticker, location и т.д.).
**API payload** — расширить поля в api_client.py под свой бэкенд.
**Медиа-директория** — настроить MEDIA_DIR и общий Docker volume с платформой.