From 9879e3f5f28a473a164593258e6c32adc100c03d Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Mon, 14 Feb 2022 23:15:36 +0100 Subject: [PATCH] Telegram: Parse config file Also, Telegraf is not Telegram :) --- telegram/Makefile | 2 +- .../{burrow-telegraf.py => burrow-telegram.py} | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) rename telegram/{burrow-telegraf.py => burrow-telegram.py} (91%) diff --git a/telegram/Makefile b/telegram/Makefile index 2b01e2b..d51f852 100644 --- a/telegram/Makefile +++ b/telegram/Makefile @@ -5,6 +5,6 @@ all: install: [ -d $(VENV) ] || su -c "python3 -m venv $(VENV)" su -c ". $(VENV)/bin/activate && pip install -r requirements.txt" - su -c "install -m 755 burrow-telegraf.py $(VENV)/bin/burrow-telegraf" + su -c "install -m 755 burrow-telegram.py $(VENV)/bin/burrow-telegram" .PHONY: all install diff --git a/telegram/burrow-telegraf.py b/telegram/burrow-telegram.py similarity index 91% rename from telegram/burrow-telegraf.py rename to telegram/burrow-telegram.py index 8ff3797..1568397 100755 --- a/telegram/burrow-telegraf.py +++ b/telegram/burrow-telegram.py @@ -1,24 +1,30 @@ #!/usr/bin/env python +# A simple daemon for sending Telegram notifications about failures in the Burrow +# (c) 2022 Martin Mareš from aiogram import Bot, Dispatcher, executor, types import asyncio import asyncio_mqtt +from configparser import ConfigParser from datetime import datetime, timedelta import logging import signal import ssl import sys -import config +config = ConfigParser() +config.read('/usr/local/etc/burrow-telegram') +API_TOKEN = config['telegram']['api_token'] +CHATS = map(int, config['telegram']['chats'].split(' ')) formatter = logging.Formatter(fmt="%(asctime)s %(name)s.%(levelname)s: %(message)s", datefmt='%Y-%m-%d %H:%M:%S') log_handler = logging.StreamHandler(stream=sys.stdout) log_handler.setFormatter(formatter) logger = logging.getLogger() -logger.setLevel(logging.DEBUG) +logger.setLevel(logging.INFO) logger.addHandler(log_handler) -bot = Bot(token=config.API_TOKEN) +bot = Bot(token=API_TOKEN) dispatcher = Dispatcher(bot) @@ -55,7 +61,7 @@ async def send_msg(text): bucket -= 1 logger.debug(f'Bucket drain: {bucket}') - for chat in config.CHATS: + for chat in CHATS: await bot.send_message(chat, text + '\n') else: @@ -142,6 +148,7 @@ async def mqtt_watcher(): async def fortunes(): + await asyncio.sleep(5*60) while True: proc = await asyncio.create_subprocess_exec('fortune', stdout=asyncio.subprocess.PIPE) out, err = await proc.communicate() -- 2.39.2