删除消息命令,仅对Owner、Admin和Moderator有效



我正在为我的服务器编码Discord bot。我想为我的机器人添加一个命令,该命令将清除文本通道,并且只允许具有所有者,管理员,主持人角色的人。

在代码中,它是有if(!message.member.roles.cache.some(r => r.name === "**Owner**"),我有这个角色,但我不能删除消息。但是当我给我3个角色(所有者,管理员和版主)时,我可以使用它。

所以我需要修复:3个角色中的1个仍然可以使用它。

代码如下:

case 'clear': 
if(!args[1]) 
return message.reply('Please specify the number of messages to clear `e.g. !clear 10`')
.then(message => message.delete({timeout: 3500}));
if(!message.member.roles.cache.some(r => r.name === "Owner") || 
!message.member.roles.cache.some(r => r.name === "Admin") || 
!message.member.roles.cache.some(r => r.name === "Moderator")) 
return message.reply('You do not have permissions to clear!')
.then(message => message.delete({timeout: 3500}));
message.channel.bulkDelete(args[1]);
break;

您需要让它检查用户是否有三个角色中的一个。由于您在if语句之间给出了||而不是&&,因此它将检查用户是否没有三个角色中的一个或多个角色。如果用户没有一个或多个,它将输出message.reply.

如果输入&&,它将检查用户是否没有这三个角色。

p。S:在你提供的代码中有一些括号错误和引号错误。

更新:"**Owner**"已更改为"Owner"

下面是更新后的代码:

case 'clear': 
if(!args[1]) return message.reply('Please specify the number of messages to clear `e.g. !clear 10`')
.then(message => message.delete({timeout: 3500}));
if(!message.member.roles.cache.some(r => r.name === "Owner") && (!message.member.roles.cache.some(r => r.name === "Admin")) && (!message.member.roles.cache.some(r => r.name === "Moderator")) 
{
return message.reply('You do not have permissions to clear!')
.then(message => message.delete({timeout: 3500}));
}
message.channel.bulkDelete(args[1]);
break;

最新更新