feat: add notifier utility

This commit is contained in:
2569718930@qq.com
2026-02-06 21:54:12 +08:00
parent 35db1e3839
commit 1427d5a6c0
+18 -12
View File
@@ -32,17 +32,22 @@ class TelegramNotifier:
return html.escape(text, quote=False) return html.escape(text, quote=False)
def _send_message(self, text: str): def _send_message(self, text: str):
"""发送 Telegram 消息的主函数""" """发送 Telegram 消息的主函数 (支持多个 ID)"""
if not self.token or not self.chat_id: if not self.token or not self.chat_id:
logger.warning("未配置 Telegram Token 或 Chat ID,无法发送消息。") logger.warning("未配置 Telegram Token 或 Chat ID,无法发送消息。")
return return False
# 支持逗号分隔的多个 ID
chat_ids = str(self.chat_id).replace(" ", "").split(",")
url = f"https://api.telegram.org/bot{self.token}/sendMessage" url = f"https://api.telegram.org/bot{self.token}/sendMessage"
# 调试输出:确保 ID 正确读取
logger.debug(f"DEBUG: Tnotifier using ChatID={self.chat_id}") all_successful = True
for cid in chat_ids:
if not cid:
continue
payload = { payload = {
"chat_id": self.chat_id, "chat_id": cid,
"text": text, "text": text,
"parse_mode": "HTML", "parse_mode": "HTML",
"disable_web_page_preview": True, "disable_web_page_preview": True,
@@ -54,18 +59,19 @@ class TelegramNotifier:
error_msg = response.text error_msg = response.text
if "chat not found" in error_msg.lower(): if "chat not found" in error_msg.lower():
logger.error( logger.error(
f"Telegram 消息发送失败 (400): Chat ID {self.chat_id} 无效或机器人尚未被加入该聊天。请在 Telegram 中发送 /id 给机器人确认正确的 Chat ID。" f"Telegram 消息发送{cid} 失败 (400): Chat ID {cid} 无效或机器人尚未被加入该聊天。请在 Telegram 中发送 /id 给机器人确认正确的 Chat ID。"
) )
else: else:
logger.error( logger.error(
f"Telegram 消息发送失败 ({response.status_code}): {error_msg}" f"Telegram 消息发送{cid} 失败 ({response.status_code}): {error_msg}"
) )
return False all_successful = False
logger.info("Telegram 消息发送成功。") else:
return True logger.info(f"Telegram 消息发送给 {cid} 成功。")
except Exception as e: except Exception as e:
logger.error(f"Telegram 请求异常: {e}") logger.error(f"Telegram 消息发送给 {cid} 异常: {e}")
return False all_successful = False
return all_successful
def send_signal( def send_signal(
self, self,