Implement admin restart handler + also handle AdminPanelCallback for back buttons

This commit is contained in:
hteppl
2025-01-11 02:17:54 +03:00
parent 88aae8e650
commit 1e0261d809
2 changed files with 58 additions and 0 deletions
+8
View File
@@ -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()
+50
View File
@@ -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
)