49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
# ======================================================================
|
|
# CLOSE / CANCEL
|
|
# ======================================================================
|
|
from __future__ import annotations
|
|
|
|
from typing import Optional, Tuple, Dict, Any, List
|
|
|
|
from aiogram import Router, F, Bot
|
|
from aiogram.types import Message, CallbackQuery
|
|
from aiogram.filters import Command
|
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
|
from aiogram.utils.markdown import hide_link
|
|
from aiogram.exceptions import TelegramBadRequest, TelegramForbiddenError
|
|
|
|
from aiogram.fsm.context import FSMContext
|
|
from aiogram.fsm.state import State, StatesGroup
|
|
|
|
from configs import settings, COMMANDS
|
|
from database import get_manager, AutoComment
|
|
from middleware.loggers import logger
|
|
from bot.filters.admin import IsAdmin
|
|
from bot.utils import log_action, tg_emoji
|
|
|
|
__all__ = ("router",)
|
|
CMD: str = "cancel"
|
|
router: Router = Router(name="channel_comments_router")
|
|
|
|
@router.callback_query(F.data == "menu:close")
|
|
async def close_menu_callback(callback: CallbackQuery, state: FSMContext) -> None:
|
|
await state.clear()
|
|
try:
|
|
if callback.message:
|
|
await callback.message.delete()
|
|
except TelegramBadRequest:
|
|
pass
|
|
await callback.answer("❌ Меню закрыто")
|
|
|
|
@router.callback_query(F.data.casefold() == CMD)
|
|
@router.message(Command(*COMMANDS[CMD], prefix=settings.PREFIX, ignore_case=True), IsAdmin())
|
|
@log_action(action_name="START_COMMAND", log_args=True)
|
|
async def cancel_handler(message: Message, state: FSMContext) -> None:
|
|
current_state = await state.get_state()
|
|
if current_state is None:
|
|
await message.answer("❌ Нечего отменять")
|
|
return
|
|
|
|
await state.clear()
|
|
await message.answer("✅ Действие отменено")
|