feat: массовое удаление broadcast сообщений у всех получателей

- Quick delete теперь удаляет сообщения у всех получателей broadcast
- Добавлен метод get_message_by_telegram_id в ChatMessageService
- При удалении проходит по всем forwarded_message_ids и удаляет у каждого
- Показывает статистику удаления админу (автоматически исчезает через 3 сек)
- Помечает сообщение как удалённое в БД
This commit is contained in:
2025-11-17 11:54:15 +09:00
parent fe2ac75aa8
commit 84adcce57b
3 changed files with 85 additions and 7 deletions

View File

@@ -185,6 +185,23 @@ class ChatMessageService:
)
return result.scalar_one_or_none()
@staticmethod
async def get_message_by_telegram_id(
session: AsyncSession,
telegram_message_id: int,
user_id: Optional[int] = None
) -> Optional[ChatMessage]:
"""Получить сообщение по telegram_message_id"""
query = select(ChatMessage).where(
ChatMessage.telegram_message_id == telegram_message_id
)
if user_id:
query = query.where(ChatMessage.user_id == user_id)
result = await session.execute(query)
return result.scalar_one_or_none()
@staticmethod
async def get_user_messages(
session: AsyncSession,