Задача
Требуется разработать Telegram бота для группы, который управляет размещением платных объявлений от участников. Пользователи отправляют заявку на размещение, бот обрабатывает её, запрашивает оплату и публикует объявление в группе от имени участника или через канал.
Основные функции
- Прием заявок на объявление (текст, медиа, номер телефона и т.д.) от участников группы.
- Расчет стоимости размещения (возможность задавать тарифы, продолжительность, срочность).
- Интеграция с системой онлайн-оплаты (например, ЮMoney, Qiwi или Telegram Stars).
- Автоматическая публикация объявления в группе после оплаты.
- Возможность удалять или продлевать объявления.
- Уведомления для пользователя: подтверждение отправки, статус оплаты, ссылка на опубликованное объявление.
- Учет времени окончания размещения и автоматическая отписка, если объявление не продлено.
Требования к боту
- Язык реализации: Python (чистый код, без low code, фреймворки допустимы aiogram/pyrogram/telebot).
- Логика
- Хранение данных об объявлениях и пользователях в БД (SQLite/PostgreSQL).
- Управление расписанием (продлить/удалить через cron или APScheduler).
- Фильтр дубликатов по номеру телефона или тексту объявления (опционально).
- Поддержка защищенного входа по одноразовому коду или через верификацию в группе (captcha, а1) при отправке заявки.
- Админ-панель (кейсы полный доступ к логам, настройкам)
- Просмотр и редактирование всех объявлений.
- Изменение тарифов (срок/цена).
- История транзакций.
- Ручная модерация объявлений перед публикацией.
- Статистика: количество оплат, публикаций, отзывов.
- UI:
- Кнопки меню и подсказки, текстовый пошаговый интерфейс.
- Обработка медиа (фото, видео, документы) для объявлений.
Разрешенные технологии
- Python 3.8+ и стандартные библиотеки.
- БД: SQLite/PostgreSQL в связке с asyncio.
- Библиотеки: aiogram (синхрон/асинхрон), APScheduler, pytz.
- Оплата: готовое или настраиваемое решение (например, netcity или клиенты банковских API без раскрытия ключей в коде).
- Деплой: готовность сделать инструкцию для запуска или написать Dockerfile (без указания реального сервера).
Возможные улучшения (на усмотрение исполнителя)
- Рассылка уведомлений о новых объявлениях (например, по теме).
- Возможность редактировать объявление лично (только владельцу).
- Сбор аналитики по количеству просмотров.
- Система отзывов и рейтингов.