feat: быстрое удаление сообщений для админов
- Откат изменений глобального чата (возврат к broadcast/forward режимам) - Новый хэндлер quick_delete_replied_message для быстрого удаления - Админ отвечает на сообщение со словами: удалить, delete, del - Или отправляет emoji: 🗑️, ❌ - Удаляются оба сообщения (целевое и команда) - Работает для любых сообщений, не только бота - Логирование всех удалений
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user