diff --git a/.env b/.env index d863659..0322222 100644 --- a/.env +++ b/.env @@ -1,3 +1,3 @@ -BOT_TOKEN=8488665890:AAH7FY5I2xzHhfOdxlzb11ewl2I-MMTH2-o +BOT_TOKEN=8156642467:AAEalekr-33lFS3tTTkXIEiaawfDzR6lBJc TZ=Europe/Moscow ODDS_API_KEY=c29bc26dee8aa9d95a5ce8d14ea63923 diff --git a/config.py b/config.py index 4e36f71..0345a0a 100644 --- a/config.py +++ b/config.py @@ -35,9 +35,13 @@ E621_API_KEY = os.getenv("E621_API_KEY", "") ODDS_API_KEY = os.getenv("ODDS_API_KEY", "") ODDS_API_BASE = "https://api.the-odds-api.com/v4" ODDS_SPORTS = { - "cs": "esports_csgo", - "dota": "esports_dota2", - "football": "soccer_epl", + "epl": "soccer_epl", + "ucl": "soccer_uefa_champs_league", + "laliga": "soccer_spain_la_liga", + "bundesliga": "soccer_germany_bundesliga", + "seriea": "soccer_italy_serie_a", + "ligue1": "soccer_france_ligue_one", + "europa": "soccer_uefa_europa_league", } BET_MAX_AMOUNT = 3.0 BET_DB_PATH = "/db/bets.sqlite3" @@ -209,8 +213,8 @@ def get_hint_text(templates_str: str) -> str: "• /talk [текст] — ИИ базарит на фене.\n" "• /penis_casino [ставка] — казино на размер.\n" "• /gadanie [тема] — гадание на фене с мемом.\n" - "• /matches [cs|dota|football] — матчи для ставок.\n" - "• /bet [спорт] [номер] [исход] [ставка] — поставить см.\n" + "• /matches [epl|ucl|laliga|bundesliga|seriea|ligue1|europa] — матчи для ставок.\n" + "• /bet [лига] [номер] [исход] [ставка] — поставить см.\n" "• /mybets — мои активные ставки.\n" "• /bet_history — история ставок за месяц + статистика.\n" "• /sports_debug — диагностика API матчей.\n" diff --git a/games/betting.py b/games/betting.py index cf22ceb..933da3c 100644 --- a/games/betting.py +++ b/games/betting.py @@ -264,7 +264,15 @@ def format_matches(matches: list[dict], sport_alias: str, sport_label: str) -> s def _get_sport_label(key: str) -> str: - labels = {"cs": "🎮 CS2", "dota": "🎮 Dota 2", "football": "⚽ Футбол"} + labels = { + "epl": "⚽ EPL", + "ucl": "⚽ Champions League", + "laliga": "⚽ La Liga", + "bundesliga": "⚽ Bundesliga", + "seriea": "⚽ Serie A", + "ligue1": "⚽ Ligue 1", + "europa": "⚽ Europa League", + } return labels.get(key, key) @@ -436,15 +444,17 @@ def get_user_bet_history(user_id: int) -> str: status = r["status"] amount = float(r["amount"]) odds_val = float(r["odds"]) - payout = float(r["payout"] or 0) + payout_raw = float(r["payout"] or 0) total_bet += amount if status == "won": wins += 1 - total_won += payout + # Для старых ставок payout может быть 0, пересчитываем + actual_payout = payout_raw if payout_raw > 0 else round(amount * odds_val, 1) + total_won += actual_payout status_icon = "✅" - result_text = f"+{payout:.1f} см" + result_text = f"+{actual_payout:.1f} см" elif status == "lost": losses += 1 total_lost += amount diff --git a/main.py b/main.py index 6e5fa5d..25a009b 100644 --- a/main.py +++ b/main.py @@ -1237,7 +1237,8 @@ async def handle_matches_cmd(message: Message): if sport_alias and sport_alias not in config.ODDS_SPORTS: if message.from_user: clear_user_sport_context(message.from_user.id) - await message.reply("Неизвестный спорт. Доступно: cs / dota / football", parse_mode=None) + available = " / ".join(config.ODDS_SPORTS.keys()) + await message.reply(f"Неизвестная лига. Доступно: {available}", parse_mode=None) return if message.from_user: if sport_alias and sport_alias in config.ODDS_SPORTS: @@ -1280,7 +1281,7 @@ async def handle_bet_cmd(message: Message): sport_alias = get_user_sport_context(message.from_user.id) if not sport_alias: await message.reply( - "Сначала открой /matches cs, /matches dota или /matches football.\n" + "Сначала открой /matches с нужной лигой (epl, ucl, laliga...).\n" "Либо пиши полный формат: /bet [спорт] [номер] [исход] [ставка]", parse_mode=None, )