添加角色命令 Discord,js

时间:2021-06-20 09:43:36

标签: javascript node.js discord discord.js

我正在尝试使用 Discord.js 创建一个“添加角色”命令。这是我的代码,但机器人没有添加角色。

if (message.content === config.prefix + 'addrole') {
    const targetUser = message.mentions.users.first()
    if (!targetUser) {
      message.reply('Please specify someone to give a role to.')
      return
    }
    const { guild } = message
    const role = guild.roles.cache.find((role) => {
      return role.name === roleName
    })

    if (!role) {
      message.reply(`There is no role with the name "${roleName}"`)
      return
    }

    const member = guild.members.cache.get(targetUser.id)
    member.roles.add(role)

    message.reply(`That user now has the "${roleName}" role`)
}

有人可以帮我吗(我在控制台中没有收到任何错误)?

2 个答案:

答案 0 :(得分:1)

member_addrole 已经返回一个成员对象,因此您可以改为这样做

if (message.content == config.prefix + 'addrole') {
    let member_addrole = message.mentions.users.first();
    let remind_role = message.guild.roles.cache.find(mR => mR.name === "Remind ME");
    if (!member_addrole) return message.reply('no member provided');

    member_addrole.roles.add(remind_role);
}

答案 1 :(得分:0)

没有看到完整的代码,没有定义成员,我假设你的意思是 member_addrole。

但是,您也应该使用消息中的公会。

看看最后一行,这不是您添加角色的方式,请查看我在下面放置的示例。

您还应该添加检查以确保提及用户并找到该角色,以免使您的机器人崩溃。

最后,您应该在某种调试器中运行它,以便您可以查看代码在何处遇到异常。

let member_addrole = message.mentions.users.first();
let remind_role = message.guild.roles.cache.find(mR => mR.name === "Remind ME");
await message.guild.members.cache.get(member_addrole.id).roles.add(remind_role);