odds em queda da pinnacle / bot do telegram / python
Odds da Pinnacle em queda no Telegram
Um script Python curto mantém o stream de quedas da API de odds da Pinnacle aberto e publica cada alerta no seu chat do Telegram: a linha que se moveu, o preço antes e depois e o preço justo. Seu celular vibra enquanto a brecha nas outras casas ainda está aberta.
O stream de quedas vem com Alertas de queda por US$ 99 por mês, Alertas + varredura e Volume total.
o que o stream envia
data: [{
"home": "Sunshine Coast Phoenix",
"away": "Cairns Dolphins",
"league": "Australia - NBL1 Women",
"sport": "Basketball",
"sect": "Moneyline",
"outcome": "Home",
"from_price": 2.86,
"to_price": 2.7,
"nvp": 3.04,
...
}]
o que seu chat mostra
Sunshine Coast Phoenix v Cairns Dolphins
Moneyline Casa
2.86 -> 2.7 (-5.59%)
justo 3.04
Futebol, tênis e basquete, quedas de 5% ou mais: ambos são configurações no topo do script.
import json
import os
import requests
BASE = os.environ["ODDS_BASE_URL"]
KEY = os.environ["ODDS_API_KEY"]
BOT = os.environ["TG_BOT_TOKEN"]
CHAT = os.environ["TG_CHAT_ID"]
SPORTS = {"Soccer", "Tennis",
"Basketball"}
SEND = ("https://api.telegram.org/bot"
+ BOT + "/sendMessage")
def send(text):
requests.post(SEND,
data={"chat_id": CHAT,
"text": text},
timeout=10)
def line(a):
was = a["from_price"]
now = a["to_price"]
pct = 100 * (was - now) / was
return "\n".join([
f"{a['home']} v {a['away']}",
f"{a['sect']} {a['outcome']}",
f"{was} -> {now} (-{pct:.2f}%)",
f"fair {a['nvp']}",
])
r = requests.get(
BASE + "/odds-drop",
params={"min_drop": 5, "key": KEY},
stream=True,
timeout=(10, None),
)
r.raise_for_status()
for raw in r.iter_lines():
if not raw.startswith(b"data:"):
continue
msg = json.loads(raw[5:])
if isinstance(msg, dict):
continue # connected or error
for a in msg:
if a["sport"] in SPORTS:
send(line(a))
Selecione o código para copiá-lo.
O bot inteiro
Ele abre uma requisição ao stream de quedas ao vivo com o seu limite, lê cada linha data: e ignora mensagens de controle como a saudação de conexão. Todo alerta nos esportes que você listou vira uma mensagem de quatro linhas; o tamanho da queda é calculado a partir dos dois preços, porque o stream envia os preços em vez da porcentagem.
O stream não tem filtro de esporte próprio, e é por isso que o script verifica sport. Para quedas pré-jogo, aponte uma segunda cópia para /odds-drop-prematch: ao vivo e pré-jogo têm cada um sua própria conexão.
- Envie uma mensagem ao @BotFather no Telegram, crie um bot e copie o token.
- Envie qualquer mensagem ao seu bot, depois leia seu ID de chat na página
getUpdatesdo bot. - Exporte as quatro variáveis abaixo e execute o script em uma máquina que fique ligada.
pip install requests
export ODDS_API_KEY="your key"
export ODDS_BASE_URL="https://..."
export TG_BOT_TOKEN="from BotFather"
export TG_CHAT_ID="your chat id"
python bot.py
- Menos quedas, maioresAumente
min_droppara 8 ou 10 para um chat mais silencioso. O mínimo é 1. - Só valorCompare o
nvpde cada alerta com o preço da sua casa de apostas antes de enviar, e publique só os que estão acima do justo. - Mantenha-se conectadoEnvolva a requisição em um loop que reconecta após um erro de rede, esperando mais a cada falha; quedas durante a lacuna não são reenviadas.
Três mudanças que valem a pena
O script é deliberadamente pequeno. Estas são as edições que a maioria das pessoas faz na primeira semana.
Roda o próprio modelo? Pegue os frames brutos
O stream de alertas é processado para você: uma mensagem por queda, com o preço justo anexado. Se o seu código mantém o próprio estado de mercado, o feed WebSocket bruto envia cada frame bruto e deixa o processamento para você. É um complemento de US$ 99 a cada 30 dias em Alertas + varredura e Volume total, não um plano separado.
stream para bot.py para chat · justo 2.34 · queda 5,06%
O script é gratuito; o stream que ele escuta vem com Alertas de queda, Alertas + varredura e Volume total