126 def _send_to_telegram(self, msg_type, chat_id, content):
127 url = f"https://api.telegram.org/bot{self.bot_token}/"
128 url += "sendMessage" if msg_type == "text" else "sendLocation"
129 payload = {'chat_id': chat_id}
130
131 if msg_type == "text":
132 payload['text'] = content
133 if self.parse_mode:
134 payload['parse_mode'] = self.parse_mode
135 else:
136 payload.update(content)
137
138 try:
139 response = requests.post(url, data=payload, timeout=10)
140 if response.status_code == 200:
141 logger.info(f"Successfully sent to Chat-ID {chat_id}")
142 return True, False, None, None
143
144
145 if response.status_code == 429:
146 retry_after = response.json().get("parameters", {}).get("retry_after", 5)
147 logger.warning(f"Rate limited for {chat_id}, retry after {retry_after}s")
148 return False, False, retry_after, f"Rate Limit (retry after {retry_after}s)"
149
150 return False, response.status_code < 500, None, f"HTTP {response.status_code}"
151 except Exception as e:
152 return False, False, None, str(e)
153