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.config import ADMIN_IDS
|
||||||
from ..core.database import async_session_maker
|
from ..core.database import async_session_maker
|
||||||
from ..core.chat_services import ChatMessageService
|
from ..core.chat_services import ChatMessageService
|
||||||
|
from ..core.services import UserService
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -100,6 +101,17 @@ async def quick_delete_replied_message(message: Message):
|
|||||||
|
|
||||||
# Пытаемся найти сообщение в БД по telegram_message_id
|
# Пытаемся найти сообщение в БД по telegram_message_id
|
||||||
async with async_session_maker() as session:
|
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(
|
chat_message = await ChatMessageService.get_message_by_telegram_id(
|
||||||
session,
|
session,
|
||||||
telegram_message_id=replied_msg.message_id
|
telegram_message_id=replied_msg.message_id
|
||||||
@@ -119,11 +131,11 @@ async def quick_delete_replied_message(message: Message):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"Не удалось удалить сообщение у {user_telegram_id}: {e}")
|
logger.warning(f"Не удалось удалить сообщение у {user_telegram_id}: {e}")
|
||||||
|
|
||||||
# Помечаем как удалённое в БД
|
# Помечаем как удалённое в БД (используем admin_user.id, а не telegram_id)
|
||||||
await ChatMessageService.delete_message(
|
await ChatMessageService.delete_message(
|
||||||
session,
|
session,
|
||||||
message_id=chat_message.id,
|
message_id=chat_message.id,
|
||||||
deleted_by=message.from_user.id
|
deleted_by=admin_user.id
|
||||||
)
|
)
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|||||||
Reference in New Issue
Block a user