Add shortcut commands for alerts, backup, docker, openwrt
This commit is contained in:
@@ -20,20 +20,13 @@ HELP_TEXT = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@dp.message(F.text.startswith("/alerts"))
|
def _dispatch(msg: Message, action: str, args: list[str]):
|
||||||
async def alerts_cmd(msg: Message):
|
return {"action": action, "args": args}
|
||||||
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()
|
|
||||||
|
|
||||||
|
async def _handle_alerts(msg: Message, action: str, args: list[str]):
|
||||||
if action == "test":
|
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"):
|
if level not in ("critical", "warn", "info"):
|
||||||
level = "info"
|
level = "info"
|
||||||
key = f"test:{level}:{int(time.time())}"
|
key = f"test:{level}:{int(time.time())}"
|
||||||
@@ -42,14 +35,14 @@ async def alerts_cmd(msg: Message):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if action == "mute":
|
if action == "mute":
|
||||||
if len(parts) < 3:
|
if len(args) < 1:
|
||||||
await msg.answer("Usage: /alerts mute <category> <minutes>")
|
await msg.answer("Usage: /alerts mute <category> <minutes>")
|
||||||
return
|
return
|
||||||
category = parts[2].lower()
|
category = args[0].lower()
|
||||||
minutes = 60
|
minutes = 60
|
||||||
if len(parts) >= 4:
|
if len(args) >= 2:
|
||||||
try:
|
try:
|
||||||
minutes = max(1, int(parts[3]))
|
minutes = max(1, int(args[1]))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
minutes = 60
|
minutes = 60
|
||||||
until = set_mute(category, minutes * 60)
|
until = set_mute(category, minutes * 60)
|
||||||
@@ -58,10 +51,10 @@ async def alerts_cmd(msg: Message):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if action == "unmute":
|
if action == "unmute":
|
||||||
if len(parts) < 3:
|
if len(args) < 1:
|
||||||
await msg.answer("Usage: /alerts unmute <category>")
|
await msg.answer("Usage: /alerts unmute <category>")
|
||||||
return
|
return
|
||||||
category = parts[2].lower()
|
category = args[0].lower()
|
||||||
clear_mute(category)
|
clear_mute(category)
|
||||||
await msg.answer(f"🔔 Unmuted {category}")
|
await msg.answer(f"🔔 Unmuted {category}")
|
||||||
return
|
return
|
||||||
@@ -80,9 +73,9 @@ async def alerts_cmd(msg: Message):
|
|||||||
|
|
||||||
if action == "recent":
|
if action == "recent":
|
||||||
hours = 24
|
hours = 24
|
||||||
if len(parts) >= 3:
|
if args:
|
||||||
try:
|
try:
|
||||||
hours = max(1, int(parts[2]))
|
hours = max(1, int(args[0]))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
hours = 24
|
hours = 24
|
||||||
rows = read_recent(cfg, hours, limit=50)
|
rows = read_recent(cfg, hours, limit=50)
|
||||||
@@ -93,3 +86,41 @@ async def alerts_cmd(msg: Message):
|
|||||||
return
|
return
|
||||||
|
|
||||||
await msg.answer(HELP_TEXT)
|
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"])
|
||||||
|
|||||||
@@ -328,6 +328,12 @@ async def br(msg: Message):
|
|||||||
await cmd_backup_now(msg)
|
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")
|
@dp.message(F.text == "🧪 Restic check")
|
||||||
async def rc(msg: Message):
|
async def rc(msg: Message):
|
||||||
if not is_admin_msg(msg):
|
if not is_admin_msg(msg):
|
||||||
|
|||||||
@@ -77,6 +77,12 @@ async def ds(msg: Message):
|
|||||||
await cmd_docker_status(msg)
|
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")
|
@dp.message(F.text == "📈 Stats")
|
||||||
async def dstats(msg: Message):
|
async def dstats(msg: Message):
|
||||||
if not is_admin_msg(msg):
|
if not is_admin_msg(msg):
|
||||||
|
|||||||
@@ -212,6 +212,13 @@ async def openwrt_status(msg: Message):
|
|||||||
asyncio.create_task(worker())
|
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")
|
@dp.message(F.text == "🧾 Audit")
|
||||||
async def audit_log(msg: Message):
|
async def audit_log(msg: Message):
|
||||||
if not is_admin_msg(msg):
|
if not is_admin_msg(msg):
|
||||||
|
|||||||
Reference in New Issue
Block a user