// code from goatstore // api: https://store.agi.bd const moment = require("moment-timezone"); module.exports = { config: { name: "pending", version: "2.3", author: "Siam Ahmed Saan", countDown: 5, role: 3, shortDescription: { en: "Manage pending group requests" }, longDescription: { en: "Approve or refuse groups waiting for bot permission" }, category: "owner" }, langs: { en: { invalid: "โŒ Invalid selection: %1", refused: "๐Ÿšซ %1 group request refused\nโฐ Time: %2", approved: "โœ… %1 group successfully approved\nโฐ Time: %2", fetchFail: "โŒ Unable to load pending groups", list: "๐Ÿ”” PENDING GROUPS (%1)\n\n%2\n\n๐Ÿ‘‰ Reply with number(s) to approve\n๐Ÿ‘‰ Reply `c ` to cancel", empty: "โœ… No pending groups found" } }, onReply: async ({ api, event, Reply, getLang }) => { if (event.senderID != Reply.author) return; const input = event.body.trim(); const { threadID, messageID } = event; const prefix = global.GoatBot?.config?.prefix || "/"; const botNickname = "Aiyooo xdi ๐Ÿฅ‚๐Ÿ’‹"; let done = 0; const dateTime = moment() .tz("Asia/Dhaka") .format("ddd, YYYY-MMM-DD, HH:mm:ss"); if (/^(c|cancel)/i.test(input)) { const nums = input .replace(/^(c|cancel)/i, "") .trim() .split(/\s+/); for (const n of nums) { if (!Number(n) || n < 1 || n > Reply.queue.length) return api.sendMessage( getLang("invalid", n), threadID, messageID ); const targetThreadID = Reply.queue[n - 1].threadID; api.sendMessage( `โ•ฐโ”ˆโžค ๐Ÿšซ ๐€๐‚๐‚๐„๐’๐’ ๐ƒ๐„๐๐ˆ๐„๐ƒ ๐Ÿค– ๐๐จ๐ญ ยป ๐‘๐ž๐Ÿ๐ฎ๐ฌ๐ž๐ โšก ๐๐ซ๐ž๐Ÿ๐ข๐ฑ ยป [ ${prefix} ] ๐Ÿ‘‘ ๐Ž๐ฐ๐ง๐ž๐ซ ยป ๐Œ๐š๐‘๐ฎ๐… โฐ ๐“๐ข๐ฆ๐ž ยป ${dateTime} ๐ŸŒธ ๐“๐ก๐š๐ง๐ค ๐ฒ๐จ๐ฎ`, targetThreadID ); await api.removeUserFromGroup( api.getCurrentUserID(), targetThreadID ); done++; } return api.sendMessage( getLang("refused", done, dateTime), threadID, messageID ); } const nums = input.split(/\s+/); for (const n of nums) { if (!Number(n) || n < 1 || n > Reply.queue.length) return api.sendMessage( getLang("invalid", n), threadID, messageID ); const targetThreadID = Reply.queue[n - 1].threadID; const botID = api.getCurrentUserID(); api.sendMessage( `โ•ฐโ”ˆโžค ๐Ÿค– ๐๐Ž๐“ ๐‘๐„๐€๐ƒ๐˜ โšก ๐๐ซ๐ž๐Ÿ๐ข๐ฑ ยป [ ${prefix} ] ๐Ÿ“– ๐‡๐ž๐ฅ๐ฉ ยป Type [ ${prefix}help ] ๐ŸŒธ ๐“๐ก๐š๐ง๐ค ๐ฒ๐จ๐ฎ ๐Ÿ๐จ๐ซ ๐š๐๐๐ข๐ง๐  ๐ฆ๐ž! ๐Ÿ‘‘ ๐Ž๐ฐ๐ง๐ž๐ซ ยป ๐Œ๐š๐‘๐ฎ๐… โฐ ๐“๐ข๐ฆ๐ž ยป ${dateTime}`, targetThreadID ); try { await api.changeNickname( botNickname, targetThreadID, botID ); } catch (e) { console.log( `Nickname set error for ${targetThreadID}: `, e ); } done++; } return api.sendMessage( getLang("approved", done, dateTime), threadID, messageID ); }, onStart: async ({ api, event, getLang, commandName }) => { const { threadID, messageID, senderID } = event; let text = ""; let i = 1; try { const other = await api.getThreadList(100, null, ["OTHER"]) || []; const pending = await api.getThreadList(100, null, ["PENDING"]) || []; const groups = [...other, ...pending].filter( t => t.isGroup && t.isSubscribed ); if (!groups.length) return api.sendMessage( getLang("empty"), threadID, messageID ); for (const g of groups) { text += `${i++}. ${g.name || "Unnamed Group"} โ†’ ${g.threadID}\n`; } api.sendMessage( getLang("list", groups.length, text), threadID, (err, info) => { if (err) return; global.GoatBot.onReply.set(info.messageID, { commandName, author: senderID, queue: groups }); }, messageID ); } catch (err) { console.error("Pending command error:", err); return api.sendMessage( getLang("fetchFail"), threadID, messageID ); } } };