首页 > 解决方案 > Discord.js v12+ TypeError:member.roles.map 不是函数

问题描述

所以我用它来显示离开服务器以获取日志的用户的所有角色,我相信 map 不再是一个函数,但我很好奇.name也可以作为 map 函数的相似之处?

bot.on('guildMemberRemove', member => {
    if(!member.lastMessage) member.lastMessage = "N/A"
    const channel = member.guild.channels.cache.find(channel => channel.id === botconfig["channel_setup"].general_logs_channel);
                let leaveLog = new Discord.MessageEmbed()
                    .setTitle("Red Cross Roleplay | Action Log")
                    .setColor(botconfig["bot_setup"].main_embed_color)
                    .setDescription(`**Action:** Member Left`)
                    .addField('Member Left', `<@${member.user.id}> - Hash: ${member.user.tag} - ID: ${member.user.id}`)
                    .addField('Member Roles', member.roles.name(r => `${r}`).join(' '))
                    .setTimestamp()
                    .setFooter(botconfig["bot_setup"].copyright);
                    channel.send(leaveLog)
    });

这还能用吗?

.addField('Member Roles', member.roles.name(r => `${r}`).join(' '))

标签: discord.jstypeerror

解决方案


您似乎正在尝试过时的代码。在 discord.js 文档中,您可以看到GuildMember.roles是GuildMemberRoleManager的一个实例。您将不得不使用返回 Collection的cache.map()属性,然后您可以在其上使用该函数。

以下是如何实现它

member.roles.cache.map(r => `${r}`)

推荐阅读