### Техническое задание (ТЗ) для разработки Telegram-бота с админкой и интеграцией с Google Таблицами
#### 1. **Описание задачи**
Разработать Telegram-бот с панелью администратора (админкой), через который можно будет привязывать Google-таблицы для мониторинга и обработки данных, вводимых пользователями в ячейки. Основная цель бота — отслеживание и управление статусом введенных в таблицы Telegram юзернеймов (начинаются на `@ username`), и их постоянное автоматическое обновление в базе данных.
#### 2. **Функциональные требования**
##### 2.1. **Привязка Google-таблиц**
- Администратор через панель управления может привязывать нужные Google-таблицы к боту.
- Каждая привязанная таблица должна быть доступна для мониторинга изменений в реальном времени.
- Возможность мониторинга нескольких таблиц одновременно.
##### 2.2. **Мониторинг данных**
- Постоянный мониторинг ввода данных в ячейки таблиц, отслеживание появления новых данных (юзернеймов).
- Мониторинг всех страниц и вкладок таблиц (все данные таблицы должны быть охвачены).
##### 2.3. **Обработка юзернеймов**
- **Добавление юзернеймов**:
- Если введенный юзернейм новый (отсутствует в базе данных), он добавляется в базу.
- Ячейка с этим юзернеймом в таблице окрашивается в зеленый цвет на **7 дней** (индикатор зарезервированного юзернейма).
- В базе данных записывается информация о том, что этот юзернейм забронирован на неделю.
- Если введеный юзернейм уже зарезервирован - ячейка стает красного цвета
- **Статус занятости**:
- Если другой пользователь вводит тот же юзернейм в свою таблицу, его ячейка становится красной (указывая, что юзернейм временно занят другим пользователем).
- **Окончание срока резервирования**:
- Когда срок резервирования (7 дней) для юзернейма истекает, в базе данных юзернейм становится "свободным".
- В таблице:
- Ячейка пользователя, который изначально добавил юзернейм, окрашивается в желтый цвет. Это сигнал, что нужно удалить старый юзернейм и снова ввести его, чтобы обновить данные.
- В таблицах других пользователей ячейка с этим юзернеймом снова окрашивается в зеленый цвет (указывая, что юзернейм теперь свободен).
##### 2.4. **Работа с базой данных**
- **Основная таблица (база данных)**:
- Хранит все юзернеймы, введенные за всё время использования системы.
- Вторая колонка базы данных — это юзернеймы, соответствующие юзернеймам, введенным пользователями.
- Третья колонка — время до окончания активности юзернейма (считается оставшееся время до конца 7-дневного периода).
- **Связь с Google-таблицами**:
- Таблица, привязанная к конкретной Google-таблице, динамически обновляется, чтобы отображать статус каждого юзернейма:
- Красный цвет — юзернейм занят.
- Зеленый цвет — юзернейм свободен.
- Желтый цвет — время активности истекло, требуется повторный ввод.
##### 2.5. **Цветовые индикаторы**
- Зеленый цвет ячейки — юзернейм новый, зарезервирован на 7 дней.
- Красный цвет — юзернейм занят другим пользователем.
- Желтый цвет — истек срок резервирования, требуется обновление (удаление и повторный ввод юзернейма).
#### 3. **Админка (панель администратора)**
- Возможность добавления/удаления Google-таблиц.
- Просмотр привязанных таблиц.
- Контроль текущего состояния базы данных (просмотр всех активных и освобожденных юзернеймов).
- Возможность редактирования и сброса базы данных.
- Настройка интервала мониторинга данных (например, раз в минуту).
- Просмотр статистики каждой таблицы и пользователя ( работника который ведет рездел этой таблицы, которая имеет свое название )
- Настройка и изменения срока резервирования каждой таблицы
- Удобный и простой интерфейс с инлайновыми кнопками и командами, а также выводом информации
#### 5. **Алгоритм работы**
1. **Привязка таблицы**: Администратор через админку привязывает таблицу, бот начинает её мониторинг.
2. **Ввод данных**: Пользователь вводит юзернейм в Google-таблицу.
3. **Проверка базы данных**:
- Если юзернейм новый — добавляется в базу данных, ячейка окрашивается в зеленый цвет.
- Если юзернейм уже существует и зарезервирован — ячейка окрашивается в красный цвет.
4. **Мониторинг статусов**:
- Через 7 дней юзернейм освобождается, и цвет ячейки меняется.
5. **Обновление таблиц**: Все изменения синхронизируются между базой данных и Google-таблицами.