jadwalbola

by alfixd
37 Raw
/*
πŸ“Œ Nama Fitur: Jadwalbola 
🏷️ Type : Plugin ESM
πŸ”— Sumber : gapunya chπŸ—Ώ
πŸ”— Scrape : Lord Zervida
✍️  By Alfixd
*/

import axios from 'axios'
import * as cheerio from 'cheerio'
async function Today() {
    try {
        let tanggal = new Date()
        let format_tg = tanggal.toISOString().split('T')[0].replace(/-/g, '')
        const { data } = await axios.get(`https://www.espn.com/soccer/schedule/_/date/${format_tg}`)
        const $ = cheerio.load(data)
        let hasil = []
        let liga = ''
        $('.Table__Title, .Table__TBODY .Table__TR').each((_, el) => {
            if ($(el).hasClass('Table__Title')) {
                liga = $(el).text().trim()
            } else {
                const kolore = $(el).find('.Table__TD')
                const tim1 = kolore.eq(0).text().trim()
                const tim2 = kolore.eq(1).find('span').last().text().trim()
                const skor = tim1+' '+kolore.eq(1).text().trim()
                if (tim1 && tim2 && skor.includes('-')) {
                    hasil.push({
                        liga,
                        time: kolore.eq(2).text().trim() || 'Gak tau',
                        team1: tim1,
                        team2: tim2,
                        score: skor,
                        location: kolore.eq(3).text().trim() || 'Gak tau',
                        source: kolore.eq(0).find('a').attr('href') ? 'https://www.espn.com'+kolore.eq(0).find('a').attr('href') : 'Gak ada',
                        detail: kolore.eq(1).find('a').attr('href') ? 'https://www.espn.com'+kolore.eq(1).find('a').attr('href') : 'Gak ada'
                    })
                }
            }
        })
        return { 
            status: 'Sugses', 
            date: tanggal.toISOString().split('T')[0], 
            total: hasil.length, 
            data: hasil 
        }
    } catch (err) {
        throw new Error(err.message)
    }
}
async function Tomorrow() {
    try {
        let tanggal = new Date()
        tanggal.setDate(tanggal.getDate()+1)
        let format_tg = tanggal.toISOString().split('T')[0].replace(/-/g, '')
        const { data } = await axios.get(`https://www.espn.com/soccer/schedule/_/date/${format_tg}`)
        const $ = cheerio.load(data)
        let hasil = []
        let liga = ''
        $('.Table__Title, .Table__TBODY .Table__TR').each((_, el) => {
            if ($(el).hasClass('Table__Title')) {
                liga = $(el).text().trim()
            } else {
                const kolore = $(el).find('.Table__TD')
                const tim1 = kolore.eq(0).text().trim()
                const tim2 = kolore.eq(1).find('span').last().text().trim()
                if (tim1 && tim2) {
                    hasil.push({
                        liga,
                        time: kolore.eq(2).text().trim() || 'Gak tau',
                        team1: tim1,
                        team2: tim2,
                        tayang: kolore.eq(3).text().trim() || 'Gak tau',
                        location: kolore.eq(4).text().trim() || '-',
                        source: kolore.eq(0).find('a').attr('href') ? 'https://www.espn.com'+kolore.eq(0).find('a').attr('href') : 'Gak ada',
                        detail: kolore.eq(1).find('a').attr('href') ? 'https://www.espn.com'+kolore.eq(1).find('a').attr('href') : 'Gak ada'
                    })
                }
            }
        })
        return { 
            status: 'Sugses', 
            date: tanggal.toISOString().split('T')[0], 
            total: hasil.length, 
            data: hasil 
        }
    } catch (err) {
        throw new Error(err.message)
    }
}

const handler = async (m, { conn, text, command }) => {
    let format = text === 'today' ? 'Today' : 'Tomorrow';
    let res = format === 'Today' ? await Today() : await Tomorrow();
    
    if (res.total === 0) {
        return m.reply(`Tidak ada jadwal pertandingan untuk ${format.toLowerCase()}.`);
    }
    
    let teks = `*JADWAL BOLA ${format.toUpperCase()}*\nπŸ“… Date: ${res.date}\nπŸ† Total: ${res.total} pertandingan\n\n`;
    
    for (let i of res.data) {
        teks += `πŸ† *Liga:* ${i.liga}\n`;
        teks += `⚽ *Tim:* ${i.team1} vs ${i.team2}\n`;
        teks += `⏰ *Waktu:* ${i.time}\n`;
        if (format === 'Today' && i.score) {
            teks += `πŸ“Š *Skor:* ${i.score}\n`;
        }
        teks += `🏟️ *Lokasi:* ${i.location}\n`;
        teks += `πŸ”— *Link:* ${i.detail}\n\n`;
    }
    
    m.reply(teks);
};

handler.help = ['jadwalbola'];
handler.command = ['jadwalbola'];
handler.tags = ['info'];
handler.limit = true;
export default handler;