From c3c8f74c91d23e4bb690ef2de23a0ab83da9c21a Mon Sep 17 00:00:00 2001 From: "Andrew K. Choi" Date: Mon, 17 Nov 2025 11:21:56 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B1=D1=8B=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Откат изменений глобального чата (возврат к broadcast/forward режимам) - Новый хэндлер quick_delete_replied_message для быстрого удаления - Админ отвечает на сообщение со словами: удалить, delete, del - Или отправляет emoji: 🗑️, ❌ - Удаляются оба сообщения (целевое и команда) - Работает для любых сообщений, не только бота - Логирование всех удалений --- src/handlers/message_management.py | 41 ++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/handlers/message_management.py b/src/handlers/message_management.py index 3ab3cbe..495eb19 100644 --- a/src/handlers/message_management.py +++ b/src/handlers/message_management.py @@ -59,7 +59,44 @@ async def delete_message_callback(callback: CallbackQuery): try: await callback.message.delete() await callback.answer("✅ Сообщение удалено") - logger.info(f"Администратор {callback.from_user.id} удалил сообщение {callback.message.message_id} кнопкой") + logger.info(f"Администратор {callback.from_user.id} удалил сообщение через кнопку") except Exception as e: - logger.error(f"Ошибка при удалении сообщения: {e}") + logger.error(f"Ошибка при удалении сообщения через кнопку: {e}") await callback.answer(f"❌ Ошибка: {str(e)}", show_alert=True) + + +@message_admin_router.message(F.reply_to_message) +async def quick_delete_replied_message(message: Message): + """ + Быстрое удаление сообщения по reply с триггерными словами или emoji + Работает для админов при ответе на любое сообщение + + Триггеры: + - "удалить", "delete", "del" + - 🗑️ (мусорная корзина) + - ❌ (крестик) + """ + if not is_admin(message.from_user.id): + return # Не админ - пропускаем + + if not message.text: + return # Нет текста - пропускаем + + # Проверяем триггерные слова/символы + text_lower = message.text.lower().strip() + triggers = ["удалить", "delete", "del", "🗑️", "🗑", "❌"] + + is_trigger = any(trigger in text_lower for trigger in triggers) + + if not is_trigger: + return # Не триггер - пропускаем + + try: + # Удаляем сообщение на которое ответили + await message.reply_to_message.delete() + # Удаляем команду + await message.delete() + logger.info(f"Администратор {message.from_user.id} быстро удалил сообщение {message.reply_to_message.message_id}") + except Exception as e: + logger.error(f"Ошибка при быстром удалении сообщения: {e}") + await message.answer(f"❌ Не удалось удалить: {str(e)}", reply_to_message_id=message.message_id)