From e9d50232636877a77600d4b81fe810918515641c Mon Sep 17 00:00:00 2001 From: hotyue <52734432+hotyue@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:06:02 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=B4=A7=E6=80=A5=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E6=80=81=E5=8A=BF=E6=84=9F=E7=9F=A5=E5=85=A5=E5=BA=93=E9=93=BE?= =?UTF-8?q?=E8=B7=AF=EF=BC=8C=E5=BC=95=E5=85=A5=E4=BA=A4=E4=BA=92=E5=BC=8F?= =?UTF-8?q?=20[=E5=AD=98=E6=A1=A3]=20=E6=8C=89=E9=92=AE=EF=BC=8C=E5=BD=BB?= =?UTF-8?q?=E5=BA=95=E8=A7=A3=E5=86=B3=20TG=20API=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E6=AD=BB=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/mod_quality.sh | 30 +++++++++++++++++++++--------- master/tg_master.sh | 28 +++++++++++++--------------- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/core/mod_quality.sh b/core/mod_quality.sh index 2f08d25..3b82d5c 100755 --- a/core/mod_quality.sh +++ b/core/mod_quality.sh @@ -176,18 +176,30 @@ _👉 [🔍 详细信用图谱直达 (Scamalytics)](https://scamalytics.com/ip/$ SAFE_SCAM_SCORE=$(echo "$SCAM_SCORE" | tr -cd '0-9') [ -z "$SAFE_SCAM_SCORE" ] && SAFE_SCAM_SCORE="0" -# [v4.0.2 扩容] 提取 Google(基于YouTube) 和 ChatGPT 的原生状态,供中枢态势感知使用 +# [v4.0.2 扩容] 提取 Google(基于YouTube) 和 ChatGPT 的原生状态 RAW_GOOG_STAT="${RAW_YT_REG:-$RAW_YT_STAT}" [ -z "$RAW_GOOG_STAT" ] && RAW_GOOG_STAT="未知" RAW_GPT_STAT=$(echo "$JSON_DATA" | jq -r '.Media.ChatGPT.Status // "未知"' 2>/dev/null) -REPORT="$REPORT +# 截取前2个中文字符(控制在64字节内),构建内联按钮数据 +S_GOOG=$(echo "$RAW_GOOG_STAT" | awk '{print substr($0,1,2)}') +S_NF=$(echo "$RAW_NF_STAT" | awk '{print substr($0,1,2)}') +S_GPT=$(echo "$RAW_GPT_STAT" | awk '{print substr($0,1,2)}') +CB_DATA="svq|${NODE_NAME}|${SAFE_SCAM_SCORE}|${S_GOOG}|${S_NF}|${S_GPT}" -\`[SYSTEM_REPORT]|QUALITY|${NODE_NAME}|${SAFE_SCAM_SCORE}|${RAW_GOOG_STAT}|${RAW_NF_STAT}|${RAW_GPT_STAT}\`" +# 8. 挂载内联键盘并直送指挥部 +JSON_PAYLOAD=$(jq -n \ + --arg cid "$CHAT_ID" \ + --arg txt "$REPORT" \ + --arg cb "$CB_DATA" \ + '{ + chat_id: $cid, + text: $txt, + parse_mode: "Markdown", + disable_web_page_preview: true, + reply_markup: { + inline_keyboard: [[{text: "📥 将本次体检录入趋势库", callback_data: $cb}]] + } + }') -# 8. 直送指挥部 -curl -s -X POST "${TG_API_URL}" \ - -d "chat_id=${CHAT_ID}" \ - -d "parse_mode=Markdown" \ - -d "disable_web_page_preview=true" \ - -d "text=${REPORT}" >/dev/null \ No newline at end of file +curl -s -X POST "${TG_API_URL}" -H "Content-Type: application/json" -d "$JSON_PAYLOAD" >/dev/null \ No newline at end of file diff --git a/master/tg_master.sh b/master/tg_master.sh index c65030d..49d4d56 100755 --- a/master/tg_master.sh +++ b/master/tg_master.sh @@ -111,24 +111,22 @@ while true; do CHAT_ID=$(echo "$UPDATE" | jq -r '.message.chat.id // .callback_query.message.chat.id') TEXT=$(echo "$UPDATE" | jq -r '.message.text // .callback_query.data') - # ================== [v4.0.2 核心: 深海声呐暗号拦截与落盘] ================== - if [[ "$TEXT" == *"[SYSTEM_REPORT]|QUALITY|"* ]]; then - # 格式: [SYSTEM_REPORT]|QUALITY|NODE_NAME|SCORE|GOOG_STAT|NF_STAT|GPT_STAT - REPORT_DATA=$(echo "$TEXT" | grep -o "\[SYSTEM_REPORT\].*") - NODE_ID=$(echo "$REPORT_DATA" | cut -d'|' -f3 | tr -cd 'a-zA-Z0-9_.-') - SCORE=$(echo "$REPORT_DATA" | cut -d'|' -f4 | tr -cd '0-9') - - # [v4.0.2 修复] 放弃极端的字母白名单,改用黑名单过滤引号和分号,完美保留中文状态 - GOOG_ST=$(echo "$REPORT_DATA" | cut -d'|' -f5 | tr -d "\r\n;\"'\`") - NF_ST=$(echo "$REPORT_DATA" | cut -d'|' -f6 | tr -d "\r\n;\"'\`") - GPT_ST=$(echo "$REPORT_DATA" | cut -d'|' -f7 | tr -d "\r\n;\"'\`") - - [ -z "$GOOG_ST" ] && GOOG_ST="Unknown" - [ -z "$NF_ST" ] && NF_ST="Unknown" - [ -z "$GPT_ST" ] && GPT_ST="Unknown" + # ================== [v4.0.2 核心: 态势感知按钮一键入库] ================== + if [[ "$TEXT" == "svq|"* ]]; then + # 格式: svq|NODE_NAME|SCORE|GOOG|NF|GPT + IFS='|' read -r MAGIC NODE_ID SCORE GOOG_ST NF_ST GPT_ST <<< "$TEXT" + CHAT_ID=$(echo "$CHAT_ID" | tr -cd '0-9-') if [ -n "$NODE_ID" ] && [ -n "$SCORE" ]; then + # 1. 写入 SQLite db_exec "INSERT INTO ip_trend_log (node_name, scam_score, goog_status, nf_status, gpt_status) VALUES ('$NODE_ID', '$SCORE', '$GOOG_ST', '$NF_ST', '$GPT_ST');" + + # 2. 无损修改原消息:移除入库按钮,展示绿勾状态 (不破坏 Markdown 战报原文) + if [ -n "$MSG_ID" ]; then + curl -s --connect-timeout 5 -m 10 -X POST "https://api.telegram.org/bot${TG_TOKEN}/editMessageReplyMarkup" \ + -H "Content-Type: application/json" \ + -d "{\"chat_id\":\"${CHAT_ID}\",\"message_id\":\"${MSG_ID}\",\"reply_markup\":{\"inline_keyboard\":[[{\"text\":\"✅ 此报告已存档\",\"callback_data\":\"ignore\"}]]}}" > /dev/null + fi fi continue fi