/status and /ongoing

This commit is contained in:
Alex Tau 2025-06-06 15:38:48 +03:00
parent 62a25410cc
commit 6cc3966221
6 changed files with 121 additions and 47 deletions

View file

@ -6,7 +6,8 @@ import signal
from typing import Coroutine
from . import checks
from .alerting import channel
from .alerting import sender
from .alerting.commands import CommandHandlerManager
from .checks.temp.sensors import print_readings
from .config import enums as config_enums
from .config import load_config
@ -48,13 +49,15 @@ async def async_main():
logging.basicConfig(level=config.log_level)
tg_client = await channel.get_client()
cvars.tg_client.set(tg_client)
tg_client = await sender.get_client()
cvars.tg_client.set(tg_client)
my_username = (await tg_client.get_me()).username
logging.info(f"Logged in as @{my_username}")
check_sets = config_enums.CheckSet
checker_sets: dict[config_enums.CheckSet, list[Coroutine | BaseChecker]] = {
check_sets.START: [channel.send_start_alert()],
check_sets.START: [sender.send_start_alert()],
check_sets.STOP: [], # this is checked later
check_sets.CPU: [IntervalChecker(checks.cpu_check, interval=datetime.timedelta(minutes=3), persistent=True)],
check_sets.RAM: [IntervalChecker(checks.ram_check, interval=datetime.timedelta(minutes=1), persistent=True)],
@ -76,17 +79,21 @@ async def async_main():
period=datetime.timedelta(days=1),
when=datetime.time(hour=0, minute=0),
persistent=False,
is_reminder=True,
)
],
}
checker_sets[check_sets.REMIND][0].check_args = [checker_sets]
checkers = []
for enabled_set in config.enabled_check_sets:
for checker in checker_sets[enabled_set]:
checkers.append(checker)
checker_sets[check_sets.REMIND][0].check_args = checkers
command_manager = CommandHandlerManager(checkers)
await command_manager.attach_handlers(tg_client)
signal.signal(signal.SIGTERM, stop_gracefully)
async with asyncio.TaskGroup() as tg:
@ -99,7 +106,7 @@ async def async_main():
while True:
if stopping:
if "stop" in config.enabled_check_sets:
await channel.send_stop_alert()
await sender.send_stop_alert()
await tg_client.disconnect()
raise SystemExit
else: