# 📅 Календарь событий дома — v1.14 **Версия:** v1.14 **Дата:** 27 февраля 2026 г. **Статус:** ✅ Реализовано --- ## 📋 Описание Календарь событий дома позволяет создавать события (собрания, субботники, праздники), записываться на участие, получать напоминания. Админ создаёт события, жильцы записываются на участие. --- ## 🎯 Возможности - ✅ Создание событий (собрания, субботники, праздники, спорт, детское) - ✅ Запись на участие (/join) - ✅ Отписка от события (/leave) - ✅ Просмотр предстоящих событий - ✅ Мои события - ✅ Список участников - ✅ Отмена события админом - ✅ Авто-напоминания за 24 часа --- ## 📱 Команды ### Для админов: | Команда | Описание | Пример | |---------|----------|--------| | `/event_add` | Создать событие | `/event_add` | | `/participants ` | Участники события | `/participants 5` | | `/event_cancel ` | Отменить событие | `/event_cancel 5` | ### Для всех: | Команда | Описание | Пример | |---------|----------|--------| | `/events` | Предстоящие события | `/events` | | `/join ` | Записаться на событие | `/join 5` | | `/leave ` | Отписаться от события | `/leave 5` | | `/my_events` | Мои события | `/my_events` | --- ## 🎯 Типы событий | Тип | Emoji | Описание | |-----|-------|----------| | **meeting** | 📋 | Собрание, встреча | | **subbotnik** | 🧹 | Субботник | | **holiday** | 🎉 | Праздник | | **sport** | ⚽ | Спортивное событие | | **kids** | 🎈 | Детское событие | | **general** | 📅 | Общее событие | --- ## 🎯 Сценарии использования ### Сценарий 1: Создание события (админ) **1. Админ пишет:** ``` /event_add ``` **2. Бот просит название:** ``` 📅 Создание события Отправьте название события: Например: "Общее собрание жильцов" ``` **3. Админ отправляет:** ``` Общее собрание жильцов ``` **4-7. Пошаговый ввод:** - Дата: `01.03.2026 19:00` - Место: `Холл 1 этажа` - Описание: `Обсуждение вопросов капремонта` **8. Бот подтверждает:** ``` ✅ Событие создано! 📅 Общее собрание жильцов 🗓️ 01.03.2026 19:00 📍 Холл 1 этажа 🔖 ID: 1 Для просмотра: /events ``` --- ### Сценарий 2: Запись на событие **Жилец:** ``` /join 1 ``` **Бот:** ``` ✅ Вы записались на событие! 📅 Общее собрание жильцов 🗓️ 01.03.2026 19:00 👥 Участников: 5 ``` --- ### Сценарий 3: Просмотр событий **Жилец:** ``` /events ``` **Бот:** ``` 📅 Предстоящие события 📋 Общее собрание жильцов └─ 01.03.2026 19:00 └─ 📍 Холл 1 этажа └─ 🔖 ID: 1 🧹 Субботник во дворе └─ 15.03.2026 10:00 └─ 📍 Детская площадка └─ 🔖 ID: 2 💡 Для участия: /join ``` --- ### Сценарий 4: Мои события **Жилец:** ``` /my_events ``` **Бот:** ``` 📅 Ваши события 📋 Общее собрание жильцов └─ 01.03.2026 19:00 └─ 📍 Холл 1 этажа 🧹 Субботник во дворе └─ 15.03.2026 10:00 └─ 📍 Детская площадка ``` --- ### Сценарий 5: Участники события (админ) **Админ:** ``` /participants 1 ``` **Бот:** ``` 👥 Участники: Общее собрание жильцов Всего: 5 • Иван Иванов (кв. 45) • Петр Петров (кв. 88) • Анна Сидорова (кв. 12) • Мария Козлова (кв. 100) • Василий Смирнов (кв. 50) ``` --- ### Сценарий 6: Напоминание о событии **За 24 часа до события (автоматически):** **Бот пишет в чат:** ``` ⏰ Напоминание о событии! 📅 Общее собрание жильцов 🗓️ 01.03.2026 19:00 📍 Холл 1 этажа Не забудьте принять участие! ``` --- ## 🗄️ База данных ### Таблица `events`: ```sql CREATE TABLE events ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, description TEXT, event_type TEXT DEFAULT 'general', event_date TIMESTAMP NOT NULL, location TEXT, created_by BIGINT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, is_active BOOLEAN DEFAULT 1, reminder_sent BOOLEAN DEFAULT 0 ) ``` ### Таблица `event_participants`: ```sql CREATE TABLE event_participants ( id INTEGER PRIMARY KEY AUTOINCREMENT, event_id INTEGER NOT NULL, user_id BIGINT NOT NULL, joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (event_id) REFERENCES events(id), FOREIGN KEY (user_id) REFERENCES users(user_id) ) ``` --- ## 🧪 Тестирование ### Чек-лист проверки: #### 1. Создание события ```bash # Админ: /event_add # Ввести название, дату, место, описание ``` - [ ] Событие создано - [ ] ID присвоен - [ ] В БД сохранено #### 2. Запись на событие ```bash /join 1 ``` - [ ] Запись успешна - [ ] Участник добавлен #### 3. Просмотр событий ```bash /events ``` - [ ] События отображаются - [ ] Дата и место указаны #### 4. Мои события ```bash /my_events ``` - [ ] Записанные события показаны #### 5. Участники ```bash /participants 1 ``` - [ ] Список участников показан #### 6. Напоминание ```bash # Подождать до 24 часов до события ``` - [ ] Напоминание пришло в чат --- ## 📁 Изменённые файлы | Файл | Изменения | |------|-----------| | `database/models.py` | Модели Event, EventParticipant | | `database/migrate_add_events.py` | Миграция БД | | `services/events.py` | Сервис событий | | `handlers/events.py` | Хендлеры событий | | `services/scheduler.py` | Напоминания о событиях | | `handlers/__init__.py` | Импорт events_router | | `main.py` | Регистрация events_router | --- ## 🚀 Как использовать ### Для админа: 1. **Создать событие:** ``` /event_add ``` 2. **Посмотреть участников:** ``` /participants 1 ``` 3. **Отменить событие:** ``` /event_cancel 1 ``` ### Для жильца: 1. **Посмотреть события:** ``` /events ``` 2. **Записаться:** ``` /join 1 ``` 3. **Мои события:** ``` /my_events ``` 4. **Отписаться:** ``` /leave 1 ``` --- ## 💡 Советы ### Типы событий: - **meeting** — собрания жильцов - **subbotnik** — субботники, уборки - **holiday** — праздники (Новый год, 8 марта) - **sport** — футбол, волейбол во дворе - **kids** — детские мероприятия - **general** — остальное ### Напоминания: - Отправляются **за 24 часа** до события - **Один раз** на событие - В **общий чат** ### Отмена события: - Админ может отменить событие - Событие помечается `is_active=False` - Участники не удаляются --- ## 🔧 Отладка ### Посмотреть события в БД: ```bash cd /home/matrixhasyou/domovoy_bot source venv/bin/activate sqlite3 database/domovoy.db SELECT id, title, event_date, location, is_active FROM events ORDER BY event_date; ``` ### Логи: ```bash tail -f logs/bot.log | grep -i "событ\|event" ``` --- ## ✅ Преимущества | Было | Стало | |------|-------| | События в чате забываются | **Календарь событий** | | Не видно кто придёт | **Запись на участие** | | Забывают про события | **Авто-напоминания** | | Нет списка участников | **/participants** | --- **Календарь событий готов! 📅** **v1.14 — ФИНАЛЬНАЯ ВЕРСИЯ ПЕРЕД v2.0!** 🎉