Human readable locks name
BOT_open_sesam/pipeline/head This commit looks good Details

- Теперь названия замков (дверей) на кнопках, отображаемых
пользователям, человекочитаемы, все соотношения заполняются в
bot_config.json
- Поправлен docker-compose.yml, размер логов ограничен тремя файлами по
10M каждый
test
dl 2025-05-29 13:28:34 +05:00
parent 8582bdca9e
commit e319ea2e73
5 changed files with 36 additions and 10 deletions

View File

@ -7,5 +7,5 @@
- [x] Создать и парсить json с информацией о пользователях и их номерах - [x] Создать и парсить json с информацией о пользователях и их номерах
~~- [ ] Проверять, является ли пользователь администратором, если является, выводить дополнительную кнопку, предлагающую добавить номер в БД~~ ~~- [ ] Проверять, является ли пользователь администратором, если является, выводить дополнительную кнопку, предлагающую добавить номер в БД~~
- [x] Изменить json хранящийся локально на запросы к API - [x] Изменить json хранящийся локально на запросы к API
- [ ] Изменить названия комнта в локальном json - [x] Изменить названия комнта в локальном json
- [ ] Ограничить логи внутри докера - [x] Ограничить логи внутри докера

View File

@ -2,13 +2,22 @@
"bot_token": "", "bot_token": "",
"user_api_url": "https://papi.dataekb.ru/check_access", "user_api_url": "https://papi.dataekb.ru/check_access",
"locks": { "locks": {
ОД418": { "2642686605": {
"ip": "10.9.1.26", "ip": "10.9.1.25",
"pass": "73B15D12" "pass": "F901C40A"
},
"2642179854": {
"ip": "10.9.1.28",
"pass": "F901C40A"
}, },
"2634952899": { "2634952899": {
"ip": "10.9.1.27", "ip": "10.9.1.27",
"pass": "F901C40A" "pass": "F901C40A"
} }
},
"locks_map": {
"2642686605": ОД3+ЦОД_Т2",
"2642179854": ТАЖ_5",
"2634952899": ТАЖ_4"
} }
} }

View File

@ -8,3 +8,8 @@ services:
volumes: volumes:
- ./.env:/bot/open_sesam/.env - ./.env:/bot/open_sesam/.env
restart: always restart: always
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"

View File

@ -8,6 +8,14 @@ from auth import AUTHORIZED_USERS, is_user_auth
from config import config 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): def register_open_door_handler(dp: Dispatcher):
@dp.message() @dp.message()
async def open_door_handler(msg: Message): async def open_door_handler(msg: Message):
@ -16,14 +24,15 @@ def register_open_door_handler(dp: Dispatcher):
await msg.answer( await msg.answer(
"Доступ запрщен. Необходимо предоставить свой номер телефона." "Доступ запрщен. Необходимо предоставить свой номер телефона."
) )
return
user_data = AUTHORIZED_USERS.get(user_id) user_data = AUTHORIZED_USERS.get(user_id)
if not user_data: if not user_data:
await msg.answer("Ошибка авторизации пользователя.") await msg.answer("Ошибка авторизации пользователя.")
return return
lock_key = msg.text lock_code = get_lock_code(msg.text)
lock_conf = config.get("locks", {}).get(msg.text) lock_conf = config.get("locks", {}).get(lock_code)
if not lock_conf: if not lock_conf:
await msg.answer("Информации по замку не найдено") await msg.answer("Информации по замку не найдено")
return return

View File

@ -1,11 +1,14 @@
from aiogram.utils.keyboard import ReplyKeyboardBuilder from aiogram.utils.keyboard import ReplyKeyboardBuilder
from aiogram.types import KeyboardButton from aiogram.types import KeyboardButton
from config import config
def get_locks_keyboard(allowed_locks: list): def get_locks_keyboard(allowed_locks: list):
kb = ReplyKeyboardBuilder() kb = ReplyKeyboardBuilder()
locks_map = config.get("locks_map", {})
for lock in allowed_locks: 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) return kb.as_markup(resize_keyboard=True)