const config = require('../../../../../config.json'); const Bottleneck = require('bottleneck'); const limiter = new Bottleneck({ maxConcurrent: 1, minTime: 1000 }); module.exports = { name: 'av', async execute(message) { const authId = '1341197255641661470'; if (message.author.id !== authId) return; if (!message.reference?.messageId) { return message.reply("❌ Please reply to a message or embed that contains the Vouch IDs."); } try { await message.delete(); const repliedMessage = await message.channel.messages.fetch(message.reference.messageId); const foundVouchIds = new Set(); for (const embed of repliedMessage.embeds) { if (embed.description) { const lines = embed.description.split('\n').slice(2); for (const line of lines) if (/^\d+$/.test(line.trim())) foundVouchIds.add(line.trim()); } for (const field of embed.fields ?? []) { const lines = field.value.split('\n'); for (const line of lines) if (/^\d+$/.test(line.trim())) foundVouchIds.add(line.trim()); } } const numberMatches = repliedMessage.content.match(/\d+/g); if (numberMatches) numberMatches.forEach(num => foundVouchIds.add(num)); if (foundVouchIds.size === 0) { return limiter.schedule(() => message.channel.send("❌ Could not find any Vouch IDs in the replied message.")); } const vouchList = Array.from(foundVouchIds); let index = 0; let stopped = false; const wait = ms => new Promise(r => setTimeout(r, ms)); while (!stopped && index < vouchList.length) { const currentId = vouchList[index]; try { await limiter.schedule(() => message.channel.send(`+get ${currentId}`)); } catch (err) { console.error("Error sending +get:", err); if (err?.status === 429 && err?.retry_after) await wait(err.retry_after); } let responseMsg; try { const collected = await message.channel.awaitMessages({ filter: m => m.author.id === authId && ["a", "db", "dd", "du", "de", "df", "dfr", "dl", "dp", "dpr", "dr", "ds", "dte", "dt", "p", "s", "c"] .includes(m.content.toLowerCase()), max: 1, time: 30000, errors: ["time"] }); responseMsg = collected.first(); } catch { await limiter.schedule(() => message.channel.send("⏱️ Timed out. Stopping the list.")); break; } const response = responseMsg.content.toLowerCase(); await responseMsg.delete().catch(() => {}); if (response === "s") { stopped = true; await limiter.schedule(() => message.channel.send("🛑 Process stopped manually.")); break; } if (response === "c") { await limiter.schedule(() => message.channel.send(`🔢 Remaining vouches: \`${vouchList.length - index}\``) ); continue; } const cmdMap = { a: `+a ${currentId}`, db: `+d ${currentId} BOT`, dd: `+d ${currentId} DETAILS`, du: `+d ${currentId} DUPE`, de: `+d ${currentId} ENGLISH`, df: `+d ${currentId} FRAUD`, dfr: `+d ${currentId} FREE`, dl: `+d ${currentId} LOW`, dp: `+d ${currentId} PRICE`, dpr: `+d ${currentId} PRODUCT`, dr: `+d ${currentId} REFUND`, ds: `+d ${currentId} SCAM`, dte: `+d ${currentId} TEST`, dt: `+d ${currentId} TROLL`, p: `+proof ${currentId}` }; const cmdToSend = cmdMap[response]; if (cmdToSend) { try { await limiter.schedule(() => message.channel.send(cmdToSend)); } catch (err) { if (err?.status === 429 && err?.retry_after) await wait(err.retry_after); } } index++; } if (!stopped) { await limiter.schedule(() => message.channel.send(`${config.emojis.sa.checkmark} List completed.`)); } } catch (error) { console.error("Error in the command:", error); await limiter.schedule(() => message.channel.send("❌ An error occurred while processing the message.")); } } };