|
|
let fetch = require('node-fetch'); |
|
|
|
|
|
let handler = async (m, { conn, args, usedPrefix, command }) => { |
|
|
if (!args[0]) throw `*Contoh:* ${usedPrefix}${command} https://www.instagram.com/p/ByxKbUSnubS/?utm_source=ig_web_copy_link`; |
|
|
|
|
|
if (!args[0].match(/instagram/gi)) { |
|
|
throw `URL Instagram Tidak Valid!`; |
|
|
} |
|
|
|
|
|
await m.reply("Tunggu sebentar..."); |
|
|
|
|
|
try { |
|
|
const api = await fetch(`https://btch.us.kg/download/igdl?url=${encodeURIComponent(args[0])}`); |
|
|
const res = await api.json(); |
|
|
|
|
|
if (!res.status || res.code !== 200 || !res.result || res.result.length === 0) { |
|
|
throw `Tidak ada hasil ditemukan.`; |
|
|
} |
|
|
|
|
|
const limitnya = 3; |
|
|
|
|
|
for (let i = 0; i < Math.min(limitnya, res.result.length); i++) { |
|
|
await sleep(3000); |
|
|
const mediaUrl = res.result[i].url; |
|
|
const mediaType = mediaUrl.endsWith('.mp4') ? 'video' : 'image'; |
|
|
|
|
|
if (mediaType === 'video') { |
|
|
conn.sendFile(m.chat, mediaUrl, null, `*Instagram Downloader*\n\n` + |
|
|
`◦ Watermark: ${res.result[i].wm}\n` + |
|
|
`◦ Thumbnail: ${res.result[i].thumbnail}`, m); |
|
|
} else { |
|
|
conn.sendFile(m.chat, mediaUrl, null, `*Instagram Downloader*\n\n` + |
|
|
`◦ Watermark: ${res.result[i].wm}`, m); |
|
|
} |
|
|
} |
|
|
} catch (e) { |
|
|
console.error("Terjadi kesalahan:", e); |
|
|
throw `Terjadi kesalahan saat mengunduh media. Silakan periksa log untuk detail.`; |
|
|
} |
|
|
} |
|
|
|
|
|
handler.help = ['instagram'].map(v => v + ' <url>'); |
|
|
handler.tags = ['downloader']; |
|
|
handler.command = /^(ig|instagram|igdl|instagramdl|igstory)$/i; |
|
|
handler.limit = true; |
|
|
|
|
|
module.exports = handler; |
|
|
|
|
|
function sleep(ms) { |
|
|
return new Promise(resolve => setTimeout(resolve, ms)); |
|
|
} |