From 2f81c1e23b2b007d18122135a598543632a97b98 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Fri, 6 Feb 2026 21:07:52 +0800 Subject: [PATCH] feat: Enhance market message with detailed prediction analysis, lock status, volume, and refined direction display. --- bot_listener.py | 66 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 11 deletions(-) diff --git a/bot_listener.py b/bot_listener.py index eab877d3..c7d0daa7 100644 --- a/bot_listener.py +++ b/bot_listener.py @@ -103,7 +103,7 @@ def start_bot(): # 构建消息 msg_lines = [ f"🎯 即将结算市场 ({earliest_date})\n", - f"共发现 {len(earliest_markets)} 个活跃选项,以下为最值得关注的:\n" + f"共 {len(earliest_markets)} 个活跃选项\n" ] for i, s in enumerate(top_markets, 1): @@ -112,33 +112,77 @@ def start_bot(): prediction = s.get("prediction", "N/A") buy_yes = s.get("buy_yes", s.get("price", 50)) buy_no = s.get("buy_no", 100 - s.get("price", 50)) + volume = s.get("volume", 0) + url = s.get("url", "") + + # 解析选项区间 + import re + range_match = re.search(r'(\d+)-(\d+)', option) + below_match = re.search(r'(\d+).*or below', option, re.I) + higher_match = re.search(r'(\d+).*or higher', option, re.I) + + # 判断预测与区间关系 + analysis = "" + try: + pred_val = float(re.search(r'[\d.]+', str(prediction)).group()) + if range_match: + low, high = int(range_match.group(1)), int(range_match.group(2)) + if pred_val < low: + analysis = f"预测{pred_val}° < {low}° → 买NO ✓" + elif pred_val > high: + analysis = f"预测{pred_val}° > {high}° → 买NO ✓" + else: + analysis = f"预测{pred_val}° 在区间内 → 买YES ✓" + elif below_match: + threshold = int(below_match.group(1)) + if pred_val <= threshold: + analysis = f"预测{pred_val}° ≤ {threshold}° → 买YES ✓" + else: + analysis = f"预测{pred_val}° > {threshold}° → 买NO ✓" + elif higher_match: + threshold = int(higher_match.group(1)) + if pred_val >= threshold: + analysis = f"预测{pred_val}° ≥ {threshold}° → 买YES ✓" + else: + analysis = f"预测{pred_val}° < {threshold}° → 买NO ✓" + except: + analysis = f"预测: {prediction}" # 判断最佳方向 if buy_no >= 85: - direction = f"📈 Buy No {buy_no}¢ (接近锁定)" + direction = f"Buy No {buy_no}¢" + lock_status = "🔒锁定" if buy_no >= 95 else "⏳接近锁定" confidence = "🔥" if buy_no >= 90 else "⭐" elif buy_yes >= 85: - direction = f"📈 Buy Yes {buy_yes}¢ (接近锁定)" + direction = f"Buy Yes {buy_yes}¢" + lock_status = "🔒锁定" if buy_yes >= 95 else "⏳接近锁定" confidence = "🔥" if buy_yes >= 90 else "⭐" elif buy_no >= 70: - direction = f"👀 Buy No {buy_no}¢ (观望)" + direction = f"Buy No {buy_no}¢" + lock_status = "👀观望" confidence = "💡" elif buy_yes >= 70: - direction = f"👀 Buy Yes {buy_yes}¢ (观望)" + direction = f"Buy Yes {buy_yes}¢" + lock_status = "👀观望" confidence = "💡" else: - direction = f"⚖️ 均衡盘 Yes:{buy_yes}¢ No:{buy_no}¢" + direction = f"Yes:{buy_yes}¢ No:{buy_no}¢" + lock_status = "⚖️均衡" confidence = "📊" + # 成交量显示 + vol_text = f"${volume/1000:.1f}K" if volume >= 1000 else f"${volume:.0f}" + + # 当地时间 + local_time = s.get("local_time", "") + time_only = local_time.split(" ")[1] if " " in local_time else local_time + msg_lines.append( f"{confidence} {i}. {city} {option}\n" - f" 预测: {prediction}\n" - f" {direction}\n" + f" 💡 {analysis}\n" + f" 📊 {direction} | {lock_status} | 量:{vol_text} | 🕒{time_only}\n" ) - local_time = top_markets[0].get("local_time", "N/A") if top_markets else "N/A" - msg_lines.append(f"\n🕒 当地时间: {local_time}") - bot.send_message(message.chat.id, "\n".join(msg_lines), parse_mode="HTML") except Exception as e: