145 def _send_to_telegram(self, msg_type, chat_id, content):
146 url = f"https://api.telegram.org/bot{self.bot_token}/"
147 url += "sendMessage" if msg_type == "text" else "sendLocation"
148 payload = {'chat_id': chat_id}
149
150 if msg_type == "text":
151 payload['text'] = content
152 if self.parse_mode:
153 payload['parse_mode'] = self.parse_mode
154 else:
155 payload.update(content)
156
157 try:
158 response = requests.post(url, data=payload, timeout=10)
159 if response.status_code == 200:
160 logger.info(f"Successfully sent to Chat-ID {chat_id}")
161 return True, False, None, None
162
163
164 if response.status_code == 429:
165 retry_after = response.json().get("parameters", {}).get("retry_after", 5)
166 logger.warning(f"Rate limited for {chat_id}, retry after {retry_after}s")
167 return False, False, retry_after, f"Rate Limit (retry after {retry_after}s)"
168
169 return False, response.status_code < 500, None, f"HTTP {response.status_code}"
170 except Exception as e:
171 return False, False, None, str(e)
172