From a4e8f652b91fd25cc1c9a149cd5fcfe2914682f7 Mon Sep 17 00:00:00 2001 From: Igor Mamaev Date: Mon, 22 Dec 2025 17:00:03 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=20=D1=81=D1=83=D0=BC=D0=BC=D0=B0=D1=80?= =?UTF-8?q?=D0=BD=D0=BE=20-=20=D0=B4=D0=B0,=20=D0=BE=D0=BA=D0=BE=D0=BB?= =?UTF-8?q?=D0=BE=20100=5F000,=20=D0=B7=D0=B0=20=D1=80=D0=B0=D0=B7=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=20200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handlers/admin/character_management.py | 3 +++ services/settings.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/handlers/admin/character_management.py b/handlers/admin/character_management.py index 2b4cf28..b519ff6 100644 --- a/handlers/admin/character_management.py +++ b/handlers/admin/character_management.py @@ -168,6 +168,9 @@ async def on_rating_input(message: Message, widget: ManagedTextInput, dialog_man """Обработчик ввода нового рейтинга""" try: rating = int(text) + if abs(rating) > settings.MAX_ONE_TIME_RATING: + await message.answer(f"❌ Изменение рейтинга не может превышать {settings.MAX_ONE_TIME_RATING} за раз") + return character_id = dialog_manager.dialog_data["character_id"] user = await User.get(id=character_id) diff --git a/services/settings.py b/services/settings.py index 7c9e467..6915665 100644 --- a/services/settings.py +++ b/services/settings.py @@ -29,7 +29,8 @@ class Settings(BaseSettings): MAX_TITLE_LEN: int = 255 MAX_DESCRIPTION_LEN: int = 1023 MAX_LEVEL: int = 20 # D&D максимальный уровень - MAX_RATING: int = 1000 + MAX_RATING: int = 100_000 + MAX_ONE_TIME_RATING: int = 200 MAX_ITEM_QUANTITY: int = 1000 # ^ PostgreSQL From 31232a613ec78c07671297a63b4d4625662c09a5 Mon Sep 17 00:00:00 2001 From: Igor Mamaev Date: Mon, 22 Dec 2025 17:10:39 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=D0=B7=D0=B0=D0=B8=D0=BC=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D0=B9=D1=81=D1=82=D0=B2=D0=B8=D1=8F=20=D1=81=20?= =?UTF-8?q?=D0=B0=D0=B1=D1=81=D0=BE=D0=BB=D1=8E=D1=82=D0=BD=D1=8B=D0=BC=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B9=D1=82=D0=B8=D0=BD=D0=B3=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handlers/admin/character_management.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/handlers/admin/character_management.py b/handlers/admin/character_management.py index b519ff6..ee35e47 100644 --- a/handlers/admin/character_management.py +++ b/handlers/admin/character_management.py @@ -168,13 +168,14 @@ async def on_rating_input(message: Message, widget: ManagedTextInput, dialog_man """Обработчик ввода нового рейтинга""" try: rating = int(text) - if abs(rating) > settings.MAX_ONE_TIME_RATING: - await message.answer(f"❌ Изменение рейтинга не может превышать {settings.MAX_ONE_TIME_RATING} за раз") - return character_id = dialog_manager.dialog_data["character_id"] user = await User.get(id=character_id) + if abs(user.rating - rating) > settings.MAX_ONE_TIME_RATING: + await message.answer(f"❌ Изменение рейтинга не может превышать {settings.MAX_ONE_TIME_RATING} за раз") + return + rating = min(max(0, rating), settings.MAX_RATING) user.rating = rating