Javascript 如何列出在Discord.Js中具有角色的所有成员
如何使用Javascript 如何列出在Discord.Js中具有角色的所有成员,javascript,discord.js,Javascript,Discord.js,如何使用Discord.js列出角色中的成员 我的代码: client.on("message", message => { var guild = message.guild; let args = message.content.split(" ").slice(1); if (!message.content.startsWith(prefix)) return; if (message.author.bot) return; if(mess
Discord.js
列出角色中的成员
我的代码:
client.on("message", message => {
var guild = message.guild;
let args = message.content.split(" ").slice(1);
if (!message.content.startsWith(prefix)) return;
if (message.author.bot) return;
if(message.content.startsWith(prefix + 'go4-add')) {
guild.member(message.mentions.users.first()).addRole('415665311828803584');
}
});
我将如何列出在嵌入中具有go4
角色的所有成员。当消息.go4 list
输入到频道中时,我希望bot用嵌入的消息进行响应
if(message.content.startsWith("//inrole")){
let roleName = message.content.split(" ").slice(1).join(" ");
//Filtering the guild members only keeping those with the role
//Then mapping the filtered array to their usernames
let membersWithRole = message.guild.members.filter(member => {
return member.roles.find("name", roleName);
}).map(member => {
return member.user.username;
})
let embed = new discord.RichEmbed({
"title": `Users with the ${roleName} role`,
"description": membersWithRole.join("\n"),
"color": 0xFFFF
});
return message.channel.send({embed});
}
关于discord的示例使用:
但请注意,如果有许多成员担任该角色,则可能会出现错误,告诉您已超过可放入嵌入中的字符数。在这种情况下,您可以决定发送多个嵌入来拆分用户。返回一个s。只需映射此集合即可获得所需的属性
根据您的场景,这里有一个示例:
message.guild.roles.get('415665311828803584').members.map(m=>m.user.tag);
这将从具有“go4”角色的成员输出一组用户标记。现在您可以。将(…)
此数组加入到所需格式
另外,guild.member(message.indications.users.first()).addRole('415665311828803584')
可以缩短为:message.notices.members.first().addRole('415665311828803584')代码>
下面是一个粗略的例子,说明结果如何:
client.on("message", message => {
if(message.content.startsWith(`${prefix}go4-add`)) {
message.mentions.members.first().addRole('415665311828803584'); // gets the <GuildMember> from a mention and then adds the role to that member
}
if(message.content == `${prefix}go4-list`) {
const ListEmbed = new Discord.RichEmbed()
.setTitle('Users with the go4 role:')
.setDescription(message.guild.roles.get('415665311828803584').members.map(m=>m.user.tag).join('\n'));
message.channel.send(ListEmbed);
}
});
client.on(“message”,message=>{
if(message.content.startsWith(`${prefix}go4 add`){
message.indications.members.first().addRole('415665311828803584');//从提及中获取角色,然后将角色添加到该成员
}
if(message.content==`${prefix}go4 list`){
const ListEmbed=new Discord.RichEmbed()
.setTitle('具有go4角色的用户:')
.setDescription(message.guild.roles.get('415665311828803584').members.map(m=>m.user.tag).join('\n'));
message.channel.send(ListEmbed);
}
});
正如@Wright在他的回答中提到的,如果成员过多,则会抛出错误,因为嵌入最多只能容纳2048个字符,因此您可能希望在发送嵌入之前进行一些检查,然后通过将其拆分为多个嵌入消息来处理过大的嵌入,或者使用基于反应的页面。自从Discord v12以来,您现在必须使用roles.add()
而不是addRole()
我尝试了Newbie的解决方案,但没有成功
message.guild.roles.get('415665311828803584').members.map(m=>m.user.tag)
给了我一个错误。get不是一个函数,可能是discord.js改变了什么
在角色之后添加缓存使其工作
message.guild.roles.cache.find(r=>r.name==args[0])
要提到嵌入中的用户(这看起来比文本好得多),请删除.tag
,这样就可以了
(m => m.user).join('\n')
1) 您是在询问一个基本的Discord.js示例,还是对如何使用嵌入有疑问?2) 为什么你所有的代码都被注释掉了?3) 您正在尝试创建一个命令.go4 add
?4) 你想给邮件中提到的第一个用户添加一个角色?这家伙太聪明了,非常感谢^<代码>常数discord=require(“discord.js”);const embed=new discord.RichEmbed()
你在说什么@新手