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