feat: V1.2.1 增加 [全节点日报汇总] 批量指令分发功能

This commit is contained in:
hotyue
2026-04-01 13:45:04 +00:00
parent 85f760c2e8
commit e584a2a0c3

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# ==========================================================
# 脚本名称: tg_master.sh (Master 端调度枢纽 V1.2)
# 脚本名称: tg_master.sh (Master 端调度枢纽 V1.2.1)
# 核心功能: 监听 TG、操作 SQLite、Webhook 调度、僵尸节点清理
# ==========================================================
@@ -63,11 +63,26 @@ while true; do
# 2. 交互菜单与下发通道 (主控逻辑)
# ==========================================
case "$TEXT" in
"/start"|"/menu")
BTNS="[[{\"text\":\"🖥️ 我的节点列表\",\"callback_data\":\"list_nodes\"}], [{\"text\":\"🚀 全节点一键维护\",\"callback_data\":\"all_run\"}]]"
"/start"|"/menu")
# 【升级】新增 [🚀 全节点日报汇总] 按钮
BTNS="[[{\"text\":\"🖥️ 我的节点列表\",\"callback_data\":\"list_nodes\"}], [{\"text\":\"🚀 全节点日报汇总\",\"callback_data\":\"all_reports\"}], [{\"text\":\"🛠️ 全节点一键维护\",\"callback_data\":\"all_run\"}]]"
send_ui "$CHAT_ID" "🛡️ **IP-Sentinel 司令部**\n欢迎回来长官。请下达指令" "$BTNS"
;;
"all_reports")
# 【新增】遍历该用户下的所有节点,并发触发 report Webhook
NODE_DATA=$(db_exec "SELECT node_name, agent_ip, agent_port FROM nodes WHERE chat_id='$CHAT_ID';")
if [ -z "$NODE_DATA" ]; then
send_msg "$CHAT_ID" "⚠️ 您名下暂无在线节点。"
else
send_msg "$CHAT_ID" "📢 **司令部指令下达:正在召唤所有哨兵回传简报...**"
echo "$NODE_DATA" | while IFS='|' read -r NNAME AIP APORT; do
# 挂入后台并发请求,防止节点过多时阻塞主循环
curl -s -m 5 "http://${AIP}:${APORT}/trigger_report" > /dev/null &
done
fi
;;
"list_nodes")
# 从 SQLite 查询属于该 CHAT_ID 的节点
NODE_LIST=$(db_exec "SELECT node_name FROM nodes WHERE chat_id='$CHAT_ID';")