← back to browse
goat command

pending

Manage bot

0
views
0
likes
0
installs
raw source
"use strict";

module.exports = {
 config: {
 name: "pending",
 version: "1.0.0",
 author: "๐Œ๐š๐ซ๐ฎ๐…",
 aliases: [],
 role: 2,
 shortDescription: "Manage bot's pending groups",
 longDescription: "Approve or cancel groups waiting for bot approval",
 category: "owner",
 countDown: 10
 },

 languages: {
 en: {
 invaildNumber: "โŒ %1 is not a valid number",
 cancelSuccess: "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n โŒ CANCELLED\nโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n\n๐Ÿ—‘๏ธ %1 thread(s) cancelled successfully.",
 approveSuccess: "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n โœ… APPROVED\nโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n\n๐ŸŽ‰ %1 thread(s) approved successfully.",
 cantGetPendingList: "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n โš ๏ธ ERROR\nโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n\nUnable to fetch the pending group list.",
 returnListClean: "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n ๐Ÿ“ญ EMPTY\nโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n\nNo pending groups found."
 }
 },

 _getText(key, ...args) {
 const text = this.languages.en[key] || key;

 return args.length
 ? text.replace("%1", args[0]).replace("%2", args[1] || "")
 : text;
 },

 onStart: async function ({ api, event }) {
 const { threadID, messageID, senderID } = event;

 let pendingList = [];

 try {
 const other = await api.getThreadList(100, null, ["OTHER"]);
 const pending = await api.getThreadList(100, null, ["PENDING"]);

 pendingList = [...other, ...pending].filter(
 g => g.isGroup && g.isSubscribed
 );
 } catch {
 return api.sendMessage(
 this._getText("cantGetPendingList"),
 threadID,
 messageID
 );
 }

 if (!pendingList.length) {
 return api.sendMessage(
 this._getText("returnListClean"),
 threadID,
 messageID
 );
 }

 const prefix = global.GoatBot?.config?.prefix || "!";

 let msg = "";

 pendingList.forEach((g, i) => {
 msg +=
 `โ•ญโ”€ใ€” ${i + 1} ใ€•\n` +
 `โ”‚ ๐Ÿ‘ฅ ${g.name}\n` +
 `โ”‚ ๐Ÿ†” ${g.threadID}\n` +
 `โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n\n`;
 });

 const finalMsg =
`โ•ญโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•ฎ
 ๐Ÿ“‹ PENDING GROUPS
โ•ฐโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•ฏ

๐Ÿ“Š Total Pending: ${pendingList.length}
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

${msg}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

๐Ÿ› ๏ธ ACTIONS

โœ… Approve:
${prefix}pending 1 2 3

โŒ Cancel:
${prefix}pending c 1 2 3

๐Ÿ’ก Reply to this message with your choice.
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”`;

 return api.sendMessage(
 finalMsg,
 threadID,
 (err, info) => {
 global.GoatBot.onReply.set(info.messageID, {
 commandName: this.config.name,
 author: senderID,
 pending: pendingList
 });
 },
 messageID
 );
 },

 onReply: async function ({ event, Reply, api }) {
 const { author, pending } = Reply;

 if (String(event.senderID) !== String(author)) return;

 const input = event.body.trim().toLowerCase().split(/\s+/);
 const botID = api.getCurrentUserID();
 const prefix = global.GoatBot?.config?.prefix || "!";
 let count = 0;

 if (input[0] === "c" || input[0] === "cancel") {
 for (let i = 1; i < input.length; i++) {
 const idx = parseInt(input[i]);

 if (isNaN(idx) || idx <= 0 || idx > pending.length) {
 return api.sendMessage(
 this._getText("invaildNumber", input[i]),
 event.threadID
 );
 }

 await api.removeUserFromGroup(
 botID,
 pending[idx - 1].threadID
 );

 count++;
 }

 return api.sendMessage(
 this._getText("cancelSuccess", count),
 event.threadID
 );
 }

 for (const v of input) {
 const idx = parseInt(v);

 if (isNaN(idx) || idx <= 0 || idx > pending.length) {
 return api.sendMessage(
 this._getText("invaildNumber", v),
 event.threadID
 );
 }

 const tID = pending[idx - 1].threadID;

 await api.sendMessage(
`โ•ญโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•ฎ
 ๐ŸŽ‰ BOT ACTIVATED
โ•ฐโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•ฏ

๐Ÿ‘‹ Hello everyone!

๐Ÿค– I have been approved and
 I'm now active in this group.

โ•ญโ”€ใ€” โš™๏ธ BOT INFO ใ€•
โ”‚
โ”‚ ๐Ÿ”ฐ Prefix : ${prefix}
โ”‚ ๐Ÿ“œ Help : ${prefix}help
โ”‚ ๐Ÿš€ Status : ONLINE
โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿ’ซ Thanks for adding me!
๐Ÿค– I'm ready to assist you.

โ•ญโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•ฎ
 ๐Œ๐š๐‘๐ฎ๐…'๐ฌ ๐๐จ๐“ ๐Ÿ’ซ๐Ÿชฝ
โ•ฐโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•ฏ`,
 tID
 );

 const nickNameBot = global.GoatBot?.config?.nickNameBot;

 if (nickNameBot) {
 await api.changeNickname(
 nickNameBot,
 tID,
 botID
 );
 }

 count++;
 }

 return api.sendMessage(
 this._getText("approveSuccess", count),
 event.threadID
 );
 }
};

View raw file