From 035ad464f7b8c9d48929ad781fab4a2c7e2bc26b Mon Sep 17 00:00:00 2001 From: "Andrew K. Choi" Date: Mon, 17 Nov 2025 14:58:13 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20user.id=20=D0=B2=D0=BC?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=BE=20telegram=5Fid=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20deleted=5Fby?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Исправлена ошибка ForeignKeyViolationError при удалении - Теперь получаем admin_user из БД и используем его id - deleted_by корректно ссылается на users.id --- .bot.pid | 2 +- src/handlers/message_management.py | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.bot.pid b/.bot.pid index 22c10cc..630d3f8 100644 --- a/.bot.pid +++ b/.bot.pid @@ -1 +1 @@ -1025432 +1052888 diff --git a/src/handlers/message_management.py b/src/handlers/message_management.py index 219ab77..52c588e 100644 --- a/src/handlers/message_management.py +++ b/src/handlers/message_management.py @@ -9,6 +9,7 @@ from aiogram.filters import Command from ..core.config import ADMIN_IDS from ..core.database import async_session_maker from ..core.chat_services import ChatMessageService +from ..core.services import UserService logger = logging.getLogger(__name__) @@ -100,6 +101,17 @@ async def quick_delete_replied_message(message: Message): # Пытаемся найти сообщение в БД по telegram_message_id async with async_session_maker() as session: + # Получаем admin user для deleted_by + admin_user = await UserService.get_user_by_telegram_id( + session, + message.from_user.id + ) + + if not admin_user: + logger.error(f"Админ {message.from_user.id} не найден в БД") + await message.answer("❌ Ошибка: пользователь не найден") + return + chat_message = await ChatMessageService.get_message_by_telegram_id( session, telegram_message_id=replied_msg.message_id @@ -119,11 +131,11 @@ async def quick_delete_replied_message(message: Message): except Exception as e: logger.warning(f"Не удалось удалить сообщение у {user_telegram_id}: {e}") - # Помечаем как удалённое в БД + # Помечаем как удалённое в БД (используем admin_user.id, а не telegram_id) await ChatMessageService.delete_message( session, message_id=chat_message.id, - deleted_by=message.from_user.id + deleted_by=admin_user.id ) logger.info(