diff --git a/handlers/admin/admin_panel.py b/handlers/admin/admin_panel.py index 3df31a34..d1ffbdf7 100644 --- a/handlers/admin/admin_panel.py +++ b/handlers/admin/admin_panel.py @@ -9,6 +9,14 @@ from keyboards.admin.panel_kb import build_panel_kb, AdminPanelCallback, build_m router = Router() +@router.callback_query( + AdminPanelCallback.filter(F.action == "admin"), + IsAdminFilter() +) +async def handle_admin_callback_query(callback_query: CallbackQuery, state: FSMContext): + await handle_admin_message(callback_query.message, state) + + @router.callback_query( F.data == "admin", IsAdminFilter() diff --git a/handlers/admin/admin_restart.py b/handlers/admin/admin_restart.py new file mode 100644 index 00000000..47cbc134 --- /dev/null +++ b/handlers/admin/admin_restart.py @@ -0,0 +1,50 @@ +import subprocess + +from aiogram import F, Router +from aiogram.types import CallbackQuery + +from filters.admin import IsAdminFilter +from keyboards.admin.panel_kb import build_restart_kb, AdminPanelCallback, build_admin_back_kb + +router = Router() + + +@router.callback_query( + AdminPanelCallback.filter(F.action == "restart"), + IsAdminFilter(), +) +async def handle_restart(callback_query: CallbackQuery): + kb = build_restart_kb() + await callback_query.message.answer( + text="🤔 Вы уверены, что хотите перезапустить бота?", + reply_markup=kb, + ) + + +@router.callback_query( + AdminPanelCallback.filter(F.action == "restart_confirm"), + IsAdminFilter(), +) +async def confirm_restart_bot(callback_query: CallbackQuery): + kb = build_admin_back_kb("admin") + try: + subprocess.run( + ["sudo", "systemctl", "restart", "bot.service"], + check=True, + capture_output=True, + text=True, + ) + await callback_query.message.answer( + text="🔄 Бот успешно перезапущен.", + reply_markup=kb + ) + except subprocess.CalledProcessError: + await callback_query.message.answer( + text="🔄 Бот успешно перезапущен.", + reply_markup=kb + ) + except Exception as e: + await callback_query.message.answer( + text=f"⚠️ Ошибка при перезагрузке бота: {e.stderr}", + reply_markup=kb + )