✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
12 KiB
📢 Доска объявлений (соседская) — v1.5
Версия: v1.5 Дата: 26 февраля 2026 г. Статус: ✅ Реализовано
📋 Описание
Соседская доска объявлений — жильцы могут размещать объявления о продаже, покупке, отдаче вещей, поиске потерянного, услугах. Объявления публикуются в чате, хранятся 7 дней, затем автоматически удаляются.
🎯 Возможности
- ✅ 6 категорий объявлений (продам, куплю, отдам, потеряно, нашлось, услуга)
- ✅ Пошаговое создание (категория → название → описание → цена → телефон)
- ✅ Публикация в общем чате
- ✅ Авто-удаление через 7 дней
- ✅ Просмотр всех активных объявлений
- ✅ Удаление своих объявлений
- ✅ Только для верифицированных жильцов
- ✅ Модерация для админов
📱 Команды
Для всех верифицированных:
| Команда | Описание | Пример |
|---|---|---|
/ad или /объявление |
Создать объявление | /ad |
/ads или /доска |
Показать все объявления | /ads |
/ad_del <ID> |
Удалить своё объявление | /ad_del 5 |
Для админов:
| Команда | Описание | Пример |
|---|---|---|
/ads_moderate |
Объявления на модерации | /ads_moderate |
/ad_approve <ID> |
Подтвердить объявление | /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: Объявление с модерацией
Если включена модерация:
- Объявление создаётся но не публикуется
- Админ получает уведомление
- Админ:
/ads_moderate— показывает неподтверждённые - Админ:
/ad_approve 1— подтверждает - Объявление публикуется в чат
🗄️ База данных
Таблица ads:
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. Создание объявления
# С верифицированного аккаунта:
/ad
# Выбрать категорию, название, описание, цену, телефон
- Меню категорий отображается
- Пошаговый ввод работает
- Объявление опубликовано в чат
- Сохранено в БД
2. Проверка верификации
# С неверифицированного аккаунта:
/ad
- Бот отвечает "Только для верифицированных"
3. Просмотр объявлений
/ads
- Объявления отображаются
- Emoji правильные
- Срок действия указан
4. Удаление объявления
# Админ или автор:
/ad_del 1
- Объявление удалено
- Сообщение в чате удалено
5. Авто-удаление
# Подождать 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 |
🚀 Как использовать
Для жильца:
-
Создать объявление:
/adДалее следуй инструкциям бота.
-
Посмотреть все объявления:
/ads -
Удалить своё объявление:
/ad_del 1
Для админа:
-
Проверить объявления на модерации:
/ads_moderate -
Подтвердить объявление:
/ad_approve 1 -
Удалить любое объявление:
/ad_del 1
💡 Советы
Правила размещения:
✅ Разрешено:
- Продажа личных вещей
- Отдача даром
- Поиск потерянного
- Предложение услуг соседям
❌ Запрещено:
- Реклама магазинов
- Спам, мошенничество
- Недвижимость (не относится к дому)
- Услуги сторонних компаний
Срок действия:
- 7 дней — стандартный срок
- После истечения — авто-удаление
- Можно создать новое объявление
Цена:
- Указывайте реальную цену
- "0" или "бесплатно" — для бесплатных вещей
- "Договорная" — в описании
🔧 Отладка
Посмотреть объявления в БД:
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;
Логи:
tail -f logs/bot.log | grep -i "объявлен\|ads"
Авто-удаление (тест):
# В БД установить expires_at на вчера:
UPDATE ads SET expires_at=datetime('now', '-1 day') WHERE ad_id=1;
# Запустить очистку:
# (на следующее утро в 04:00 или вручную через scheduler)
✅ Преимущества
| Было | Стало |
|---|---|
| Объявления в словах | Структурированные объявления |
| Забывают про объявления | Авто-удаление через 7 дней |
| Нет категорий | 6 категорий с emoji |
| Не видно телефон | Телефон в объявлении |
| Нет модерации | Модерация для админов |
Доска объявлений готова! 📢
Следующий шаг: тестирование на тестовой группе и фиксация версии v1.5