是否有一种方法可以将角色添加到在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')

由于某些原因,它不能工作。

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')

GuildMemberUser之间存在差异。

成员:

  • 表示不和的公会成员
  • 属性:guild,joinedAt,user..
  • 您可以通过<GuildMember>.user
  • 从GuildMember访问User用户:

  • 表示不和谐用户
  • 属性:id,username,createdAt

你得到User从提到并试图添加角色到User而不是GuildMember

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

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

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

最新更新