89 def _send_to_telegram(self, msg_type, chat_id, content):
90 if msg_type == "text":
91 url = f"https://api.telegram.org/bot{self.bot_token}/sendMessage"
92 payload = {
93 'chat_id': chat_id,
94 'text': content
95 }
96 elif msg_type == "location":
97 url = f"https://api.telegram.org/bot{self.bot_token}/sendLocation"
98 payload = {
99 'chat_id': chat_id,
100 **content
101 }
102 else:
103 logger.error("Unbekannter Nachrichtentyp.")
104 return False, True, None
105
106 try:
107 custom_delay = None
108
109 response = requests.post(url, data=payload, timeout=10)
110
111 if response.status_code == 429:
112 custom_delay = response.json().get("parameters", {}).get("retry_after", 5)
113 logger.warning(f"Rate Limit erreicht – warte {custom_delay} Sekunden.")
114 return False, False, custom_delay
115
116 if response.status_code == 400:
117 logger.error("Ungültige Parameter – Nachricht wird nicht erneut gesendet.")
118 return False, True, custom_delay
119
120 if response.status_code == 401:
121 logger.critical("Ungültiger Bot-Token – bitte prüfen!")
122 return False, True, custom_delay
123
124 response.raise_for_status()
125 logger.info(f"Erfolgreich gesendet an Chat-ID {chat_id}")
126 return True, False, custom_delay
127
128 except requests.RequestException as e:
129 logger.warning(f"Fehler beim Senden an Telegram (Chat-ID {chat_id}): {e}")
130 return False, False, custom_delay
131
132
133
134
135
136
137