有没有办法向在 discord.js 中的消息中提到的人添加角色?

时间:2021-03-03 05:46:26

标签: javascript discord.js

这是我当前的代码

let person = message.mentions.users.first()
if (person === null) {
 message.channel.send('Please mention someone')
 return
}
let role = message.guild.roles.cache.some(role => role.name === "Muted")
person.roles.add(role)
message.channel.send(`${person.username} has been muted`)
person.send('You has been muted in DoGame')

由于某种原因它不起作用。

2 个答案:

答案 0 :(得分:1)

person 返回第一个提到的用户的 User 对象。您不能向用户添加角色,而只能向 GuildMember 添加角色 - 这可以使用 message.mentions.members.first() 完成。

最终代码

const person = message.mentions.members.first()
if (person === null) {
 message.channel.send('Please mention someone')
 return
}
const role = message.guild.roles.cache.some(role => role.name === "Muted")
person.roles.add(role)
message.channel.send(`${person.user.username} has been muted`)
person.send('You has been muted in DoGame')

答案 1 :(得分:0)

GuildMemberUser 之间有区别。

GuildMember :

  • 代表 Discord 上的公会成员
  • 属性:guildjoinedAtuser.. 特定于公会。
  • 您可以通过 <GuildMember>.user
  • 从 GuildMember 访问用户

User :

  • 代表 Discord 上的用户
  • 属性:idusernamecreatedAt...不是公会特定的。

并且您从提及中获得 User 并尝试将角色添加到 User 而不是 GuildMember

const person = message.mentions.members.first();

这^^^会给你GuildMember,如果你想访问用户 - person.user

示例:用户名 你可以像person.user.username一样。