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

9.3 KiB
Raw Permalink Blame History

📅 Календарь событий дома — v1.14

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


📋 Описание

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


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

  • Создание событий (собрания, субботники, праздники, спорт, детское)
  • Запись на участие (/join)
  • Отписка от события (/leave)
  • Просмотр предстоящих событий
  • Мои события
  • Список участников
  • Отмена события админом
  • Авто-напоминания за 24 часа

📱 Команды

Для админов:

Команда Описание Пример
/event_add Создать событие /event_add
/participants <ID> Участники события /participants 5
/event_cancel <ID> Отменить событие /event_cancel 5

Для всех:

Команда Описание Пример
/events Предстоящие события /events
/join <ID> Записаться на событие /join 5
/leave <ID> Отписаться от события /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 <ID>

Сценарий 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:

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:

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. Создание события

# Админ:
/event_add
# Ввести название, дату, место, описание
  • Событие создано
  • ID присвоен
  • В БД сохранено

2. Запись на событие

/join 1
  • Запись успешна
  • Участник добавлен

3. Просмотр событий

/events
  • События отображаются
  • Дата и место указаны

4. Мои события

/my_events
  • Записанные события показаны

5. Участники

/participants 1
  • Список участников показан

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

# Подождать до 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
  • Участники не удаляются

🔧 Отладка

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

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;

Логи:

tail -f logs/bot.log | grep -i "событ\|event"

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

Было Стало
События в чате забываются Календарь событий
Не видно кто придёт Запись на участие
Забывают про события Авто-напоминания
Нет списка участников /participants

Календарь событий готов! 📅

v1.14 — ФИНАЛЬНАЯ ВЕРСИЯ ПЕРЕД v2.0! 🎉