44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import requests
|
|
import logging
|
|
from config import load_config
|
|
|
|
logger = logging.getLogger("TELEGRAM")
|
|
|
|
class TelegramNotifier:
|
|
def __init__(self):
|
|
self.config = load_config()
|
|
self.bot_token = self.config.get('telegram', {}).get('bot_token', '')
|
|
self.chat_id = self.config.get('telegram', {}).get('chat_id', '')
|
|
|
|
def reload_config(self):
|
|
self.config = load_config()
|
|
self.bot_token = self.config.get('telegram', {}).get('bot_token', '')
|
|
self.chat_id = self.config.get('telegram', {}).get('chat_id', '')
|
|
|
|
def send_message(self, text):
|
|
# Reload to ensure we have latest from settings
|
|
self.reload_config()
|
|
|
|
# Check if enabled
|
|
if not self.config.get('preferences', {}).get('enable_telegram', True):
|
|
return
|
|
|
|
if not self.bot_token or not self.chat_id:
|
|
logger.warning("Telegram credentials missing.")
|
|
return
|
|
|
|
url = f"https://api.telegram.org/bot{self.bot_token}/sendMessage"
|
|
payload = {
|
|
"chat_id": self.chat_id,
|
|
"text": text
|
|
}
|
|
|
|
try:
|
|
res = requests.post(url, json=payload, timeout=5)
|
|
if res.status_code != 200:
|
|
logger.error(f"Telegram Send Failed: {res.text}")
|
|
except Exception as e:
|
|
logger.error(f"Telegram Error: {e}")
|
|
|
|
notifier = TelegramNotifier()
|