解禁所有人命令

时间:2021-01-01 05:52:26

标签: javascript discord discord.js

我制作了这个代码来解除所有人的禁令。但它不起作用。这有什么问题?我是初学者。

let discord = require("discord.js")
let client = new discord.Client()

client.on('message', message => {
  const member = message.member;
  switch (message.content.toLowerCase()) {
    case (PREFIX + "-unban all"):
      if (member.hasPermission('MANAGE_SERVER')) {
        async function ubAll() {
          const users = await message.guild.fetchBans()
          for (const user of users.array()) {
            await message.guild.unban(user)
          }
        }
        let embed = new discord.MessageEmbed()
          .setTitle("Done!")
          .setDescription("Successfully Unbanned everyone.")
          .setColor("Green")
          .setThumbnail("https://riyazapp.com/wp-content/uploads/2020/04/checkmark.gif")

      }
      if (!member.hasPermission('MANAGE_SERVER')) {
        message.reply("You do not have enough permissions for this command!")
      }
  }
})

client.login("not showing")

   

1 个答案:

答案 0 :(得分:0)

let discord = require("discord.js");
let client = new discord.Client();

client.on('message', message => {
  const member = message.member;
  switch (message.content.toLowerCase()) {
    case ("-unban all"):
      if (member.hasPermission('MANAGE_SERVER')) {
        async function ubAll() {
            let users = await message.guild.fetchBans();
            let userArr = users.array();
            let unbanUsers = [];
            for(var i = 0; i < userArr.length; i++) {
                unbanUsers.push(userArr[i].user.id);
            }
            for(var j = 0; j < unbanUsers.length; j++) {
                message.guild.members.unban(unbanUsers[j]);
            }
        }
        ubAll();
        let embed = new discord.MessageEmbed()
          .setTitle("Done!")
          .setDescription("Successfully Unbanned everyone.")
          .setColor("Green")
          .setThumbnail("https://riyazapp.com/wp-content/uploads/2020/04/checkmark.gif")
        message.channel.send(embed);

      }
      else {
        message.reply("You do not have enough permissions for this command!")
      }
      break;
  }
})

client.login("not showing")

您好,您的代码中有很多错误。您在未定义的情况下使用了 PREFIX。我猜你的前缀是 -,因为我在你的 switch-case 的第一个案例中看到了它。无论如何,我还修复了您的 ubAll 函数。现在看起来有点复杂,但别担心,它并不难理解。因为我是经典 for 循环的粉丝,所以我在新函数中使用了它们。

那么它的作用是什么?
users 中存储了来自被禁止用户的所有信息。在 userArr 中,我们只是将我们从 users 获得的所有信息存储在一个数组中。然后我创建了一个空数组 unbanUsers 来存储我们想要取消禁止的所有用户(在我们的例子中是每个人)。然后在第一个 for 循环中,我们遍历 users 数组中的所有值并将用户 ID 推送到我们的 unbanUsers 数组中(因为我们需要用户的 ID 来解除对他的禁止)。现在,我们在第一个 for 循环中找到的每个用户的 ID 都存储在 unbanUsers 中。在第二个 for 循环中,我们遍历 unbanUsers 数组并取消禁止每个用户。

然后你必须调用函数,因为如果你不这样做,它根本无法工作。您还忘记了您的案例中的 break;。对于 switch-case 中的每个 case,你都需要一个 break;,否则它会一直搜索直到他找到第一个 break;,如果没有,它会创建一个无限循环。然后,您必须将您创建的嵌入内容发送到频道中。