← back to browse
goat command

out

Bot leaves group

0
views
0
likes
0
installs
raw source
module.exports = {
  config: {
    name: "out",
    version: "2.0.1",
    author: "𝐂𝐘𝐁𝐄𝐑 ☢️_𖣘 -𝐁𝐎𝐓 ⚠️ 𝑻𝑬𝑨𝑴_ ☢️",
    countDown: 5,
    role: 0,
    shortDescription: "Bot leaves group",
    longDescription: "Bot leaves current group or selected group from list (Only Group Admin & Bot Admin)",
    category: "Admin",
    guide: {
      en: "{pn}\n{pn} help\n{pn} gc list"
    }
  },

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

    // ===== Permission Check =====
    const ADMINS = global.GoatBot?.config?.adminBot || [];
    const isBotAdmin = ADMINS.includes(senderID);

    let isGroupAdmin = false;
    try {
      const threadInfo = await api.getThreadInfo(threadID);
      isGroupAdmin = threadInfo.adminIDs?.some(item => item.id == senderID);
    } catch (e) {}

    // অ্যাডমিন না হলে সম্পূর্ণ ইগনোর (কোনো মেসেজ না)
    if (!isBotAdmin && !isGroupAdmin) return;

    const command = (args[0] || "").toLowerCase();
    const subCommand = (args[1] || "").toLowerCase();

    // ===== HELP =====
    if (command === "help") {
      return api.sendMessage(
`╔═══════『 𝗢𝗨𝗧 𝗛𝗘𝗟𝗣 』═══════╗
┃
┃ ➤ .out
┃    → বর্তমান গ্রুপ থেকে বট লিভ নেবে
┃
┃ ➤ .out gc list
┃    → সব গ্রুপের লিস্ট দেখাবে
┃    → নাম্বার দিলে সেই গ্রুপ থেকে লিভ
┃
┃ ➤ .out help
┃    → এই হেল্প মেসেজ দেখাবে
┃
┃ 🔒 শুধু গ্রুপ অ্যাডমিন ও বট অ্যাডমিন
┃
╚══════════════════════════╝`,
        threadID,
        messageID
      );
    }

    // ===== GC LIST =====
    if (command === "gc" && subCommand === "list") {
      try {
        const allThreads = await api.getThreadList(100, null, ["INBOX"]);
        const groups = allThreads.filter(t => t.isGroup && t.threadID);

        if (groups.length === 0) {
          return api.sendMessage("❌ কোনো গ্রুপ পাওয়া যায়নি।", threadID, messageID);
        }

        let msg = `📋 𝗧𝗼𝘁𝗮𝗹 𝗚𝗿𝗼𝘂𝗽𝘀: ${groups.length}\n\n`;
        groups.forEach((g, i) => {
          msg += `${i + 1}. ${g.name || "Unnamed Group"}\n   🆔 ${g.threadID}\n\n`;
        });

        msg += `👉 কোন গ্রুপ থেকে লিভ নিতে চাও?\nনাম্বার লিখে রিপ্লাই দাও (যেমন: 1)`;

        return api.sendMessage(msg, threadID, (err, info) => {
          if (err) return;

          global.GoatBot.onReply.set(info.messageID, {
            commandName: this.config.name,
            author: senderID,
            messageID: info.messageID,
            type: "chooseGroup",
            groups: groups.map(g => ({
              id: g.threadID,
              name: g.name || "Unnamed Group"
            }))
          });
        }, messageID);
      } catch (err) {
        console.error(err);
        return api.sendMessage("❌ গ্রুপ লিস্ট আনতে সমস্যা হয়েছে।", threadID, messageID);
      }
    }

    // ===== শুধু .out → বর্তমান গ্রুপ থেকে লিভ =====
    if (!command) {
      return api.removeUserFromGroup(api.getCurrentUserID(), threadID, (err) => {
        if (err) {
          return api.sendMessage("❌ এই গ্রুপ থেকে লিভ নেওয়া যায়নি।", threadID, messageID);
        }
      });
    }

    // ভুল কমান্ড হলে
    return api.sendMessage(
      "❌ ভুল কমান্ড!\nসঠিক ব্যবহার দেখতে লিখো: .out help",
      threadID,
      messageID
    );
  },

  onReply: async function ({ api, event, Reply, message }) {
    const { threadID, messageID, senderID, body } = event;

    // শুধু যিনি লিস্ট চেয়েছেন তিনিই রিপ্লাই দিতে পারবে
    if (senderID !== Reply.author) return;

    if (Reply.type !== "chooseGroup") return;

    const choice = parseInt(body.trim());
    if (isNaN(choice) || choice < 1 || choice > Reply.groups.length) {
      return api.sendMessage(
        `❌ ভুল নাম্বার!\n১ থেকে ${Reply.groups.length} এর মধ্যে একটি নাম্বার দাও।`,
        threadID,
        messageID
      );
    }

    const selected = Reply.groups[choice - 1];

    api.removeUserFromGroup(api.getCurrentUserID(), selected.id, (err) => {
      if (err) {
        return api.sendMessage(
          `❌ "${selected.name}" গ্রুপ থেকে লিভ নেওয়া যায়নি।`,
          threadID,
          messageID
        );
      }
      return api.sendMessage(
        `✅ সফলভাবে লিভ নেওয়া হয়েছে!\n📌 গ্রুপ: ${selected.name}\n🆔 ${selected.id}`,
        threadID,
        messageID
      );
    });
  }
};

View raw file