goat
command
filteruser
No description
0
views
0
likes
0
installs
raw source
function sleep(time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
module.exports = {
config: {
name: "filteruser",
version: "2.0.0",
author: "๐๐๐๐ฎ๐
",
countDown: 5,
role: 1,
description: { en: "filter group members by number of messages or locked account" },
category: "box chat",
guide: { en: "{pn} [<number of messages> | die]" }
},
langs: {
en: {
needAdmin: "โ ๏ธ | ๐๐๐๐๐ ๐ ๐๐๐๐ ๐๐ ๐๐๐๐๐ ๐๐๐๐ ๐ก ๐๐๐ ๐ฅบ ๐กโ๐๐ ๐ผ ๐๐๐ ๐๐ ๐กโ๐๐ ",
confirm: "โ ๏ธ | ๐ด๐๐ ๐ฆ๐๐ข ๐ ๐ข๐๐ ๐ฆ๐๐ข ๐ค๐๐๐ก ๐ก๐ ๐๐๐๐ ๐๐๐๐๐๐๐ ๐ค๐๐กโ ๐๐๐ ๐ ๐กโ๐๐ %1 ๐๐๐ ๐ ๐๐๐๐ ?\n๐
๐๐๐๐ก ๐ก๐ ๐กโ๐๐ ๐๐๐ ๐ ๐๐๐ ๐ก๐ ๐๐๐๐๐๐๐ ๐ซ",
kickByBlock: "โ
| ๐๐ข๐๐๐ ๐๐ข๐๐ฆ ๐๐๐๐๐ฃ๐๐ %1 ๐๐๐๐๐ก๐๐ฃ๐๐ก๐๐ ๐๐๐๐๐ข๐๐ก๐ ",
kickByMsg: "โ
| ๐๐ข๐๐๐๐ ๐ ๐๐ข๐๐ฆ ๐๐๐๐๐๐ %1 ๐๐๐๐๐๐๐ ๐ค๐๐กโ ๐๐๐ ๐กโ๐๐ %2 ๐๐๐ ๐๐๐๐ ",
kickError: "โ | ๐น๐๐๐๐๐ ๐ก๐ ๐๐๐๐ %1 ๐๐๐๐๐๐๐ ๐ ๐๐๐ฆ ๐๐๐ ๐ฅ\n%2",
noBlock: "โ
| ๐โ๐๐๐ ๐๐๐ ๐๐ ๐๐๐๐๐ก๐๐ฃ๐๐ก๐๐ ๐๐๐๐๐ข๐๐ก๐ ๐๐ ๐กโ๐๐ ๐๐๐๐ข๐",
noMsg: "โ
| ๐๐ ๐๐๐ โ๐๐ ๐๐๐ ๐ ๐กโ๐๐ %1 ๐๐๐ ๐๐๐๐ ๐๐ ๐กโ๐๐ ๐๐๐๐ข๐"
}
},
onStart: async function ({ api, args, threadsData, message, event, commandName, getLang }) {
const threadData = await threadsData.get(event.threadID);
if (!threadData.adminIDs.includes(api.getCurrentUserID()))
return message.reply(getLang("needAdmin"));
if (!isNaN(args[0])) {
message.reply(getLang("confirm", args[0]), (err, info) => {
global.GoatBot.onReaction.set(info.messageID, {
author: event.senderID,
messageID: info.messageID,
minimum: Number(args[0]),
commandName
});
});
}
else if (args[0] == "die") {
const threadInfo = await api.getThreadInfo(event.threadID);
const membersBlocked = threadInfo.userInfo.filter(user => user.type!== "User");
const errors = [];
const success = [];
for (const user of membersBlocked) {
if (user.type!== "User" &&!threadInfo.adminIDs.some(id => id == user.id)) {
try {
await api.removeUserFromGroup(user.id, event.threadID);
success.push(user.id);
} catch (e) {
errors.push(user.name);
}
await sleep(700);
}
}
let msg = "";
if (success.length > 0) msg += `${getLang("kickByBlock", success.length)}\n`;
if (errors.length > 0) msg += `${getLang("kickError", errors.length, errors.join("\n"))}\n`;
if (msg == "") msg += getLang("noBlock");
message.reply(msg);
}
else message.SyntaxError();
},
onReaction: async function ({ api, Reaction, event, threadsData, message, getLang }) {
const { minimum = 1, author } = Reaction;
if (event.userID!= author) return;
const threadData = await threadsData.get(event.threadID);
const botID = api.getCurrentUserID();
const membersCountLess = threadData.members.filter(member =>
member.count < minimum &&
member.inGroup == true &&
member.userID!= botID &&
!threadData.adminIDs.some(id => id == member.userID)
);
const errors = [];
const success = [];
for (const member of membersCountLess) {
try {
await api.removeUserFromGroup(member.userID, event.threadID);
success.push(member.userID);
} catch (e) {
errors.push(member.name);
}
await sleep(700);
}
let msg = "";
if (success.length > 0) msg += `${getLang("kickByMsg", success.length, minimum)}\n`;
if (errors.length > 0) msg += `${getLang("kickError", errors.length, errors.join("\n"))}\n`;
if (msg == "") msg += getLang("noMsg", minimum);
message.reply(msg);
}
};