【问题标题】:How can I add a role to a user on DiscordJS v13?如何在 DiscordJS v13 上向用户添加角色?
【发布时间】:2021-12-21 19:20:24
【问题描述】:

我在使用 DiscordJS v13 向用户添加角色时遇到问题。有什么办法吗?每当我添加它们时,它们都没有定义。这是我要添加添加角色的代码。我是 discord.js 的初学者,所以请耐心等待。谢谢!

    } else if (commandName === 'verification'){
        let code1 = 'A96B2UUH'
        const code = options.getString('code')

        if(code === code1){
            interaction.reply({
                content: 'The code has been accepted. Welcome to the hub!',
                ephemeral: true,
            })
            let role = message.guild.roles.cache.some(role => role.name === 'Equitability')
            message.member.roles.add(role)
        }else{
            interaction.reply({
                content: 'You entered the wrong code. Please contact the administrators to gain access.',
                ephemeral: true,
            })
        }
    }
})

编辑:我修好了!我改变了一些东西,不知何故它起作用了。这是代码。

bot.on('interactionCreate', async interaction => {
    if(!interaction.isCommand()) return

    const { options } = interaction

    if(interaction.commandName === 'verification'){
        let code1 = 'A96B2UUH'
        const code = options.getString('code')

        if(code === code1){
            await interaction.reply({
                content: 'You entered the correct code. Welcome to the hub!',
                ephemeral: true,
            })
            var guild = bot.guilds.cache.get('907259574342537236')
            const member = await guild.members.fetch(interaction.user.id)
            const role = await guild.roles.fetch('907261775622328352')
            member.roles.add(role)
        }else{
            await interaction.reply({
                content: 'The code you entered is incorrect. Contact the administrators to gain access the server.',
                ephemeral: true,
            })
        }
    }
})

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    在 Discord.js v13 中获取角色需要缓存它们,因此添加已知角色的最佳方法就是通过 ID。

    要获取角色的 ID,请打开“服务器设置”>“角色”>“右键单击”>“复制 ID”

    那么你可以简单地做 message.member.roles.add("roleId");

    如果您不能完全确定某个角色是否存在(即通过用户输入),您可以获取所有服务器角色(不同于.cache.get),然后是用户.filter,但这似乎不是您的'这样做我不会包含它

    【讨论】:

      【解决方案2】:

      您正在使用.some(),它返回Boolean (true/false)。您需要角色对象,因此您使用.find(),它采用相同的参数,但返回角色对象。另外,如果角色没有被缓存,可以使用RoleManager.fetch()从API中获取

      await message.guild.roles.fetch() //optional - put it if the role is valid, but is not cached
      let role = message.guild.roles.cache.find(role => role.name === 'Equitability')
      message.member.roles.add(role)
      

      【讨论】:

      • 感谢您提供的信息,但我已经修复了! :)
      • 如果这有帮助,您可以考虑投票/接受
      猜你喜欢
      • 2022-01-18
      • 2021-03-01
      • 2022-10-01
      • 1970-01-01
      • 2016-04-17
      • 2021-06-11
      • 1970-01-01
      • 2018-09-03
      • 2018-09-10
      相关资源
      最近更新 更多