diff --git a/bot_listener.py b/bot_listener.py
index 93cafcbd..8ed0201d 100644
--- a/bot_listener.py
+++ b/bot_listener.py
@@ -128,17 +128,24 @@ def analyze_weather_trend(weather_data, temp_symbol):
insights.append(f"🌫️ 能见度受限:当前有雾/霭,阻挡阳光并带来高湿,会大幅延缓升温周期。")
# 6. 风向与能见度
- wind_dir = metar.get("current", {}).get("wind_dir")
- if wind_dir is not None:
+ try:
+ wind_dir = float(metar.get("current", {}).get("wind_dir", 0))
# 北半球简化逻辑:北风冷,南风暖
if 315 <= wind_dir or wind_dir <= 45:
insights.append(f"🌬️ 偏北风:冷空气处于主导地位,午后增温阻力较大。")
elif 135 <= wind_dir <= 225:
insights.append(f"🔥 偏南风:正从低纬度输送暖湿气流,气温有超预期上涨的潜力。")
+ except (TypeError, ValueError):
+ pass
- visibility = metar.get("current", {}).get("visibility_mi")
- if visibility is not None and visibility < 3 and local_hour <= 11:
- insights.append(f"🌫️ 早晨低见度:能见度极差 ({visibility}mi),阳光无法打透,早间升温将非常缓慢。")
+ try:
+ visibility = metar.get("current", {}).get("visibility_mi")
+ if visibility is not None:
+ vis_val = float(str(visibility).replace("+", "").replace("-", ""))
+ if vis_val < 3 and local_hour <= 11:
+ insights.append(f"🌫️ 早晨低见度:能见度极差 ({vis_val}mi),阳光无法打透,早间升温将非常缓慢。")
+ except (TypeError, ValueError):
+ pass
if not insights:
return ""
@@ -316,13 +323,17 @@ def start_bot():
else:
msg_lines.append(f" 🌡️ {metar_temp}{temp_symbol}")
if wind is not None:
- wind_dir = metar.get("current", {}).get("wind_dir")
- if wind_dir is not None:
- # 翻译风向
- dirs = ["北", "东北", "东", "东南", "南", "西南", "西", "西北"]
- dir_str = dirs[int((wind_dir + 22.5) % 360 / 45)]
- msg_lines.append(f" 💨 风力: {wind}kt ({dir_str}风 {wind_dir}°)")
- else:
+ try:
+ wind_dir_raw = metar.get("current", {}).get("wind_dir")
+ if wind_dir_raw is not None:
+ wind_dir = float(wind_dir_raw)
+ # 翻译风向
+ dirs = ["北", "东北", "东", "东南", "南", "西南", "西", "西北"]
+ dir_str = dirs[int((wind_dir + 22.5) % 360 / 45)]
+ msg_lines.append(f" 💨 风力: {wind}kt ({dir_str}风 {int(wind_dir)}°)")
+ else:
+ msg_lines.append(f" 💨 风速: {wind}kt")
+ except (TypeError, ValueError):
msg_lines.append(f" 💨 风速: {wind}kt")
vis = metar.get("current", {}).get("visibility_mi")