Add shortcut commands for alerts, backup, docker, openwrt

This commit is contained in:
2026-02-08 23:01:33 +03:00
parent 77571da4d9
commit 2ee9756d12
4 changed files with 69 additions and 19 deletions

View File

@@ -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 <category> <minutes>")
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 <category>")
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"])