【问题标题】:Delete message command, its work only for Owner, Admin and Moderator删除消息命令,仅适用于所有者、管理员和版主
【发布时间】:2021-04-27 18:12:03
【问题描述】:

我正在为我的服务器编写 Discord 机器人。我想为我的机器人添加一个命令,该命令将清除一个文本通道,并且只允许具有 Owner、Admin、Moderator 角色的人。

在代码中,它有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;

【问题讨论】:

    标签: discord discord.js bots


    【解决方案1】:

    您需要检查用户是否都没有三个角色。 由于您在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;
    

    【讨论】:

    • 谢谢!有用。我已经修复了一些关于括号错误和引用错误的错误。但是当我输入 !clear 10 时,它显示你没有权限清除!并消失几秒钟并删除 10 条最新消息。那么如何不显示“您没有权限清除!” ?
    • 也许在 if 语句中检查您的角色名称是否相同。检查您的 Owner 角色是否确实有 **Owner**
    • 我不小心添加了"**Owner**" 而不是"Owner",请再次检查。如果您的问题得到解决,请支持我的回答
    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2019-03-05
    • 2018-12-11
    • 2018-11-13
    • 2018-08-29
    • 2020-02-18
    • 2020-11-26
    相关资源
    最近更新 更多