45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
from fastapi import APIRouter, Request
|
|
from pydantic import BaseModel
|
|
import time
|
|
|
|
router = APIRouter()
|
|
|
|
class TelegramUpdate(BaseModel):
|
|
update_id: int
|
|
message: dict = None
|
|
|
|
@router.post("/api/v1/telegram/webhook")
|
|
async def telegram_webhook(update: TelegramUpdate):
|
|
"""
|
|
VIP 私董會互動式 Telegram 機器人 Webhook
|
|
"""
|
|
if not update.message or "text" not in update.message:
|
|
return {"status": "ok"}
|
|
|
|
text = update.message["text"].strip()
|
|
chat_id = update.message["chat"]["id"]
|
|
|
|
# 模擬 !sgp [主隊] [客隊]
|
|
if text.startswith("!sgp"):
|
|
parts = text.split()
|
|
if len(parts) == 3:
|
|
home, away = parts[1], parts[2]
|
|
# 這裡應該呼叫 SGPCorrelationEngine
|
|
response_text = f"📊 [SGP 蒙地卡羅運算完成]\n賽事: {home} vs {away}\n推薦串關: {home} 勝 + 總進球數大於 2.5\nEV: +6.5%\n機率: 45%"
|
|
else:
|
|
response_text = "❌ 指令錯誤,正確格式: !sgp [主隊] [客隊]"
|
|
|
|
# 模擬 !ev
|
|
elif text.startswith("!ev"):
|
|
# 這裡應該從 EV 引擎抓取 Top 3
|
|
response_text = "🔥 [全市場 Top 3 正期望值盤口]\n1. USA vs ENG - Under 2.5 (EV: +13.1%)\n2. MEX vs ARG - MEX Win (EV: +17.6%)\n3. FRA vs BRA - FRA Win (EV: +6.5%)"
|
|
|
|
else:
|
|
response_text = "未知指令。可用指令: !sgp [主隊] [客隊], !ev"
|
|
|
|
# 實務上這裡會呼叫 Telegram Bot API 傳送訊息
|
|
# send_message_to_telegram(chat_id, response_text)
|
|
print(f"Telegram Bot Reply to {chat_id}: {response_text}")
|
|
|
|
return {"status": "ok"}
|