Я сделал этот код для удаления всех. Но он не работает. Что здесь не так? Я новичок.

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("Готово!")
          .setDescription("Успешно разбанены все.")
          .setColor("Зеленый")
          .setThumbnail("https://riyazapp.com/wp-content/uploads/2020/04/checkmark.gif")

      }
      if (!member.hasPermission('MANAGE_SERVER')) {
        message.reply("У вас недостаточно прав для этой команды!")
      }
  }
})

client.login("не отображается")

   

Ответы (1)

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("Готово!")
          .setDescription("Успешно разбанены все.")
          .setColor("Зеленый")
          .setThumbnail("https://riyazapp.com/wp-content/uploads/2020/04/checkmark.gif")
        message.channel.send(embed);

      }
      else {
        message.reply("У вас недостаточно прав для этой команды!")
      }
      break;
  }
})

client.login("не отображается")

Здравствуйте, в вашем коде было много ошибок. Вы использовали PREFIX, не определив его. Я догадался, что ваш префикс - это -, так как увидел его в первом случае вашего switch-case. В любом случае, я также исправил вашу функцию ubAll. Теперь она выглядит немного сложнее, но не волнуйтесь, понять ее не так уж сложно. Поскольку я являюсь поклонником классических for-петлей, я использовал их в новой функции.

Так что же это за функция?
В users хранится вся информация о забаненных пользователях. В userArr мы просто храним всю информацию, полученную из users в массиве. Затем я создал пустой массив unbanUsers, в котором будут храниться все пользователи, которых мы хотим разбанить (в нашем случае все). Затем в первом цикле for мы перебираем все значения в массиве users и заносим ID пользователей в массив unbanUsers (потому что нам нужен ID пользователя, чтобы разбанить его). Теперь ID каждого пользователя, найденного в первом цикле for, хранятся в массиве unbanUsers. Во втором цикле for мы перебираем массив unbanUsers и удаляем каждого пользователя.

Тогда вы должны вызвать функцию, потому что если вы этого не сделаете, она просто не будет работать. Вы также забыли break; в вашем случае. Для каждого случая в switch-case нужен break;, потому что иначе он будет искать, пока не найдет первый break;, а если его не будет, то создаст бесконечный цикл. И в конце вам нужно отправить созданный вами embed в канал.

2022 WebDevInsider