javascript—在不指定id的情况下通过React获取角色,以便可以在多个服务器上使用该命令

hsgswve4  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(271)

到目前为止,这是我的代码。但是,这只适用于一台服务器。我希望它能在几个服务器上工作。我希望id通过必须具有特定名称的角色,但不幸的是,我只知道如何通过id添加/删除角色

bot.on('message', async message => {
    let parts = message.content.split(" ");

    if(parts[0].toLocaleLowerCase() == '!rules') {

        if(!message.member.hasPermission('ADMINISTRATOR')) return message.channel.send('Du brauchst die Berechtigung um ein Regelwerk zu schreiben')
        if(!parts[1]) return message.channel.send('Du musst mindestens eine Regel angeben')

        var text = message.content.split(" ").slice(1).join(" ");
        message.delete();

        const sayembed = new Discord.MessageEmbed()
        .setColor('800000')
        .setThumbnail(`${message.guild.iconURL()}`)
        .setTitle('Regeln')
        .setDescription(text, true)
        .setFooter('Erstellt von ' + message.author.tag)
        .setTimestamp();

        let sendEmbed = await message.channel.send(sayembed)
        sendEmbed.react('✅')
        sendEmbed.react('❌')
    }
})

bot.on('messageReactionAdd', async(reaction, user, channel) => {

    if(reaction.message.partial) await reaction.message.fetch();
    if(reaction.partial) await reaction.fetch();

    if(user.bot) return;
    if(!reaction.message.guild) return;

    if(reaction.message.channel.id === '859525260835291157') {
        if(reaction.emoji.name === '✅') {
                reaction.message.guild.members.cache.get(user.id).roles.add('854784657857970176')
            }
    }
})
wmvff8tz

wmvff8tz1#

如果您知道该角色的名称,则需要首先找到该角色。 guild.roles.cache 返回集合,以便可以使用 find() 方法。 find() 搜索给定函数返回真实值的单个项(即 role.name 就是你想要的那个)。

if (reaction.message.channel.id === '859525260835291157') {
  if (reaction.emoji.name === '✅') {
    let role = reaction.message.guild.roles.cache.find(role => role.name === 'Name of the role you are looking for')
    reaction.message.guild.members.cache
      .get(user.id)
      .roles.add(role);
  }
}

相关问题