MCPcopy Create free account
hub / github.com/GlobalTechInfo/MEGA-MD / handler

Function handler

plugins/instagram.js:18–75  ·  view source on GitHub ↗
(sock, message, args, context)

Source from the content-addressed store, hash-verified

16 description: 'Download Instagram posts, reels & videos',
17 usage: '.ig <instagram link>',
18 async handler(sock, message, args, context) {
19 const chatId = context.chatId || message.key.remoteJid;
20 const text = args.join(' ') ||
21 message.message?.conversation ||
22 message.message?.extendedTextMessage?.text;
23 try {
24 if (processedMessages.has(message.key.id))
25 return;
26 processedMessages.add(message.key.id);
27 setTimeout(() => processedMessages.delete(message.key.id), 5 * 60 * 1000);
28 if (!text) {
29 return await sock.sendMessage(chatId, { text: '📸 *Instagram Downloader*\n\nUsage:\n.ig <post | reel | video link>' }, { quoted: message });
30 }
31 const igRegex = /https?:\/\/(www\.)?(instagram\.com|instagr\.am)\/(p|reel|tv)\//i;
32 if (!igRegex.test(text)) {
33 return await sock.sendMessage(chatId, { text: '❌ Invalid Instagram link.\nPlease send a valid post, reel, or video URL.' }, { quoted: message });
34 }
35 await sock.sendMessage(chatId, {
36 react: { text: '🔄', key: message.key }
37 });
38 const res = await igdl(text);
39 if (!res?.data?.length) {
40 return await sock.sendMessage(chatId, { text: '❌ No media found.\nThe post may be private or unavailable.' }, { quoted: message });
41 }
42 const mediaList = extractUniqueMedia(res.data).slice(0, 20);
43 if (!mediaList.length) {
44 return await sock.sendMessage(chatId, { text: '❌ No downloadable media found.' }, { quoted: message });
45 }
46 for (let i = 0; i < mediaList.length; i++) {
47 const media = mediaList[i];
48 const url = media.url;
49 const isVideo = media.type === 'video' ||
50 /\.(mp4|mov|webm|mkv)$/i.test(url) ||
51 text.includes('/reel/') ||
52 text.includes('/tv/');
53 if (isVideo) {
54 await sock.sendMessage(chatId, {
55 video: { url },
56 mimetype: 'video/mp4',
57 caption: '📥 *Downloaded by MEGA-MD*'
58 }, { quoted: message });
59 }
60 else {
61 await sock.sendMessage(chatId, {
62 image: { url },
63 caption: '📥 *Downloaded by MEGA-MD*'
64 }, { quoted: message });
65 }
66 if (i < mediaList.length - 1) {
67 await new Promise(r => setTimeout(r, 1000));
68 }
69 }
70 }
71 catch (err) {
72 console.error('Instagram plugin error:', err);
73 await sock.sendMessage(chatId, { text: '❌ Failed to download Instagram media. Please try again later.' }, { quoted: message });
74 }
75 }

Callers

nothing calls this directly

Calls 1

extractUniqueMediaFunction · 0.85

Tested by

no test coverage detected