简体   繁体   English

v13 中的成员角色?

[英]Member roles in v13?

I had a userinfo command in v12, but i made a fully new bot in v13 and i don't know if i can use the same code again.我在 v12 中有一个 userinfo 命令,但我在 v13 中创建了一个全新的机器人,我不知道我是否可以再次使用相同的代码。 I tried using this:我试过用这个:

let mem = message.mentions.members.first() || message.member

const filteredRoles = mem.roles.cache.filter(role => role.id != message.guild.id)
const listedRoles = filteredRoles.sort((a, b) => b.position - a.position).map(role => role.toString())

//...code...

.addField('Roles:', listedRoles)

Error:错误:

C:\Users\-----\-----\-----\node_modules\discord.js\src\util\Util.js:413
    if (typeof data !== 'string') throw new error(errorMessage);
                                        ^

RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings.

The MessageEmbed.addField() method accepts a string as its second parameter (the field's value). MessageEmbed.addField()方法接受一个字符串作为它的第二个参数(字段的值)。 Your listedRoles is an array, you can use Array.join() to convert it into a string.您的listedRoles是一个数组,您可以使用Array.join()将其转换为字符串。

.addField("Roles: ", listedRoles.join(","))

Example working code:示例工作代码:

client.on("messageCreate", async (message) => {

    if (message.author.id == client.user.id) return;

    if (message.content.startsWith("!roles")) {
        const member = message.mentions.members.first() || message.member;
    
        const filteredRoles = member.roles.cache.filter(role => role.id != message.guild.id);
        const listedRoles = filteredRoles.sort((a, b) => b.position - a.position).map(role => role.toString());
    
        const embed = new Discord.MessageEmbed()
            .setTitle(member.user.username)
            .addField("Roles", listedRoles.join(","));
    
        message.channel.send({embeds: [embed]});
    }

});

在此处输入图像描述

Tested using discord.js ^13.1.0 .使用 discord.js ^13.1.0进行测试。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM