Sam Vorst Ответов: 1

Discord.js если пользователь имеет определенную роль он может выполнить команду


Всем привет,

У меня есть проблема, я хочу разрешить выполнять команду только в том случае, если пользователь имеет определенную роль, но это дает мне ошибку, неожиданную { по этому правилу:
if (message.member.roles.has(allowedRole.id) {

Может ли кто-нибудь помочь мне с моей проблемой?
<pre>let allowedRole = message.guild.roles.find("name", "rolename");
    if (message.member.roles.has(allowedRole.id) {
      client.on('message', message => {

        if (!message.guild) return;
        if (message.content.startsWith(prefix + 'kick')) {
          const user = message.mentions.users.first();
          if (user) {
            const member = message.guild.member(user);
            if (member) {
              member
                .kick(' ')
                .then(() => {

                  message.reply(`Successfully kicked ${user.tag}`);
                })
                .catch(err => {
                  message.reply('I was unable to kick the member');
                  console.error(err);
                });
            } else {
              message.reply("That user isn't in this guild!");
            }
          } else {
            message.reply("You didn't mention the user to kick!");
          }
        }
      });
    } else {
      	console.log("You don't have the permission to kick users!")
    })


редактировать:

Я думаю, что это в этом правиле:
if (message.member.roles.has(allowedRole.id) { 

С первой круглой скобкой это говорит о том, что она не заканчивается, но она есть...

редактировать:

client.on('message', message => {
  if (!message.guild) return;

  if (message.content.startsWith('!kick')) {
    const user = message.mentions.users.first();
    if (user) {
      const member = message.guild.member(user);
      if (member) {
        member
          .kick('Optional reason that will display in the audit logs')
          .then(() => {
            message.reply(`Successfully kicked ${user.tag}`);
          })
          .catch(err => {
            message.reply('I was unable to kick the member');
            console.error(err);
          });
      } else {
        message.reply("That user isn't in this guild!");
      }
    } else {
      message.reply("You didn't mention the user to kick!");
    }
  }
});


Где-то здесь должно прийти это сообщение об ошибке с тем, что у вас нет разрешения, но я не знаю, где именно..

Спасибо,
Сэм

Что я уже пробовал:

Я попытался поискать в интернете, но решение, которое предоставляется, не работает для меня. Потому что я делаю что-то не так, но не могу понять, что именно!

Peter_in_2780

Для начала подсчитайте скобки (или используйте редактор, который им соответствует).
Внимательно посмотрите на линию, которая вызывает ошибку.

Sam Vorst

Я установил один из них в atom, который окрашивает скобки, и я думаю, что нахожу проблему в круглом кронштейне. Только я не знаю, как ее решить. Я отмечу проблему, которая является догадкой в исходном вопросе.

1 Ответов

Рейтинг:
4

OriginalGriff

Посмотрите на свой код:

if (message.member.roles.has(allowedRole.id) {
   ^
   |
    -- where is the matching close bracket?
Попробуй:
if (message.member.roles.has(allowedRole.id)) {
                                            ^
                                            |
                              Add this -----


Sam Vorst

Это сработало, но теперь у меня есть еще одна проблема, я не могу дать сообщение об ошибке пользователю, который не имеет никаких разрешений. Потому что я не знаю, куда его поместить. Я меняю код в главном вопросе, чтобы вы могли посмотреть.

OriginalGriff

Другой вопрос требует другого вопроса: ответившие вопросы получают меньше просмотров (и, следовательно, ответов), чем новые.