簡體   English   中英

Discord.js member.user 返回由 <> 包圍的成員 ID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM