domovoy_bot/РАСПИСАНИЕ_ОТКЛЮЧЕНИЙ.md
Admin ba4676b0af v1.0 MVP - Инициализация проекта 🏠
 Регистрация и верификация жильцов
 Рейтинг активности (уровни)
 Детект шпионов (Score 0-100)
 Анти-мат система (3 предупреждения → бан)
 Админ-панель с рассылкой
 Учёт квартир (несколько жильцов)
 Телефоны экстренных служб и мастеров
 Еженедельный экспорт JSON
 Прокси (socks5) для обхода РКН

Бекап: backups/versions/v1.0_mvp_2026-02-26/

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 10:54:16 +00:00

10 KiB
Raw Blame History

📅 Расписание отключений — v1.4

Версия: v1.4 Дата: 26 февраля 2026 г. Статус: Реализовано


📋 Описание

Система управления расписанием плановых отключений (вода, свет, отопление, газ, лифт). Админ создаёт события, бот напоминает за 1 час до начала, жильцы всегда в курсе отключений.


🎯 Возможности

  • Создание событий с типом, названием, временем
  • 6 типов отключений (вода, свет, отопление, газ, лифт, общее)
  • Inline-меню для выбора типа
  • Пошаговое создание (тип → название → время → описание)
  • Просмотр расписания командой /график
  • Напоминание за 1 час до начала (авто)
  • Удаление событий из расписания
  • Emoji для каждого типа

📱 Команды

Для администраторов:

Команда Описание Пример
/schedule_add Добавить событие в расписание /schedule_add
/schedule_del <ID> Удалить событие по ID /schedule_del 5

Для всех:

Команда Описание Пример
/график Показать расписание отключений /график
/schedule Альтернатива /график /schedule

🎯 Сценарии использования

Сценарий 1: Создание события (пошагово)

1. Админ пишет:

/schedule_add

2. Бот показывает меню:

📅 Добавление события в расписание

Выберите тип отключения:

1⃣ 💧 Вода
2⃣ ⚡ Электричество
3⃣ 🔥 Отопление
4⃣ 🔶 Газ
5⃣ 🛗 Лифт
6⃣ 📋 Общее

Или отправьте номер типа (1-6):
[кнопки с типами]

3. Админ нажимает 💧 Вода или отправляет 1

4. Бот просит название:

✅ Тип: 💧 Вода

Теперь отправьте название события:
Например: "Плановое отключение воды"

5. Админ отправляет:

Плановое отключение воды

6. Бот просит время начала:

✅ Название: Плановое отключение воды

Теперь отправьте дату и время НАЧАЛА в формате:
ДД.ММ.ГГГГ ЧЧ:ММ

Например: 27.02.2026 10:00

7. Админ отправляет:

27.02.2026 10:00

8. Бот просит время окончания:

✅ Начало: 27.02.2026 10:00

Теперь отправьте дату и время ОКОНЧАНИЯ:
ДД.ММ.ГГГГ ЧЧ:ММ

9. Админ отправляет:

27.02.2026 14:00

10. Бот просит описание:

✅ Окончание: 27.02.2026 14:00

Отправьте описание (необязательно) или нажмите "Пропустить":
[⏭️ Пропустить]

11. Админ отправляет описание или пропускает:

Будут отключены стояки с 1 по 10 этаж

12. Бот подтверждает создание:

✅ Событие добавлено в расписание!

💧 Вода — Плановое отключение воды

📅 Начало: 27.02.2026 10:00
📅 Окончание: 27.02.2026 14:00
⏱️ Длительность: 4.0 ч.
🔖 ID: 1

Для просмотра: /график

Сценарий 2: Просмотр расписания

Жилец:

/график

Бот:

📅 Расписание отключений

1. 💧 Плановое отключение воды
   └─ Тип: Вода
   └─ Начало: 27.02.2026 10:00
   └─ Окончание: 27.02.2026 14:00
   └─ Длительность: 4.0 ч.
   └─ Описание: Будут отключены стояки с 1 по 10 этаж

2. ⚡ Ремонт трансформатора
   └─ Тип: Электричество
   └─ Начало: 28.02.2026 09:00
   └─ Окончание: 28.02.2026 17:00
   └─ Длительность: 8.0 ч.

Сценарий 3: Напоминание за 1 час

За 1 час до события (автоматически):

Бот пишет в чат:

⏰ Напоминание: отключение через 1 час!

💧 Плановое отключение воды

📅 Начало: 27.02.2026 10:00
📅 Окончание: 27.02.2026 14:00
⏱️ Длительность: 4.0 ч.

Не забудьте сделать запасы!

Сценарий 4: Удаление события

Админ:

/schedule_del 1

Бот:

✅ Событие "Плановое отключение воды" удалено из расписания

🗄️ База данных

Таблица schedules:

CREATE TABLE schedules (
    schedule_id INTEGER PRIMARY KEY AUTOINCREMENT,
    schedule_type TEXT NOT NULL,        -- water, electricity, heating...
    title TEXT NOT NULL,
    description TEXT,
    start_time TIMESTAMP NOT NULL,
    end_time TIMESTAMP NOT NULL,
    created_by BIGINT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    reminder_sent BOOLEAN DEFAULT 0,    -- Отправлено ли напоминание
    is_active BOOLEAN DEFAULT 1,
    FOREIGN KEY (created_by) REFERENCES users(user_id)
)

Индексы:

  • ix_schedules_type — по типу
  • ix_schedules_time — по времени
  • ix_schedules_active — по статусу

🧪 Тестирование

Чек-лист проверки:

1. Создание события

# Админ:
/schedule_add
# Выбрать тип, название, время
  • Меню типов отображается
  • Пошаговый ввод работает
  • Событие сохранено в БД

2. Просмотр расписания

/график
  • События отображаются
  • Emoji правильные
  • Длительность считается верно

3. Напоминание

# Создать событие которое начнётся через 1-1.5 часа
# Подождать до срабатывания планировщика
  • Напоминание пришло за 1 час
  • reminder_sent установлен в True

4. Удаление

# Админ:
/schedule_del <ID>
  • Событие удалено (is_active=False)

📁 Изменённые файлы

Файл Изменения
database/models.py Модель Schedule
database/migrate_add_schedules.py Миграция БД
handlers/schedule.py Хендлеры расписания
keyboards/inline.py Клавиатуры для расписания
services/scheduler.py Напоминания
handlers/__init__.py Импорт schedule_router
main.py Регистрация schedule_router

🚀 Как использовать

Для админа:

  1. Добавить событие:

    /schedule_add
    

    Далее следуй инструкциям бота.

  2. Посмотреть расписание:

    /график
    
  3. Удалить событие:

    /schedule_del 1
    

Для жильца:

  1. Посмотреть расписание:

    /график
    
  2. Получить напоминание:

    • Автоматически за 1 час до начала

💡 Советы

Типы отключений:

Тип Когда использовать
💧 Вода Отключение ХВС/ГВС
Электричество Ремонт сетей, трансформатора
🔥 Отопление Сезонное отключение, ремонт
🔶 Газ Профилактические работы
🛗 Лифт Ремонт лифта
📋 Общее Другие работы

Напоминания:

  • Бот проверяет напоминания каждый час
  • Напоминает за 1 час до начала
  • Если событие создано меньше чем за 1 час — напоминание не отправляется

🔧 Отладка

Посмотреть события в БД:

cd /home/matrixhasyou/domovoy_bot
source venv/bin/activate
sqlite3 database/domovoy.db

SELECT schedule_id, schedule_type, title, start_time, end_time, reminder_sent
FROM schedules
WHERE is_active = 1
ORDER BY start_time;

Логи:

tail -f logs/bot.log | grep -i "напомин\|schedule"

Преимущества

Было Стало
Объявления в чате Расписание в боте
Забывают про отключения Напоминание за 1 час
Нет истории Сохранение в БД
Ручное напоминание Авто-напоминания

Расписание отключений готово! 📅

Следующий шаг: тестирование на тестовой группе и фиксация версии v1.4