Как устроен Telegram «бот‑предложка»

Бот‑предложка — это Telegram‑бот, через которого пользователи отправляют посты, идеи, новости, мемы или сообщения для публикации в канале. Админы затем решают: публиковать контент или нет.

Пользователь
    ↓
Telegram Bot API
    ↓
Бот (логика)
    ↓
База / очередь сообщений
    ↓
Админский чат или панель
    ↓
Telegram-канал

1. Пользователь отправляет сообщение

Бот принимает:

@my_channel_bot

— Отправьте пост для предложки
— Можно приложить фото/видео
— Сообщение будет анонимным

2. Бот сохраняет заявку

Обычно сообщение записывается в базу данных со статусом:

{
  "id": 152,
  "user_id": 777,
  "text": "Новость дня...",
  "media": "photo.jpg",
  "status": "pending"
}

3. Админы получают заявку

Самая популярная схема — закрытый чат модераторов.

[ Опубликовать ]
[ Отклонить ]
[ Ответить ]

Под сообщением появляются inline‑кнопки, через которые модератор управляет публикацией.

4. Публикация в канал

После нажатия кнопки «Опубликовать» бот размещает сообщение в канале.

bot.copyMessage(...)

Обычно используют copyMessage, а не forwardMessage, чтобы скрыть автора и сделать пост «чистым».

Типичный функционал

Технологии

Backend

Базы данных

FSM — сценарии работы

/start
  ↓
"Отправьте текст"
  ↓
"Добавьте медиа?"
  ↓
"Подтвердить?"

Такие сценарии обычно строятся через FSM (finite state machine).

MVP предложки

1. Пользователь отправляет пост
2. Бот пересылает админу
3. Админ нажимает "Пост"
4. Бот публикует в канал

Такой MVP можно сделать за вечер на aiogram.

Пример полного потока

Юзер:
"Вот мем"

Бот:
"Спасибо, отправлено модераторам"

Админ-чат:
#512

[фото]
"Вот мем"

[Пост]
[Отклонить]

↓ нажимает "Пост"

Канал:
[фото]
Вот мем

Итог

Самая распространённая архитектура Telegram‑предложки:

Пользователь
   ↓
Бот
   ↓
Закрытый чат модеров
   ↓
Кнопка "Пост"
   ↓
Канал

Потому что это: