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