【问题标题】:Discord.js problem searching in the roles of a userDiscord.js 在用户角色中搜索的问题
【发布时间】:2020-09-05 02:59:03
【问题描述】:

我正在尝试创建一个命令,在这种情况下它被 / 攻击激活,我正在寻找的机制是,如果目标用户(提到的)具有作为一种盾牌的角色(Lavander),发送一条嵌入消息说防御并从你身上删除角色(打破盾牌),如果目标用户(提到)没有盾牌角色,只需发送一条不同的消息说被攻击。这是我一直在做的代码,但即使它没有给出错误,它也对我不起作用,只是在使用它时,它会忽略角色检测并出于某种我不知道的原因发送两条消息,有人可以帮忙我?

    if (message.content.startsWith('/attack')) {

  let Lavander = message.guild.roles.cache.find(role => role.name == "Lavander");
  let member = message.mentions.members.first();

  if (message.member.roles.cache.has(Lavander)) return
  member.roles.remove(Lavander);
  message.channel.send(new Discord.MessageEmbed()
    .setColor("GOLD")
    .setTitle(message.author.username)
    .setDescription("Defended"))

  message.channel.send(new Discord.MessageEmbed()
    .setColor("GOLD")
    .setTitle(message.author.username)
    .setDescription("Attacked"))
}

【问题讨论】:

  • 您遇到了什么故障?你为什么要发送一个被攻击和一个被防御的嵌入?
  • 请详细说明。什么故障?你有什么错误吗?
  • 我想要的是它在提到的那个没有角色时发送被攻击的嵌入,而当它有角色时发送被防御的嵌入

标签: discord.js


【解决方案1】:

对我来说,let Lavander = message.guild.roles.cache.find(role => role.name == "Lavander"); 似乎应该是 let Lavander = message.guild.roles.cache.find(role => role.name === 'Lavander');,但如果没有关于故障和/或错误的信息,我无法告诉你其他任何事情。

【讨论】:

  • 在这种情况下,严格比较是没有区别的。
  • 角色名使用“”和“”符号有什么区别吗?
  • 没有。见this question
【解决方案2】:

方法 collection.has 需要 id 作为属性。所以你需要这样的想法:

bot.on('message', (message) => {
    if (message.content.startsWith('/attack')) {
        let lavander = message.guild.roles.cache.find((role) => role.name === 'Lavander');
        let member = message.mentions.members.first();
        if (!member || !lavander) return message.reply('No role or member');
        if (message.member.roles.cache.has(lavander.id)) {
            member.roles.remove(lavander);
            let embed = new Discord.MessageEmbed()
                .setColor('GOLD')
                .setTitle(message.author.username)
                .setDescription('Defended');
        } else {
            let embed = new Discord.MessageEmbed()
                .setColor('GOLD')
                .setTitle(message.author.username)
                .setDescription('Attacked');
            message.channel.send(embed);
        }
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 2020-10-12
    • 2021-01-07
    • 2021-06-21
    • 2021-07-14
    • 2021-11-23
    • 2022-01-18
    • 2018-09-25
    相关资源
    最近更新 更多