← back to browse
goat command

whitelist

Toggle, add, remove whiteListIds role

0
views
0
likes
0
installs

Aliases: wl

raw source
const { config } = global.GoatBot;
const { writeFileSync } = require("fs-extra");

module.exports = {
  config: {
    name: "whitelist",
    aliases: ["wl"],
    version: "1.6",
    author: "𓆩𝑅𝑜𝒷𝒾𝓃𓆪 𝒜𝓁𝒾",
    countDown: 5,
    role: 2,
    shortDescription: {
      vi: "Bật/tắt, thêm, xóa quyền whiteListIds",
      en: "Toggle, add, remove whiteListIds role"
    },
    longDescription: {
      vi: "Bật/tắt, thêm, xóa quyền whiteListIds",
      en: "Toggle, add, remove whiteListIds role"
    },
    category: "owner",
    guide: {
      vi: "{pn} on/off: Bật hoặc tắt chế độ whitelist\n{pn} [add|-a] <uid|@tag>: Thêm quyền\n{pn} [remove|-r] <uid|@tag>: Xóa quyền\n{pn} [list|-l]: Xem danh sách",
      en: "{pn} on/off: Toggle whitelist mode\n{pn} [add|-a] <uid|@tag>: Add role\n{pn} [remove|-r] <uid|@tag>: Remove role\n{pn} [list|-l]: List all"
    },
  },

  langs: {
    vi: {
      toggledOn: "✅ | Đã bật chế độ whitelist.",
      toggledOff: "❌ | Đã tắt chế độ whitelist.",
      currentStatus: "🔄 | Trạng thái hiện tại: %1",
      added: "✅ | Đã thêm quyền whiteListIds cho %1 người dùng:\n%2",
      alreadyAdmin: "\n⚠ | %1 người dùng đã có quyền:\n%2",
      missingIdAdd: "⚠ | Vui lòng nhập ID hoặc tag người dùng để thêm quyền",
      removed: "✅ | Đã xóa quyền của %1 người dùng:\n%2",
      notAdmin: "⚠ | %1 người dùng không có quyền:\n%2",
      missingIdRemove: "⚠ | Vui lòng nhập ID hoặc tag người dùng để xóa quyền",
      listAdmin: "👑 | Danh sách whiteListIds:\n%1",
    },
    en: {
      toggledOn: "✅ | Whitelist mode has been turned ON.",
      toggledOff: "❌ | Whitelist mode has been turned OFF.",
      currentStatus: "🔄 | Current whitelist status: %1",
      added: "✅ | Added role for %1 users:\n%2",
      alreadyAdmin: "\n⚠ | %1 users already have role:\n%2",
      missingIdAdd: "⚠ | Please enter ID or tag to add role",
      removed: "✅ | Removed role of %1 users:\n%2",
      notAdmin: "⚠ | %1 users don't have role:\n%2",
      missingIdRemove: "⚠ | Please enter ID or tag to remove role",
      listAdmin: "👑 | List of whiteListIds:\n%1",
    },
    bn: {
      toggledOn: "✅ | হোয়াইটলিস্ট মোড চালু করা হয়েছে।",
      toggledOff: "❌ | হোয়াইটলিস্ট মোড বন্ধ করা হয়েছে।",
      currentStatus: "🔄 | বর্তমান স্ট্যাটাস: %1",
      added: "✅ | %1 জন ইউজারকে whiteListIds পারমিশন দেওয়া হয়েছে:\n%2",
      alreadyAdmin: "\n⚠ | %1 জন ইউজারের আগে থেকেই পারমিশন আছে:\n%2",
      missingIdAdd: "⚠ | পারমিশন দেওয়ার জন্য ID অথবা ট্যাগ দিন",
      removed: "✅ | %1 জন ইউজারের পারমিশন সরানো হয়েছে:\n%2",
      notAdmin: "⚠ | %1 জন ইউজারের পারমিশন নেই:\n%2",
      missingIdRemove: "⚠ | পারমিশন সরানোর জন্য ID অথবা ট্যাগ দিন",
      listAdmin: "👑 | whiteListIds লিস্ট:\n%1",
    },
    tl: {
      toggledOn: "✅ | Na-on na ang whitelist mode.",
      toggledOff: "❌ | Na-off na ang whitelist mode.",
      currentStatus: "🔄 | Kasalukuyang status: %1",
      added: "✅ | Nabigyan ng whiteListIds role ang %1 user(s):\n%2",
      alreadyAdmin: "\n⚠ | May role na ang %1 user(s):\n%2",
      missingIdAdd: "⚠ | Pakilagay ang ID o i-tag ang user para magdagdag ng role",
      removed: "✅ | Naalis ang role ng %1 user(s):\n%2",
      notAdmin: "⚠ | Walang role ang %1 user(s):\n%2",
      missingIdRemove: "⚠ | Pakilagay ang ID o i-tag ang user para tanggalin ang role",
      listAdmin: "👑 | Listahan ng whiteListIds:\n%1",
    },
    hi: {
      toggledOn: "✅ | Whitelist mode ON kar diya gaya hai.",
      toggledOff: "❌ | Whitelist mode OFF kar diya gaya hai.",
      currentStatus: "🔄 | Current status: %1",
      added: "✅ | %1 user(s) ko whiteListIds role de diya gaya:\n%2",
      alreadyAdmin: "\n⚠ | %1 user(s) ke paas pehle se role hai:\n%2",
      missingIdAdd: "⚠ | Role add karne ke liye ID ya tag dein",
      removed: "✅ | %1 user(s) ka role hata diya gaya:\n%2",
      notAdmin: "⚠ | %1 user(s) ke paas role nahi hai:\n%2",
      missingIdRemove: "⚠ | Role remove karne ke liye ID ya tag dein",
      listAdmin: "👑 | whiteListIds ki list:\n%1",
    },
    ar: {
      toggledOn: "✅ | تم تفعيل وضع القائمة البيضاء.",
      toggledOff: "❌ | تم إيقاف وضع القائمة البيضاء.",
      currentStatus: "🔄 | الحالة الحالية: %1",
      added: "✅ | تم منح صلاحية whiteListIds لعدد %1 مستخدم:\n%2",
      alreadyAdmin: "\n⚠ | يمتلك %1 مستخدم الصلاحية بالفعل:\n%2",
      missingIdAdd: "⚠ | يرجى إدخال المعرف أو الإشارة إلى المستخدم لإضافة الصلاحية",
      removed: "✅ | تمت إزالة صلاحية %1 مستخدم:\n%2",
      notAdmin: "⚠ | لا يمتلك %1 مستخدم الصلاحية:\n%2",
      missingIdRemove: "⚠ | يرجى إدخال المعرف أو الإشارة إلى المستخدم لإزالة الصلاحية",
      listAdmin: "👑 | قائمة whiteListIds:\n%1",
    },
  },

  onStart: async function ({ message, args, usersData, event, getLang, api }) {
    switch (args[0]) {
      case "on": {
        config.whiteListMode.status = true;
        writeFileSync(global.client.dirConfig, JSON.stringify(config, null, 2));
        return message.reply(getLang("toggledOn"));
      }

      case "off": {
        config.whiteListMode.status = false;
        writeFileSync(global.client.dirConfig, JSON.stringify(config, null, 2));
        return message.reply(getLang("toggledOff"));
      }

      case "add": case "-a": case "+": {
        if (!args[1]) return message.reply(getLang("missingIdAdd"));
        let uids = Object.keys(event.mentions).length ? Object.keys(event.mentions) : event.messageReply ? [event.messageReply.senderID] : args.filter(arg => !isNaN(arg));
        const notAdminIds = [], authorIds = [];
        for (const uid of uids) (config.whiteListMode.whiteListIds.includes(uid) ? authorIds : notAdminIds).push(uid);
        config.whiteListMode.whiteListIds.push(...notAdminIds);
        const getNames = await Promise.all(uids.map(uid => usersData.getName(uid).then(name => ({ uid, name }))));
        writeFileSync(global.client.dirConfig, JSON.stringify(config, null, 2));
        return message.reply(
          (notAdminIds.length ? getLang("added", notAdminIds.length, getNames.map(({ uid, name }) => `• ${name} (${uid})`).join("\n")) : "") +
          (authorIds.length ? getLang("alreadyAdmin", authorIds.length, authorIds.map(uid => `• ${uid}`).join("\n")) : "")
        );
      }

      case "remove": case "-r": case "-": {
        if (!args[1]) return message.reply(getLang("missingIdRemove"));
        let uids = Object.keys(event.mentions).length ? Object.keys(event.mentions) : args.filter(arg => !isNaN(arg));
        const notAdminIds = [], authorIds = [];
        for (const uid of uids) (config.whiteListMode.whiteListIds.includes(uid) ? authorIds : notAdminIds).push(uid);
        for (const uid of authorIds) config.whiteListMode.whiteListIds.splice(config.whiteListMode.whiteListIds.indexOf(uid), 1);
        const getNames = await Promise.all(authorIds.map(uid => usersData.getName(uid).then(name => ({ uid, name }))));
        writeFileSync(global.client.dirConfig, JSON.stringify(config, null, 2));
        return message.reply(
          (authorIds.length ? getLang("removed", authorIds.length, getNames.map(({ uid, name }) => `• ${name} (${uid})`).join("\n")) : "") +
          (notAdminIds.length ? getLang("notAdmin", notAdminIds.length, notAdminIds.map(uid => `• ${uid}`).join("\n")) : "")
        );
      }

      case "list": case "-l": {
        const getNames = await Promise.all(config.whiteListMode.whiteListIds.map(uid => usersData.getName(uid).then(name => ({ uid, name }))));
        return message.reply(getLang("listAdmin", getNames.map(({ uid, name }) => `• ${name} (${uid})`).join("\n")));
      }

      default: {
        const status = config.whiteListMode.status ? "ON ✅" : "OFF ❌";
        return message.reply(getLang("currentStatus", status));
      }
    }
  }
};

View raw file