簡體   English   中英

v13 中的成員角色?

[英]Member roles in v13?

我在 v12 中有一個 userinfo 命令,但我在 v13 中創建了一個全新的機器人,我不知道我是否可以再次使用相同的代碼。 我試過用這個:

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)

錯誤:

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.

MessageEmbed.addField()方法接受一個字符串作為它的第二個參數(字段的值)。 您的listedRoles是一個數組,您可以使用Array.join()將其轉換為字符串。

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

示例工作代碼:

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]});
    }

});

在此處輸入圖像描述

使用 discord.js ^13.1.0進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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