Смена никнейма у ищущих внимания в раздоре. js - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь создать команду в Discord. js бот, при использовании которого d! Noattention member он получает всех пользователей на сервере, у которых есть специальные символы в начале их имени пользователя или ник и меняет свой ник на член Мой код:

const options = [
           "!",
           "?",
           '/',
           '\'',
           '~',
           '#',
           '@',
           '+',
           '=',
           '(',
           '*',
           '&',
           '^',
           '%',
           '$',
           '[',
           '`',
           '1',
           '2',
           '3',
           '4',
           '5',
           '6',
           '7',
           '8',
           '9',
           '_',
           '-',
           '.',
           '¿'
];

module.exports = {
  name: "noattention",
  aliases: ["attentionnick", "anick"],
  description: "Change nickname of all the attentions seekers to something you want.",
  category: "moderation",
  usage: "<new nickname>",
  run: async(client, message, args) => {
    if(!message.member.hasPermission(["MANAGE_NICKNAMES"])) return message.reply("You do not have permission to use this command.").then(m => m.delete(15000));
    const name = args.join(" ");
    if(!name) return message.reply("Also provide the new nickname you want for attention seekers.").then(m => m.delete(15000));
    for (i = 0; i < options.length; i++) {
    const user = message.guild.members.filter(m => m.displayName.startsWith(options[i]));
    user.forEach(u => u.setNickname(name));
    }
    message.channel.send(`Successfully changed nicknames of all attention seeking members`);
  }
}

Он работает хорошо, но я также хочу, чтобы он отправил мне и сообщил, сколько никнеймов пользователей было изменено. Когда я пытаюсь поместить код message.channel.send под for (i = 0; i < options.length; i++), чтобы он мог получить значение user, бот начинает спамить сообщение и не называет количество пользователей. user.length здесь не работает.

1 Ответ

1 голос
/ 07 мая 2020

Вы должны поместить некоторый var за пределами for l oop и добавить к нему user.length из for l oop. Тогда у var будет окончательный номер. Когда вы будете отправлять сообщения непосредственно из l oop, это будет спам, потому что нет операции суммирования, поэтому он будет записывать каждое значение из l oop в канал. Когда вы поместите строку за пределы l oop, пользовательская переменная будет undefined, потому что вы определяете пользователя внутри l oop.

...