我正在尝试使用 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`)
}
有人可以帮我吗(我在控制台中没有收到任何错误)?
答案 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);