# 📢 Доска объявлений (соседская) — v1.5 **Версия:** v1.5 **Дата:** 26 февраля 2026 г. **Статус:** ✅ Реализовано --- ## 📋 Описание Соседская доска объявлений — жильцы могут размещать объявления о продаже, покупке, отдаче вещей, поиске потерянного, услугах. Объявления публикуются в чате, хранятся 7 дней, затем автоматически удаляются. --- ## 🎯 Возможности - ✅ 6 категорий объявлений (продам, куплю, отдам, потеряно, нашлось, услуга) - ✅ Пошаговое создание (категория → название → описание → цена → телефон) - ✅ Публикация в общем чате - ✅ Авто-удаление через 7 дней - ✅ Просмотр всех активных объявлений - ✅ Удаление своих объявлений - ✅ Только для верифицированных жильцов - ✅ Модерация для админов --- ## 📱 Команды ### Для всех верифицированных: | Команда | Описание | Пример | |---------|----------|--------| | `/ad` или `/объявление` | Создать объявление | `/ad` | | `/ads` или `/доска` | Показать все объявления | `/ads` | | `/ad_del ` | Удалить своё объявление | `/ad_del 5` | ### Для админов: | Команда | Описание | Пример | |---------|----------|--------| | `/ads_moderate` | Объявления на модерации | `/ads_moderate` | | `/ad_approve ` | Подтвердить объявление | `/ad_approve 5` | --- ## 🎯 Категории объявлений | № | Категория | Emoji | Когда использовать | |---|-----------|-------|-------------------| | 1 | 💰 Продам | 💰 | Продажа вещей, мебели, техники | | 2 | 🛒 Куплю | 🛒 | Поиск вещей для покупки | | 3 | 🎁 Отдам | 🎁 | Отдам даром, бесплатно | | 4 | 😿 Потеряно | 😿 | Потеряны вещи, животные | | 5 | 😺 Нашлось | 😺 | Нашлись вещи, животные | | 6 | 🔧 Услуга | 🔧 | Предложение услуг | --- ## 🎯 Сценарии использования ### Сценарий 1: Создание объявления (продам) **1. Жилец пишет:** ``` /ad ``` **2. Бот показывает меню:** ``` 📢 Создание объявления Выберите категорию: 1️⃣ 💰 Продам 2️⃣ 🛒 Куплю 3️⃣ 🎁 Отдам 4️⃣ 😿 Потеряно 5️⃣ 😺 Нашлось 6️⃣ 🔧 Услуга Или отправьте номер категории (1-6): [кнопки с категориями] ``` **3. Жилец нажимает** `💰 Продам` **или отправляет** `1` **4. Бот просит название:** ``` ✅ Категория: 💰 Продам Теперь отправьте название объявления: Например: "Продам диван" ``` **5. Жилец отправляет:** ``` Продам диван угловой ``` **6. Бот просит описание:** ``` ✅ Название: Продам диван угловой Теперь отправьте описание: Например: "Диван угловой, состояние хорошее, самовывоз" ``` **7. Жилец отправляет:** ``` Диван угловой, 2х спальный, состояние хорошее. Есть небольшие следы использования. Самовывоз с 5 этажа. ``` **8. Бот просит цену:** ``` ✅ Описание принято Укажите цену (в рублях) или отправьте "0" если бесплатно: Например: 5000 ``` **9. Жилец отправляет:** ``` 5000 ``` **10. Бот просит телефон:** ``` ✅ Цена: 5000 Укажите контактный телефон или отправьте "пропустить": Например: +7 (999) 123-45-67 ``` **11. Жилец отправляет:** ``` +7 (999) 123-45-67 ``` **12. Бот публикует объявление в чат:** ``` 💰 Продам: Продам диван угловой 📝 Диван угловой, 2х спальный, состояние хорошее. Есть небольшие следы использования. Самовывоз с 5 этажа. 💰 Цена: 5000 ₽ 📞 Телефон: +7 (999) 123-45-67 ⏳ Действует до: 05.03.2026 🔖 ID: 1 ``` **13. Жилец получает подтверждение:** ``` ✅ Объявление опубликовано! ID: 1 Действует до: 05.03.2026 Для просмотра: /ads ``` --- ### Сценарий 2: Просмотр всех объявлений **Жилец:** ``` /ads ``` **Бот:** ``` 📢 Доска объявлений 1. 💰 Продам: Продам диван угловой └─ Цена: 5000 ₽ └─ Действует до: 05.03.2026 └─ ID: 1 2. 🎁 Отдам: Отдам котёнка └─ Цена: Бесплатно └─ Действует до: 04.03.2026 └─ ID: 2 3. 🔧 Услуга: Ремонт сантехники └─ Цена: 1000 ₽ └─ Действует до: 03.03.2026 └─ ID: 3 💡 Для создания: /ad ``` --- ### Сценарий 3: Удаление своего объявления **Жилец:** ``` /ad_del 1 ``` **Бот:** ``` ✅ Объявление "Продам диван угловой" удалено ``` **Объявление удаляется из чата и базы.** --- ### Сценарий 4: Объявление с модерацией **Если включена модерация:** 1. Объявление создаётся но не публикуется 2. Админ получает уведомление 3. Админ: `/ads_moderate` — показывает неподтверждённые 4. Админ: `/ad_approve 1` — подтверждает 5. Объявление публикуется в чат --- ## 🗄️ База данных ### Таблица `ads`: ```sql CREATE TABLE ads ( ad_id INTEGER PRIMARY KEY AUTOINCREMENT, user_id BIGINT NOT NULL, category TEXT NOT NULL, -- sell, buy, give, lost, found, service title TEXT NOT NULL, description TEXT, price INTEGER, -- Цена в рублях phone TEXT, -- Контактный телефон message_id BIGINT, -- ID сообщения в чате created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, expires_at TIMESTAMP, -- Дата истечения (через 7 дней) is_active BOOLEAN DEFAULT 1, is_moderated BOOLEAN DEFAULT 0, -- Проверено админом FOREIGN KEY (user_id) REFERENCES users(user_id) ) ``` ### Индексы: - `ix_ads_category` — по категории - `ix_ads_active` — по статусу - `ix_ads_created_at` — по дате создания --- ## 🧪 Тестирование ### Чек-лист проверки: #### 1. Создание объявления ```bash # С верифицированного аккаунта: /ad # Выбрать категорию, название, описание, цену, телефон ``` - [ ] Меню категорий отображается - [ ] Пошаговый ввод работает - [ ] Объявление опубликовано в чат - [ ] Сохранено в БД #### 2. Проверка верификации ```bash # С неверифицированного аккаунта: /ad ``` - [ ] Бот отвечает "Только для верифицированных" #### 3. Просмотр объявлений ```bash /ads ``` - [ ] Объявления отображаются - [ ] Emoji правильные - [ ] Срок действия указан #### 4. Удаление объявления ```bash # Админ или автор: /ad_del 1 ``` - [ ] Объявление удалено - [ ] Сообщение в чате удалено #### 5. Авто-удаление ```bash # Подождать 7 дней (или изменить expires_at в БД) ``` - [ ] Объявление деактивировано автоматически --- ## 📁 Изменённые файлы | Файл | Изменения | |------|-----------| | `database/models.py` | Модель Ad | | `database/migrate_add_ads.py` | Миграция БД | | `handlers/ads.py` | Хендлеры объявлений | | `keyboards/inline.py` | Клавиатуры для объявлений | | `services/scheduler.py` | Авто-удаление | | `handlers/__init__.py` | Импорт ads_router | | `main.py` | Регистрация ads_router | --- ## 🚀 Как использовать ### Для жильца: 1. **Создать объявление:** ``` /ad ``` Далее следуй инструкциям бота. 2. **Посмотреть все объявления:** ``` /ads ``` 3. **Удалить своё объявление:** ``` /ad_del 1 ``` ### Для админа: 1. **Проверить объявления на модерации:** ``` /ads_moderate ``` 2. **Подтвердить объявление:** ``` /ad_approve 1 ``` 3. **Удалить любое объявление:** ``` /ad_del 1 ``` --- ## 💡 Советы ### Правила размещения: ✅ **Разрешено:** - Продажа личных вещей - Отдача даром - Поиск потерянного - Предложение услуг соседям ❌ **Запрещено:** - Реклама магазинов - Спам, мошенничество - Недвижимость (не относится к дому) - Услуги сторонних компаний ### Срок действия: - **7 дней** — стандартный срок - После истечения — авто-удаление - Можно создать новое объявление ### Цена: - Указывайте реальную цену - "0" или "бесплатно" — для бесплатных вещей - "Договорная" — в описании --- ## 🔧 Отладка ### Посмотреть объявления в БД: ```bash cd /home/matrixhasyou/domovoy_bot source venv/bin/activate sqlite3 database/domovoy.db SELECT ad_id, category, title, price, created_at, expires_at, is_active FROM ads ORDER BY created_at DESC LIMIT 10; ``` ### Логи: ```bash tail -f logs/bot.log | grep -i "объявлен\|ads" ``` ### Авто-удаление (тест): ```bash # В БД установить expires_at на вчера: UPDATE ads SET expires_at=datetime('now', '-1 day') WHERE ad_id=1; # Запустить очистку: # (на следующее утро в 04:00 или вручную через scheduler) ``` --- ## ✅ Преимущества | Было | Стало | |------|-------| | Объявления в словах | **Структурированные объявления** | | Забывают про объявления | **Авто-удаление через 7 дней** | | Нет категорий | **6 категорий с emoji** | | Не видно телефон | **Телефон в объявлении** | | Нет модерации | **Модерация для админов** | --- **Доска объявлений готова! 📢** *Следующий шаг: тестирование на тестовой группе и фиксация версии v1.5*