From e319ea2e73a205605842431011bae02564c78d5f Mon Sep 17 00:00:00 2001 From: dl Date: Thu, 29 May 2025 13:28:34 +0500 Subject: [PATCH] Human readable locks name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Теперь названия замков (дверей) на кнопках, отображаемых пользователям, человекочитаемы, все соотношения заполняются в bot_config.json - Поправлен docker-compose.yml, размер логов ограничен тремя файлами по 10M каждый --- README.md | 8 ++++---- bot_config.json | 15 ++++++++++++--- docker-compose.yml | 5 +++++ handlers/doors_handler.py | 13 +++++++++++-- keyboard.py | 5 ++++- 5 files changed, 36 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 983ccaa..a815989 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # TODO -- [x] Написать базовый функционал +- [x] Написать базовый функционал ~~- [ ] Создать соотношение типа "id_пользователя: досутп_к_замку:"~~ - [x] Сделать проверку пользователей по их номеру телефона ... - [x] Удалить модуль getenv -- [x] Создать и парсить json с информацией о пользователях и их номерах +- [x] Создать и парсить json с информацией о пользователях и их номерах ~~- [ ] Проверять, является ли пользователь администратором, если является, выводить дополнительную кнопку, предлагающую добавить номер в БД~~ - [x] Изменить json хранящийся локально на запросы к API -- [ ] Изменить названия комнта в локальном json -- [ ] Ограничить логи внутри докера +- [x] Изменить названия комнта в локальном json +- [x] Ограничить логи внутри докера diff --git a/bot_config.json b/bot_config.json index 95d50ba..180ecb8 100644 --- a/bot_config.json +++ b/bot_config.json @@ -2,13 +2,22 @@ "bot_token": "", "user_api_url": "https://papi.dataekb.ru/check_access", "locks": { - "ЦОД418": { - "ip": "10.9.1.26", - "pass": "73B15D12" + "2642686605": { + "ip": "10.9.1.25", + "pass": "F901C40A" + }, + "2642179854": { + "ip": "10.9.1.28", + "pass": "F901C40A" }, "2634952899": { "ip": "10.9.1.27", "pass": "F901C40A" } + }, + "locks_map": { + "2642686605": "ЦОД3+ЦОД_Т2", + "2642179854": "ЭТАЖ_5", + "2634952899": "ЭТАЖ_4" } } diff --git a/docker-compose.yml b/docker-compose.yml index f48ec11..7237cfa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,3 +8,8 @@ services: volumes: - ./.env:/bot/open_sesam/.env restart: always + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" diff --git a/handlers/doors_handler.py b/handlers/doors_handler.py index 75a6ec7..c55d2c8 100644 --- a/handlers/doors_handler.py +++ b/handlers/doors_handler.py @@ -8,6 +8,14 @@ from auth import AUTHORIZED_USERS, is_user_auth from config import config +def get_lock_code(display_text: str) -> str: + locks_map = config.get("locks_map", {}) + for code, friendly in locks_map.items(): + if friendly == display_text: + return code + return display_text + + def register_open_door_handler(dp: Dispatcher): @dp.message() async def open_door_handler(msg: Message): @@ -16,14 +24,15 @@ def register_open_door_handler(dp: Dispatcher): await msg.answer( "Доступ запрщен. Необходимо предоставить свой номер телефона." ) + return user_data = AUTHORIZED_USERS.get(user_id) if not user_data: await msg.answer("Ошибка авторизации пользователя.") return - lock_key = msg.text - lock_conf = config.get("locks", {}).get(msg.text) + lock_code = get_lock_code(msg.text) + lock_conf = config.get("locks", {}).get(lock_code) if not lock_conf: await msg.answer("Информации по замку не найдено") return diff --git a/keyboard.py b/keyboard.py index 5121d87..e46062e 100755 --- a/keyboard.py +++ b/keyboard.py @@ -1,11 +1,14 @@ from aiogram.utils.keyboard import ReplyKeyboardBuilder from aiogram.types import KeyboardButton +from config import config def get_locks_keyboard(allowed_locks: list): kb = ReplyKeyboardBuilder() + locks_map = config.get("locks_map", {}) for lock in allowed_locks: - kb.button(text=lock) + display_text = locks_map.get(lock, lock) + kb.button(text=display_text) return kb.as_markup(resize_keyboard=True)