goat
command
pending
Manage pending group requests
0
views
0
likes
0
installs
raw source
const moment = require("moment-timezone");
module.exports = {
config: {
name: "pending",
version: "3.0",
author: "〲MAMUNⓇ︵爱",
countDown: 5,
role: 2,
shortDescription: {
en: "Manage pending group requests"
},
longDescription: {
en: "Approve or refuse groups waiting for bot permission"
},
category: "owner"
},
langs: {
en: {
invalid: "❌ 𝗜𝗻𝘃𝗮𝗹𝗶𝗱 𝘀𝗲𝗹𝗲𝗰𝘁𝗶𝗼𝗻: %1",
refused:
"🚫 𝗥𝗲𝗾𝘂𝗲𝘀𝘁 𝗥𝗲𝗷𝗲𝗰𝘁𝗲𝗱\n📦 𝗚𝗿𝗼𝘂𝗽𝘀: %1\n⏰ 𝗧𝗶𝗺𝗲: %2",
approved:
"✅ 𝗥𝗲𝗾𝘂𝗲𝘀𝘁 𝗔𝗽𝗽𝗿𝗼𝘃𝗲𝗱\n📦 𝗚𝗿𝗼𝘂𝗽𝘀: %1\n⏰ 𝗧𝗶𝗺𝗲: %2",
fetchFail:
"❌ 𝗨𝗻𝗮𝗯𝗹𝗲 𝘁𝗼 𝗹𝗼𝗮𝗱 𝗽𝗲𝗻𝗱𝗶𝗻𝗴 𝗴𝗿𝗼𝘂𝗽𝘀",
empty:
"✅ 𝗡𝗼 𝗽𝗲𝗻𝗱𝗶𝗻𝗴 𝗴𝗿𝗼𝘂𝗽𝘀 𝗳𝗼𝘂𝗻𝗱",
list:
`
𝗣𝗘𝗡𝗗𝗜𝗡𝗚
📦 𝗧𝗼𝘁𝗮𝗹 𝗥𝗲𝗾𝘂𝗲𝘀𝘁𝘀 : %1
%2
`
}
},
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 =
"𝗧𝗠 ^〲𝗠𝗔𝗠𝗨𝗡ツ࿐ ⁰⁰⁷";
let done = 0;
const dateTime = moment()
.tz("Asia/Dhaka")
.format("DD/MM/YYYY • hh:mm:ss A");
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
);
try {
await api.removeUserFromGroup(
api.getCurrentUserID(),
targetThreadID
);
}
catch (e) {
console.log(e);
}
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}
➤ 𝗧𝗶𝗺𝗲 : ${dateTime}
`,
targetThreadID
);
try {
await api.changeNickname(
botNickname,
targetThreadID,
botID
);
}
catch (e) {
console.log(e);
}
done++;
}
return api.sendMessage(
getLang("approved", done, dateTime),
threadID,
messageID
);
},
onStart: async ({
api,
event,
getLang,
commandName
}) => {
const {
threadID,
messageID,
senderID
} = event;
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
);
let text = "";
groups.forEach(
(group, index) => {
text += `${index + 1}. ${group.name || "Unnamed Group"}\n🆔 ${group.threadID}\n\n`;
}
);
api.sendMessage(
getLang(
"list",
groups.length,
text
),
threadID,
(err, info) => {
global.GoatBot.onReply.set(
info.messageID,
{
commandName,
author: senderID,
queue: groups
}
);
},
messageID
);
}
catch (err) {
api.sendMessage(
getLang("fetchFail"),
threadID,
messageID
);
}
}
};