Javascript 如何使我的机器人不';“t发送”;角色赋予”;当它没有';你不给这个角色吗?

Javascript 如何使我的机器人不';“t发送”;角色赋予”;当它没有';你不给这个角色吗?,javascript,discord.js,Javascript,Discord.js,所以我做了这个命令叫q!giverole当它将角色赋予使用它的人时,当角色被赋予时,机器人会说“角色赋予”,但当有人已经拥有角色并使用它时,我希望它发送类似“你已经拥有该角色”的内容,而不是发送“你已经拥有该角色”,它会发送“角色赋予”,那么我如何使它只发送角色赋予当某人已经拥有该角色时,“您已经拥有该角色”?这是代码: if(message.content.startsWith("q!giverole")) var role = message.guild.roles.ca

所以我做了这个命令叫
q!giverole
当它将角色赋予使用它的人时,当角色被赋予时,机器人会说“角色赋予”,但当有人已经拥有角色并使用它时,我希望它发送类似“你已经拥有该角色”的内容,而不是发送“你已经拥有该角色”,它会发送“角色赋予”,那么我如何使它只发送角色赋予当某人已经拥有该角色时,“您已经拥有该角色”?这是代码:

if(message.content.startsWith("q!giverole"))
var role = message.guild.roles.cache.find(role => role.name === "example");
        message.member.roles.add(role);
           message.channel.send("Role given!")
        
        if(role == true)
        message.channel.send("you already have that role")
    }  
    
我还尝试:

 if(message.guild.roles.cache.find(role => role.name === "example"))

但是在这种情况下,bot只发送“role given”和“you have have that role”。我对
discord.js
javascript
非常陌生,所以我希望您能帮助我role是角色名称第一次出现的索引,因此将返回一个索引(我认为是一个数字)。您可以检查角色是否未定义,作为检查角色是否存在的一种方法

至于只发送一个,我会使用if-else语句:

if(message.content.startsWith("q!giverole")) {
    var role = message.guild.roles.cache.find(role => role.name === "example");
    if (message.member.roles.find(role => role.name === "example") !== undefined) {
        message.channel.send("You already have that role")
    } else if (role !== undefined) {
        message.member.roles.add(role);
        message.channel.send("Role given!")
    } else {
        message.channel.send("Role doesn't exist)
    }
}
    

此外,在检查布尔值是否为真时,不需要使用
==true

if (bool) {
    //runs if bool is true
} else if (!bool) {
    //runs if bool is false
}

在发送消息“role given!”后,将role boolean更改为true。

以下是一些将角色赋予用户的代码:

client.on('message',msg=>{
if(msg.content.startsWith(`commandname`')){
const role=msg.guild.roles.cache.get(“`id`”)
//^或者您可以使用find方法^
如果(!msg.member.roles.has(role)){
msg.member.roles.add(role.catch)(err=>{return console.log('发生错误:'+err}));
msg.channel.send(`Role${Role.name}已添加`)
}else if(msg.member.roles.has(role)){
返回msg.channel.send('您已经拥有该角色!');
}
}
})

很抱歉,如果出现错误,我没有时间测试它。

您只需使用
.member.roles.cache.has()


试试这个
如果(角色===true)
?正如我说的,我对js/discord,js非常陌生,那么,我该怎么做呢?@tom利润烧烤我得到了bud:D
if(message.content.startsWith("q!giverole")) {
    const role = message.guild.roles.cache.find(role => role.name === "example");
    if (!role) return message.channel.send('role doesnt exist :(');
    if (message.member.roles.cache.has(role.id) return message.channel.send("You already have that role :)");
    message.member.roles.add(role);
    message.channel.send("Role given yeee")
}