// code from goatstore // api: https://store.agi.bd const axios = require("axios"); module.exports = { config: { name: "live", version: "2.0.0", author: "Zihad", countDown: 15, role: 0, shortDescription: "Live sports score & updates", longDescription: "বিভিন্ন খেলার লাইভ স্কোর, সময়/পর্ব এবং লাইভ আপডেট দেখায়", category: "sports", guide: { en: "{pn}" } }, onStart: async function ({ message }) { const games = [ ["⚽", "Football", "soccer", "eng.1"], ["🏀", "NBA Basketball", "basketball", "nba"], ["🏀", "WNBA Basketball", "basketball", "wnba"], ["🏈", "NFL", "football", "nfl"], ["⚾", "MLB Baseball", "baseball", "mlb"], ["🏒", "NHL Hockey", "hockey", "nhl"], ["🏎️", "Formula 1", "racing", "f1"], ["🏉", "Rugby", "rugby", "164205"], ["🎾", "ATP Tennis", "tennis", "atp"], ["🎾", "WTA Tennis", "tennis", "wta"], ["🏎️", "NASCAR", "racing", "nascar-premier"], ["⛳", "Golf", "golf", "pga"] ]; try { const requests = games.map(async ([icon, name, sport, league]) => { try { const url = `https://site.api.espn.com/apis/site/v2/sports/${sport}/${league}/scoreboard`; const res = await axios.get(url, { timeout: 12000, headers: { "User-Agent": "Mozilla/5.0" } }); return { icon, name, sport, league, events: res.data?.events || [] }; } catch (e) { return { icon, name, sport, league, events: [] }; } }); const results = await Promise.all(requests); let output = "🔴━━━━ LIVE SPORTS ━━━━🔴\n\n"; let liveCount = 0; for (const data of results) { for (const event of data.events) { const comp = event.competitions?.[0]; const status = comp?.status; const type = status?.type; if (!type || type.state !== "in") continue; const teams = comp.competitors || []; if (teams.length < 2) continue; const home = teams.find(x => x.homeAway === "home") || teams[0]; const away = teams.find(x => x.homeAway === "away") || teams[1]; liveCount++; const homeName = home.team?.displayName || home.team?.shortDisplayName || "Home"; const awayName = away.team?.displayName || away.team?.shortDisplayName || "Away"; const homeScore = home.score ?? "-"; const awayScore = away.score ?? "-"; const period = status.period || status.type?.name || ""; const clock = status.displayClock || status.type?.shortDetail || status.type?.detail || "LIVE"; output += `${data.icon} ${data.name}\n`; output += `🔴 LIVE\n`; output += `🏠 ${homeName} ${homeScore}\n`; output += `🆚\n`; output += `🚩 ${awayName} ${awayScore}\n`; output += `⏱️ ${clock}`; if (period) { output += ` | Period: ${period}`; } output += `\n`; /* * Extra live information * ESPN scoreboard may provide situation data */ const situation = comp.situation; if (situation) { if (situation.downDistanceText) { output += `📍 ${situation.downDistanceText}\n`; } if (situation.possession) { const poss = situation.possessionText || situation.possession; output += `🎯 Possession: ${poss}\n`; } if (situation.lastPlay?.text) { output += `📢 ${situation.lastPlay.text}\n`; } } output += `━━━━━━━━━━━━━━━━\n\n`; } } if (liveCount === 0) { return message.reply( "📡 LIVE SPORTS\n\n" + "❌ এই মুহূর্তে পাওয়া ESPN leagues-এ কোনো ম্যাচ LIVE পাওয়া যায়নি।\n\n" + "⚽ Football\n" + "🏀 Basketball\n" + "🏈 NFL\n" + "⚾ Baseball\n" + "🏒 Hockey\n" + "🎾 Tennis\n" + "🏎️ Racing\n" + "⛳ Golf\n\n" + "🔄 আবার কিছুক্ষণ পর `live` লিখে দেখুন।" ); } output += `📊 মোট LIVE: ${liveCount}\n`; output += `🔄 Live data • এখনই API থেকে নেওয়া হয়েছে`; return message.reply(output); } catch (error) { console.error("LIVE SPORTS ERROR:", error); return message.reply( "❌ Live sports data পাওয়া যাচ্ছে না।\n\n" + "🔄 কিছুক্ষণ পর আবার চেষ্টা করুন।" ); } } };