diff options
Diffstat (limited to 'commands/mod/whois.js')
| -rw-r--r-- | commands/mod/whois.js | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/commands/mod/whois.js b/commands/mod/whois.js new file mode 100644 index 0000000..56d2645 --- /dev/null +++ b/commands/mod/whois.js @@ -0,0 +1,120 @@ +const Discord = require("discord.js") +const settings = require("../../src/settings") +const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const fs = require('fs') +const {upload_limit} = require("../../src/util") +const path = require('path') +let config_loc = __filename+".json" +let config = JSON.parse(fs.readFileSync(config_loc)) +module.exports = { + name: "whois", + command: ["whois","getuser","getrole"], + mod_only:true, + config:config, + config_loc:config_loc, + async main(client,Discord,message,args) { + if(args.length==0) + return message.reply("bad usage, try `sns help whois`") + await message.guild.members.fetch() + + let error = "" + let users_m = Object.fromEntries(message.mentions.users) + for(let k of Object.keys(users_m)){ + let user = message.guild.members.cache.get(users_m[k].id) + if(user==null) + error+=("user "+users_m[k].id+" not found\n") + else + this.p_user(client,Discord,message,user) + } + let roles_m = Object.fromEntries(message.mentions.roles) + for(let k of Object.keys(roles_m)){ + let role = message.guild.roles.cache.get(roles_m[k].id) + if(role==null) + error+=("role "+roles_m[k].id+" not found\n") + else + this.p_role(client,Discord,message,role) + } + for(let a of args){ + if(a[0]!='<'){ + let role = message.guild.roles.cache.get(a) + let user = message.guild.members.cache.get(a) + if(role!=null) + this.p_role(client,Discord,message,role) + else if(user!=null) + this.p_user(client,Discord,message,user) + else + error+=("user or role "+a+" not found\n") + } + } + if(error!="") + message.reply(error) + //this.p_user(client,Discord,message,user) + }, + s_options:[{type:"role",name:"role",desc:"roles to get info on",required:false,autocomplete:false}, + {type:"user",name:"user",desc:"users to get info on",required:false,autocomplete:false}], + async s_main(client,Discord,interaction){ + let role = interaction.options.getRole("role") + let user = interaction.options.getUser("user") + if(role==null&&user==null) + return interaction.reply({content:"select atleast one option",ephemeral: true}) + if(role!=null) + this.p_role(client,Discord,interaction,role) + if(user!=null){ + await interaction.guild.members.fetch() + user = interaction.guild.members.cache.get(user.id) + this.p_user(client,Discord,interaction,user) + } + }, + p_user(client,Discord,message,user){ + let join = new Date(parseInt(user.joinedTimestamp / 1000, 10)*1000).toLocaleDateString(undefined,{ weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + let created = new Date(parseInt(user.user.createdAt / 1000, 10)*1000).toLocaleDateString(undefined,{ weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + let mod = user.permissions!=null&&user.permissions?.has(PermissionsBitField.Flags.KickMembers) + let roles = "" + //console.log(message.mentions.users) + message.channel.send("loading ids").then(async(m)=>{ + await m.edit("<@!"+user.id+">") + m.delete() + }) + for(let r of user._roles) + roles+="<@&"+r+"> " + const embed = new EmbedBuilder() + .setAuthor({name:user.user.username,iconURL:user.displayAvatarURL()}) + .setThumbnail(user.displayAvatarURL()) + .setDescription("<@!"+user.id+">"+(mod?" +able to use mod commands":"")) + .addFields([{ name: 'Joined', value:join , inline: true }, + { name: 'Created', value:created , inline: true }, + { name: 'Roles ['+user._roles.length+']', value:roles }]) + .setFooter({text:"id:"+user.id}) + .setColor(settings.defaultColor) + message.reply({embeds:[embed]}) + }, + async p_role(client,Discord,message,role){ + let members = " " + //console.log(message.guild.members) + let members_m = Object.fromEntries(message.guild.roles.cache.get(role.id).members) + let members_a = [] + for(let k of Object.keys(members_m)){ + let new_m = "<@"+members_m[k].id+"> " + if((members+new_m).length>1024-3){ + members+="..." + break; + } + members+=new_m + } + if(members!=" "){ + message.channel.send("loading ids").then(async(m)=>{ + await m.edit(members) + m.delete() + }) + } + let mod = role.permissions!=null&&role.permissions?.has(PermissionsBitField.Flags.KickMembers) + const embed = new EmbedBuilder() + .setTitle(role.name) + .setDescription("<@&"+role.id+">"+(mod?" +able to use mod commands":"")) + .addFields([{ name: 'Mentionable', value:(role.mentionable?"true":"false"), inline: true }, + {name: 'Users ['+role.members.size+"]",value:members}]) + .setFooter({text:"id:"+role.id}) + .setColor(settings.defaultColor) + message.reply({embeds:[embed]}) + } +}; |
