← back to browse
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);
 }
};

View raw file