SensuのBOTを作ってる際の見つけたやつです
- メンションの役職(role)をすべて取得
- メッセージのサーバー(guild)に所属するユーザーのうち 1で手に入れた役職に所属する人を取得
args,args_o当たりはいい感じに作り直せるので頑張ってみて(この書き方は結構汚いので) また、重複チェック等してないです
| /* | |
| requireとか .on('ready')とか | |
| */ | |
| client.on('message', message => { | |
| if (message.author.id == client.user.id) | |
| return; | |
| var args = message.content.slice(configFile.Discord.prefix.length).trim().split(/ +/g); | |
| let args_o = JSON.parse(JSON.stringify(args)); //JSの仕様上こうなる | |
| var command = args.shift().toLocaleLowerCase(); | |
| console.log(args_o); | |
| if(command !== "lrain") { | |
| //normal | |
| }else { | |
| //lrain | |
| //console.log(message.mentions.roles); | |
| let roles = []; | |
| message.mentions.roles.forEach(role => { | |
| roles.push(role.id); | |
| }); | |
| let members = []; | |
| message.guild.members.forEach(member => { | |
| member.roles.forEach(member_in_role => { | |
| roles.forEach(role => { | |
| if(member_in_role.id == role) | |
| members.push(member.user.id); | |
| }) | |
| }); | |
| }); | |
| console.log(members); | |
| let list = ""; | |
| members.forEach(id => { | |
| list += "<@" + id +">\n"; | |
| }); | |
| message.channel.send( | |
| "<@" + message.author.id + "> \n" | |
| + "hit users\n" | |
| + list | |
| ) | |
| } | |
| }); |