fix: использовать user.id вместо telegram_id для deleted_by
- Исправлена ошибка ForeignKeyViolationError при удалении - Теперь получаем admin_user из БД и используем его id - deleted_by корректно ссылается на users.id
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user