Функциональная команда удаления, у которой возникла проблема, пожалуйста, прочтите текст перед кодом. Спасибо - PullRequest
0 голосов
/ 28 мая 2020

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

case 'delete':
        if (!args[1]) return message.reply('Please enter a number of messages you would like to delete like ``k!delete 5``. LIMIT: 100 MESSAGES');
        message.channel.bulkDelete(args[1]);
        if (!message.member.hasPermission('MANAGE_MESSAGES'))
          return message.channel.send('You dont have the permission `MANAGE_MESSAGES` to use this command!!');
        break;

1 Ответ

0 голосов
/ 28 мая 2020

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

Причина, по которой вы не видите сообщение об ошибке, вероятно, связана с Условие гонки: конечная точка массового удаления обрабатывается фоновым исполнителем и, вероятно, занимает больше времени, чем ваш message.channel.send. Таким образом, сообщение - это , которое отправляется, но сразу же удаляется из bulkDelete, что происходит вскоре после этого.

Чтобы исправить, просто переместите строку bulkDelete после проверки разрешений.

...