Implement admin restart handler + also handle AdminPanelCallback for back buttons
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
)
|
||||
Reference in New Issue
Block a user