Описание проекта
Создать полнофункционального Telegram-бота «Доска объявлений» на Node.js с использованием Telegraf и PostgreSQL. Бот должен позволять пользователям подавать объявления пошагово, проходить модерацию, публиковать посты в группы и каналы, поддерживать платное размещение, закрепление с автопостингом, реферальную программу и админ-панель для управления настройками.
Основные функции для пользователя
- Подача объявления по шагам: выбор категории → заголовок → город → фото (от 1 до 5) → описание → цена → предпросмотр → отправка на модерацию.
- После модерации (принято/отклонено с причиной): опубликованные объявления отправляются в основную группу и в канал соответствующей категории (сохраняются идентификаторы сообщений).
- Правило бесплатного размещения: одно объявление бесплатно в каждой категории, все последующие - платные (оплата через ЮMoney).
- Раздел «Мои объявления» со статусами, возможностью удалить, отредактировать, а также закрепить (только опубликованные).
- Закрепление: покупка срока, затем ежедневный репост в 10:00 по Москве (автоматическое удаление предыдущего репоста и публикация нового). При окончании срока - снятие закрепления и отправка уведомления пользователю.
- Бонусная система: бонусный баланс, журнал начислений и списаний, реферальные проценты с оплат приведенных пользователей. Оплата бонусами - не более 50% от стоимости услуги.
Панель администратора в боте
- Возможность менять цены на услуги, лимиты бесплатных объявлений, размер реферального процента.
- Управление категориями: название → идентификатор канала.
Требования к надежности
- Бот должен иметь права на публикацию, удаление сообщений в чатах.
- Запуск через менеджер процессов (например, PM2).
- Ведение логов работы.
- Защита от ошибок при удалении или публикации (проверки, обработка исключений).