fix: использовать user.id вместо telegram_id для deleted_by

- Исправлена ошибка ForeignKeyViolationError при удалении
- Теперь получаем admin_user из БД и используем его id
- deleted_by корректно ссылается на users.id
This commit is contained in:
2025-11-17 14:58:13 +09:00
parent 698c945cef
commit 035ad464f7
2 changed files with 15 additions and 3 deletions

View File

@@ -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(