首页 > 解决方案 > Unban everyone command

问题描述

I have made this code for unbanning everyone. But it is not working. What is wrong in this? I am a beginner.

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")

   

标签: javascriptdiscorddiscord.js

解决方案


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 循环的粉丝,所以我在新函数中使用了它们。

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

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


推荐阅读