← back to browse
goat command

join

Paginated active group list & add yourself

0
views
0
likes
0
installs

Aliases: boxlist, allbox

raw source
module.exports = {
  config: {
    name: "join",
    aliases: ["boxlist", "allbox"],
    version: "1.5.0",
    author: "MOHAMMAD AKASH",
    role: 2,
    shortDescription: "Paginated active group list & add yourself",
    category: "system",
    countDown: 10
  },

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

    try {
      // সর্বোচ্চ 50 থ্রেড ফেচ করা
      const allThreads = await api.getThreadList(50, null, ["INBOX"]);

      // শুধু ACTIVE গ্রুপ
      const groups = allThreads.filter(t => t.isGroup && t.isSubscribed);
      if (!groups.length) 
        return api.sendMessage("⚠️ Bot is not currently in any group.", threadID, messageID);

      const page = 1;
      const start = (page - 1) * perPage;
      const end = start + perPage;
      const currentGroups = groups.slice(start, end);

      let msg = `📦 | 𝙱𝙾𝚇 𝙻𝙸𝚂𝚃 (𝙿𝙰𝙶𝙴 ${page})\n\n`;
      currentGroups.forEach((g, i) => {
        msg += `${start + i + 1}. ${g.name || "Unnamed Group"}\n`;
        msg += `🆔 ${g.threadID}\n\n`;
      });

      msg += "↩️ Rᴇᴘʟʏ Wɪᴛʜ: ᴀᴅᴅ 1 | ᴀᴅᴅ 2 5\n➡️ Oʀ ᴘᴀɢᴇ 2 ... Tᴏ sᴇᴇ Mᴏʀᴇ Gʀᴏᴜᴘs";

      api.sendMessage(msg.trim(), threadID, (err, info) => {
        global.GoatBot.onReply.set(info.messageID, {
          commandName: this.config.name,
          author: senderID,
          groups,
          page,
          perPage
        });
      }, messageID);

    } catch (e) {
      console.error(e);
      api.sendMessage("❌ Failed to fetch active group list.", threadID, messageID);
    }
  },

  onReply: async function ({ api, event, Reply }) {
    if (event.senderID !== Reply.author) return;

    const args = event.body.trim().toLowerCase().split(/\s+/);
    const perPage = Reply.perPage || 10;

    // PAGE কমান্ড
    if (args[0] === "page") {
      const pageNum = parseInt(args[1]);
      if (isNaN(pageNum) || pageNum < 1) return api.sendMessage("❌ Invalid page number", event.threadID);

      const start = (pageNum - 1) * perPage;
      const end = start + perPage;
      const currentGroups = Reply.groups.slice(start, end);

      if (!currentGroups.length) return api.sendMessage("⚠️ No more groups", event.threadID);

      let msg = `📦 | 𝙱𝙾𝚇 𝙻𝙸𝚂𝚃 (𝙿𝙰𝙶𝙴 ${pageNum})\n\n`;
      currentGroups.forEach((g, i) => {
        msg += `${start + i + 1}. ${g.name || "Unnamed Group"}\n`;
        msg += `🆔 ${g.threadID}\n\n`;
      });
      msg += `↩️ Rᴇᴘʟʏ Wɪᴛʜ: Aᴅᴅ 1 | Aᴅᴅ 2 5\n➡️ Oʀ Pᴀɢᴇ ${pageNum + 1} ... to see more groups`;

      api.sendMessage(msg.trim(), event.threadID, (err, info) => {
        global.GoatBot.onReply.set(info.messageID, {
          commandName: Reply.commandName,
          author: Reply.author,
          groups: Reply.groups,
          page: pageNum,
          perPage
        });
      });
      return;
    }

    // ADD কমান্ড
    if (args[0] === "add") {
      const addUserToGroup = async (uid, tid, name) => {
        try {
          await api.addUserToGroup(uid, tid);
          await api.sendMessage(`✅ Aᴅᴅᴇᴅ Yᴏᴜ Tᴏ: ${name}`, event.threadID);
        } catch {
          await api.sendMessage(`❌ Fᴀɪʟᴅ Tᴏ Aᴅᴅ Yᴏᴜ ᴛᴏ: ${name}`, event.threadID);
        }
      };

      for (let i = 1; i < args.length; i++) {
        const index = parseInt(args[i]) - 1;
        if (isNaN(index) || index < 0 || index >= Reply.groups.length) {
          await api.sendMessage(`❌ Iɴᴠᴀʟɪᴅ Nᴜᴍʙᴇʀ: ${args[i]}`, event.threadID);
          continue;
        }
        const g = Reply.groups[index];
        await addUserToGroup(event.senderID, g.threadID, g.name || "Unnamed Group");
      }
    }
  }
};

View raw file