← 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.9",
    author: "EryXenX",
    aliases: [],
    role: 2,
    shortDescription: "Manage bot's waiting groups",
    longDescription: "Approve or cancel pending groups",
    category: "owner",
    countDown: 10
  },

  languages: {
    en: {
      invaildNumber: "%1 is not a valid number",
      cancelSuccess: "❌ Cancelled %1 thread(s)",
      approveSuccess: "✅ Approved %1 thread(s)",
      cantGetPendingList: "⚠️ Can't get pending list",
      returnListClean: "No pending group found"
    },
    bn: {
      invaildNumber: "%1 সঠিক নাম্বার নয়",
      cancelSuccess: "❌ %1 টি থ্রেড বাতিল করা হয়েছে",
      approveSuccess: "✅ %1 টি থ্রেড অনুমোদন করা হয়েছে",
      cantGetPendingList: "⚠️ পেন্ডিং লিস্ট আনা যাচ্ছে না",
      returnListClean: "কোনো পেন্ডিং গ্রুপ পাওয়া যায়নি"
    },
    hi: {
      invaildNumber: "%1 एक मान्य नंबर नहीं है",
      cancelSuccess: "❌ %1 थ्रेड रद्द किए गए",
      approveSuccess: "✅ %1 थ्रेड स्वीकृत किए गए",
      cantGetPendingList: "⚠️ पेंडिंग लिस्ट प्राप्त नहीं हो सकी",
      returnListClean: "कोई पेंडिंग ग्रुप नहीं मिला"
    },
    tl: {
      invaildNumber: "%1 ay hindi wastong numero",
      cancelSuccess: "❌ %1 thread(s) ang kinansela",
      approveSuccess: "✅ %1 thread(s) ang na-approve",
      cantGetPendingList: "⚠️ Hindi makuha ang pending list",
      returnListClean: "Walang nahanap na pending group"
    },
    ar: {
      invaildNumber: "%1 ليس رقمًا صالحًا",
      cancelSuccess: "❌ تم إلغاء %1 محادثة",
      approveSuccess: "✅ تمت الموافقة على %1 محادثة",
      cantGetPendingList: "⚠️ لا يمكن الحصول على قائمة الانتظار",
      returnListClean: "لم يتم العثور على أي مجموعة معلقة"
    }
  },

  _getText(key, ...args) {
    const lang = global.GoatBot?.config?.language || "en";
    const text = (this.languages[lang] && this.languages[lang][key]) || 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}️⃣ ${g.name}\n🆔 ${g.threadID}\n\n`;
    });

    const finalMsg =
`📋 Pending Groups (${pendingList.length})
━━━━━━━━━━━━━━━━━━━

${msg}━━━━━━━━━━━━━━━━━━━
✅ Approve » ${prefix}pending 1 2
❌ Cancel  » ${prefix}pending c 1 2`;

    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(
`🎉 GROUP APPROVED 

👋 Hello everyone!
🤖 I am now active in this group.

⚙️ Prefix: ${prefix}
📜 Type ${prefix}help to see all commands

🚀 Bot is 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