1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
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")
let util = 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 = util.is_mod(user)
let roles = ""
let color = {pos:-1,color:settings.defaultColor};
message.channel.send("loading ids").then(async(m)=>{
await m.edit("<@!"+user.id+">")
m.delete()
})
for(let r in user._roles){
let role = message.guild.roles.cache.get(user._roles[r])
if(role.color!=0&&role.rawPosition>color.pos)
color={pos:role.rawPosition,color:role.color}
roles+="<@&"+user._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(color.color)
message.reply({embeds:[embed]})
},
async p_role(client,Discord,message,role){
let 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 = util.is_mod(role)
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(role.color)
message.reply({embeds:[embed]})
}
};
|