[英]Discord.js member.user returns the member's ID surrounded by <>
我正在尝试为 discord 机器人创建一个命令,其中列出了输入角色的所有成员,我目前正在将成员映射到一个变量,如下所示:
let roleMembs = message.guild.roles.cache.get(roleId).members.map(m=>m.user)
它在大多数情况下都有效,但一些成员输出为 <@320600141855981588> 而不是他们的名字,我不确定这是为什么,我不确定是否可以解决,任何帮助将不胜感激,我会留下下面代码的rest
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.