diff --git a/homelab-ai-bot/telegram_bot.py b/homelab-ai-bot/telegram_bot.py index b466a268..482b54aa 100644 --- a/homelab-ai-bot/telegram_bot.py +++ b/homelab-ai-bot/telegram_bot.py @@ -7,9 +7,31 @@ import os import fcntl import atexit import signal +import socket as _socket sys.path.insert(0, os.path.dirname(__file__)) + +def _sd_notify(msg: str): + """Systemd Notify ohne externe Abhaengigkeit.""" + addr = os.environ.get("NOTIFY_SOCKET") + if not addr: + return + if addr[0] == "@": + addr = "\0" + addr[1:] + sock = _socket.socket(_socket.AF_UNIX, _socket.SOCK_DGRAM) + try: + sock.sendto(msg.encode(), addr) + finally: + sock.close() + + +async def _watchdog_loop(): + """Sendet alle 50s WATCHDOG=1 an systemd.""" + while True: + _sd_notify("WATCHDOG=1") + await asyncio.sleep(50) + PIDFILE = "/tmp/hausmeister-bot.pid" _lock_fp = None @@ -735,6 +757,9 @@ def main(): async def post_init(application): await application.bot.set_my_commands(BOT_COMMANDS) log.info("Kommandomenü registriert") + asyncio.create_task(_watchdog_loop()) + _sd_notify("READY=1") + log.info("Systemd Watchdog aktiv (50s Intervall)") app.post_init = post_init log.info("Bot läuft — polling gestartet")