Мультичат-авторизація¶
Telegram-бот BamDude підтримує кілька чатів з незалежною авторизацією, рольовими правами та контролем реєстрації.
Огляд¶
Кожен чат Telegram (приватний або груповий) пов'язаний з групою (роллю) BamDude. Це забезпечує:
- Права для кожного чату -- Різні чати можуть мати різні рівні доступу
- Маршрутизація сповіщень -- Кожен чат отримує лише ті події, на які підписаний
- Тихі години -- Налаштування тихих годин для кожного чату
- Контроль реєстрації -- Контроль авторизації нових чатів
Керування чатами¶
Керуйте чатами Telegram у веб-інтерфейсі в Параметри > Сповіщення > Чати Telegram.
Властивості чату¶
| Властивість | Опис |
|---|---|
| ID чату | Ідентифікатор чату Telegram (автовизначення) |
| Назва чату | Відображувана назва |
| Група | Призначення групи (ролі) BamDude |
| Події сповіщень | Які події отримує цей чат |
| Тихі години | Часове вікно для приглушення сповіщень |
| Щоденний дайджест | Отримувати зведення замість окремих повідомлень |
| Активний | Увімкнення/вимкнення чату |
Перевірка прав¶
Middleware бота перевіряє права перед виконанням команд:
- Користувач надсилає команду або натискає інлайн-кнопку
- Middleware знаходить групу чату
- Перевіряє, чи має група необхідні права
- Дозволяє або забороняє дію
Приклади прав¶
| Дія | Необхідні права |
|---|---|
| Перегляд принтерів | printers:read |
| Керування принтерами | printers:control |
| Запуск друків | queue:create |
| Перегляд черги | queue:read |
| Керування обслуговуванням | settings:update |
Реєстрація: open vs. closed¶
Один булеан — telegram_registration_open (Settings → Notifications → Telegram) — керує тим, як з'являються нові чати:
| Налаштування | Поведінка |
|---|---|
telegram_registration_open=true |
Невідомі чати, що написали боту, авто-реєструються з is_active=False, group_id=NULL. Вони ще нічого не можуть — адмін має все одно призначити групу і активувати їх у Settings → Notifications → Telegram Chats. По суті, режим "хочу побачити, хто хоче в'їхати". |
telegram_registration_open=false (дефолт) |
Невідомі чати тихо відхиляються. Щоб впустити новий чат, адмін додає його вручну у веб-інтерфейсі. |
Третього "відкритий + auto-active default group" режиму немає — жодна з опцій не видає прав автоматично. Активація завжди є ручним кроком у веб-інтерфейсі.
Middleware авторизації¶
Middleware авторизації (telegram_handlers/auth_middleware.py) працює для кожного повідомлення та callback:
- Перевіряє, чи існує чат у таблиці
telegram_chats. - Якщо новий і
telegram_registration_open=true: вставляє рядок зis_active=False, group_id=NULLі тихо дропає повідомлення — чат стане функціональним лише коли адмін активує його і призначить групу у веб-інтерфейсі. - Якщо новий і
telegram_registration_open=false: одразу відхиляє повідомлення. - Завантажує групу та права чату.
- Впроваджує права в контекст обробника.
- Обробник перевіряє необхідні права перед дією.
Сповіщення для кожного чату¶
Кожен чат може підписатися на різні події сповіщень:
- Події друку -- завершення, помилка, прогрес
- Події черги -- додано, запущено, очікує, завершено
- Системні події -- принтер офлайн, помилки HMS, обслуговування необхідне
Налаштовується у веб-інтерфейсі для кожного чату.
Поради¶
Чат адміністратора
Створіть приватний чат з групою Адміністратори для повного контролю, і груповий чат з групою Глядачі для моніторингу.
Тихі години
Встановіть тихі години для кожного чату, щоб уникнути сповіщень у неробочий час. Щоденний дайджест узагальнить пропущені події.
Відкликання доступу
Щоб відкликати доступ чату, видаліть його з веб-інтерфейсу або встановіть як неактивний. Бот перестане відповідати цьому чату.