不和谐.js member.user返回被<>包围的成员ID。



我正在尝试为一个列出输入角色的所有成员的不和谐机器人创建一个命令,我目前正在将成员映射到一个变量,如下所示:

let roleMembs = message.guild.roles.cache.get(roleId).members.map(m=>m.user)

它在大多数情况下都有效,但一些成员输出为 <@320600141855981588> 而不是他们的名字,我不确定为什么会这样,我不确定有什么解决方法,任何帮助将不胜感激,我将把其余的代码留在下面

const Discord = require('discord.js')
module.exports.run = async (client, message, args) => {
if (!message.member.roles.cache.find(r => r.name === "-------------- SERVER STAFF --------------")) return message.reply("You must be part of the moderation team to use this command!")
let roleReq = message.content.split(" ").slice(1)
let role = message.guild.roles.cache.find(r => r.name === roleReq.join(" "))
if(typeof role === "undefined") return message.channel.send("You have input an invalid role! Please try again!")

let roleId = role.id
let roleMembs = message.guild.roles.cache.get(roleId).members.map(m=>m.user)
let roleList = ""
if(roleMembs.length > 25) {
let embed = new Discord.MessageEmbed()
for(let i = 0; i < 25; i++){
roleList = roleList.concat(`${roleMembs[i]}n`)
}
let roleList2 = ""
let roleList3 = ""
let x = 0
let y = 0
while(x < 25){
roleList2 = roleList2.concat(`${roleMembs[x+25]}n`)
x++
if (typeof roleMembs[x+25] === "undefined"){
break;
}
}
if(roleMembs.length > 50){
while(y < 25){
roleList3 = roleList3.concat(`${roleMembs[y+50]}n`)
y++
if (typeof roleMembs[y+50] === "undefined"){
break;
}
}
}
embed.setAuthor(client.user.username, client.user.displayAvatarURL())
embed.setTimestamp()
embed.setTitle(`${roleMembs.length} Members with the ${roleReq.join(" ")} role:`)
embed.setColor("#add8e6")
embed.addField("‏‏‎ ‎", roleList, true)
embed.addField("‏‏‎ ‎", roleList2, true)
if(roleList3.length > 0) {
embed.addField("‏‏‎ ‎", roleList3, true)
}
message.channel.send(embed)
} else {
roleMembs.forEach(member => {
roleList = roleList.concat(`${member}n`)  
})
let embed = new Discord.MessageEmbed()
embed.setAuthor(client.user.username, client.user.displayAvatarURL())
embed.setTimestamp()
embed.setTitle(`${roleMembs.length} Members with the ${roleReq.join(" ")} role:`)
embed.setColor("#add8e6")
embed.addField(" ", roleList)
message.channel.send(embed)
}
}

><@ID>是代表用户提及的Discord markdown。在常规消息中,它们将显示为您提及用户时看到的可点击的蓝色链接。有时在嵌入中它们会破裂。

如果需要他们的名字,请通过映射到他们的名字来指定。现在,您正在创建一个仅包含用户对象的数组,并期望它吐出它们的名称。

let roleMembs = message.guild.roles.cache.get(roleId).members.map(m=>m.user.username)

最新更新