提问者:小点点

有问题的功能删除命令,请阅读代码前的文字。谢谢


我正在制作一个不和谐的机器人与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个答案

匿名用户

该命令不能完美工作。由于代码行是按顺序执行的,因此目前您甚至在查看成员是否有权这样做之前就执行了bulkDelete

您没有看到错误消息的原因可能是由于某种竞争条件:批量删除endpoint由后台工作人员处理,处理时间可能比您的message.channel. send更长。因此,消息正在发送,但不久后立即从bulkDelete中删除。

要修复,只需在权限检查后移动您的bulkDelete行。