diff --git a/handlers/alerts_admin.py b/handlers/alerts_admin.py index 03f9a2e..854ed7b 100644 --- a/handlers/alerts_admin.py +++ b/handlers/alerts_admin.py @@ -20,20 +20,13 @@ HELP_TEXT = ( ) -@dp.message(F.text.startswith("/alerts")) -async def alerts_cmd(msg: Message): - if not is_admin_msg(msg): - return +def _dispatch(msg: Message, action: str, args: list[str]): + return {"action": action, "args": args} - parts = msg.text.split() - if len(parts) < 2: - await msg.answer(HELP_TEXT) - return - - action = parts[1].lower() +async def _handle_alerts(msg: Message, action: str, args: list[str]): if action == "test": - level = parts[2].lower() if len(parts) >= 3 else "info" + level = args[0].lower() if args else "info" if level not in ("critical", "warn", "info"): level = "info" key = f"test:{level}:{int(time.time())}" @@ -42,14 +35,14 @@ async def alerts_cmd(msg: Message): return if action == "mute": - if len(parts) < 3: + if len(args) < 1: await msg.answer("Usage: /alerts mute ") return - category = parts[2].lower() + category = args[0].lower() minutes = 60 - if len(parts) >= 4: + if len(args) >= 2: try: - minutes = max(1, int(parts[3])) + minutes = max(1, int(args[1])) except ValueError: minutes = 60 until = set_mute(category, minutes * 60) @@ -58,10 +51,10 @@ async def alerts_cmd(msg: Message): return if action == "unmute": - if len(parts) < 3: + if len(args) < 1: await msg.answer("Usage: /alerts unmute ") return - category = parts[2].lower() + category = args[0].lower() clear_mute(category) await msg.answer(f"๐Ÿ”” Unmuted {category}") return @@ -80,9 +73,9 @@ async def alerts_cmd(msg: Message): if action == "recent": hours = 24 - if len(parts) >= 3: + if args: try: - hours = max(1, int(parts[2])) + hours = max(1, int(args[0])) except ValueError: hours = 24 rows = read_recent(cfg, hours, limit=50) @@ -93,3 +86,41 @@ async def alerts_cmd(msg: Message): return await msg.answer(HELP_TEXT) + + +@dp.message(F.text.startswith("/alerts")) +async def alerts_cmd(msg: Message): + if not is_admin_msg(msg): + return + + parts = msg.text.split() + if len(parts) < 2: + await msg.answer(HELP_TEXT) + return + + action = parts[1].lower() + args = parts[2:] + + if action == "test": + await _handle_alerts(msg, action, args) + + +@dp.message(F.text == "/alerts_list") +async def alerts_list(msg: Message): + if not is_admin_msg(msg): + return + await _handle_alerts(msg, "list", []) + + +@dp.message(F.text == "/alerts_recent") +async def alerts_recent(msg: Message): + if not is_admin_msg(msg): + return + await _handle_alerts(msg, "recent", ["24"]) + + +@dp.message(F.text == "/alerts_mute_load") +async def alerts_mute_load(msg: Message): + if not is_admin_msg(msg): + return + await _handle_alerts(msg, "mute", ["load", "60"]) diff --git a/handlers/backup.py b/handlers/backup.py index 0230528..f2b279d 100644 --- a/handlers/backup.py +++ b/handlers/backup.py @@ -328,6 +328,12 @@ async def br(msg: Message): await cmd_backup_now(msg) +@dp.message(F.text == "/backup_run") +async def br_cmd(msg: Message): + if is_admin_msg(msg): + await cmd_backup_now(msg) + + @dp.message(F.text == "๐Ÿงช Restic check") async def rc(msg: Message): if not is_admin_msg(msg): diff --git a/handlers/docker.py b/handlers/docker.py index 39f4ddf..428ea02 100644 --- a/handlers/docker.py +++ b/handlers/docker.py @@ -77,6 +77,12 @@ async def ds(msg: Message): await cmd_docker_status(msg) +@dp.message(F.text == "/docker_status") +async def ds_cmd(msg: Message): + if is_admin_msg(msg): + await cmd_docker_status(msg) + + @dp.message(F.text == "๐Ÿ“ˆ Stats") async def dstats(msg: Message): if not is_admin_msg(msg): diff --git a/handlers/system.py b/handlers/system.py index 128cc33..5ce1148 100644 --- a/handlers/system.py +++ b/handlers/system.py @@ -212,6 +212,13 @@ async def openwrt_status(msg: Message): asyncio.create_task(worker()) +@dp.message(F.text == "/openwrt") +async def openwrt_cmd(msg: Message): + if not is_admin_msg(msg): + return + await openwrt_status(msg) + + @dp.message(F.text == "๐Ÿงพ Audit") async def audit_log(msg: Message): if not is_admin_msg(msg):