【问题标题】:Cannot find role from command无法从命令中找到角色
【发布时间】:2019-01-11 08:36:40
【问题描述】:

我在我的 discord 服务器中有一些角色。有些只是为了颜色。我想让我的成员使用命令.cargo <color>自己选择角色

我有密码

if (command === 'cargo') {
    const colors = message.guild.roles.filter(role => role.name.startsWith('#'));
    if (colors.size < 1) return message.channel.send('Não há cargos nesse servidor');

    const str = args.join(' ');
    const role = colors.find(role => role.name.slice('#'.length).toLowerCase() === str.toLowerCase);

    if(!role) return message.channel.send('Esse cargo não existe!');

    try {
        await message.member.removeRoles(colors);
        await message.member.addRole(role);
        message.channel.send(`Agora você tem o cargo ${role}!`);
    }
    catch (e) {
        message.channel.send(`Falhei :( ${e.message}`);
    }
}

但每次我输入.cargo 时都会显示错误,例如角色不存在if(!role) return message.channel.send('Esse cargo não existe!');

我注意到的错误:

.cargo 不显示服务器角色并返回角色不存在的消息

.cargo blue返回角色不存在的消息

【问题讨论】:

  • 您是否尝试过记录变量以查看它们是否包含您认为的内容?另外,'#'.length 的意义何在?那只是1
  • 在第 5 行,你写了role.name.slice('#'.length).toLowerCase() === str.toLowerCase,没有括号。这是您帖子中的错字还是您的代码?如果那是你的代码,它找不到角色,因为String.toLowerCase 是一个函数,尝试调用它,看看它是否有效
  • @FedericoGrandi 这不是错字;-;所以它起作用了
  • 即使机器人拥有权限,我也缺少权限
  • 我添加了一个答案,以便您接受并关闭问题。对于其他错误,如果您在该错误中没有找到任何内容,请打开一个新问题,因为它与此错误无关。

标签: javascript bots discord discord.js


【解决方案1】:

[来自 cmets 的解决方案]
在第 5 行,你写了role.name.slice('#'.length).toLowerCase() === str.toLowerCase,没有括号。如果那是您的代码,它找不到角色,因为String.toLowerCase 是一个函数,请尝试调用它,看看是否有效。

【讨论】:

    猜你喜欢
    • 2022-06-11
    • 2023-03-25
    • 2016-01-15
    • 2020-09-03
    • 2021-07-17
    • 2019-05-16
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    相关资源
    最近更新 更多