Merge branch 'dev'
commit
6f32ef1f90
|
@ -30,14 +30,6 @@ export default class RichEmbed implements EmbedOptions {
|
||||||
fields?: {name: string, value: string, inline?: boolean}[]
|
fields?: {name: string, value: string, inline?: boolean}[]
|
||||||
|
|
||||||
constructor(data: EmbedOptions = {}) {
|
constructor(data: EmbedOptions = {}) {
|
||||||
/*
|
|
||||||
let types: {
|
|
||||||
title?: string, type?: string, description?: string, url?: string, timestamp?: Date, color?: number, fields?: {name: string, value: string, inline?: boolean}[]
|
|
||||||
footer?: { text: string, icon_url?: string, proxy_icon_url?: string}, image?: { url?: string, proxy_url?: string, height?: number, width?: number },
|
|
||||||
thumbnail?: { url?: string, proxy_url?: string, height?: number, width?: number }, video?: { url?: string, height?: number, width?: number },
|
|
||||||
provider?: { name?: string, url?: string}, author?: { name?: string, url?: string, proxy_icon_url?: string, icon_url?: string}
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
this.title = data.title;
|
this.title = data.title;
|
||||||
this.description = data.description;
|
this.description = data.description;
|
||||||
this.url = data.url;
|
this.url = data.url;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import moment, { unitOfTime } from 'moment';
|
import moment, { unitOfTime } from 'moment';
|
||||||
import { Message, User } from 'eris';
|
import { Message, User, GuildTextableChannel } from 'eris';
|
||||||
import { Client, Command } from '../class';
|
import { Client, Command } from '../class';
|
||||||
|
|
||||||
export default class Ban extends Command {
|
export default class Ban extends Command {
|
||||||
|
@ -16,7 +16,7 @@ export default class Ban extends Command {
|
||||||
public async run(message: Message, args: string[]) {
|
public async run(message: Message, args: string[]) {
|
||||||
try {
|
try {
|
||||||
if (!args[0]) return this.client.commands.get('help').run(message, [this.name]);
|
if (!args[0]) return this.client.commands.get('help').run(message, [this.name]);
|
||||||
const member = this.client.util.resolveMember(args[0], this.client.guilds.get(this.client.config.guildID));
|
const member = this.client.util.resolveMember(args[0], message.guild);
|
||||||
let user: User;
|
let user: User;
|
||||||
if (!member) {
|
if (!member) {
|
||||||
try {
|
try {
|
||||||
|
@ -28,7 +28,7 @@ export default class Ban extends Command {
|
||||||
user = member.user;
|
user = member.user;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await this.client.guilds.get(this.client.config.guildID).getBan(args[0]);
|
await message.guild.getBan(args[0]);
|
||||||
return this.error(message.channel, 'This user is already banned.');
|
return this.error(message.channel, 'This user is already banned.');
|
||||||
} catch {} // eslint-disable-line no-empty
|
} catch {} // eslint-disable-line no-empty
|
||||||
if (member && !this.client.util.moderation.checkPermissions(member, message.member)) return this.error(message.channel, 'Permission Denied.');
|
if (member && !this.client.util.moderation.checkPermissions(member, message.member)) return this.error(message.channel, 'Permission Denied.');
|
||||||
|
@ -45,7 +45,7 @@ export default class Ban extends Command {
|
||||||
if (reason.length > 512) return this.error(message.channel, 'Ban reasons cannot be longer than 512 characters.');
|
if (reason.length > 512) return this.error(message.channel, 'Ban reasons cannot be longer than 512 characters.');
|
||||||
}
|
}
|
||||||
await this.client.util.moderation.ban(user, message.member, momentMilliseconds, reason);
|
await this.client.util.moderation.ban(user, message.member, momentMilliseconds, reason);
|
||||||
return this.success(message.channel, `${user.username}#${user.id} has been banned.`);
|
return this.success(message.channel, `${user.username}#${user.discriminator} has been banned.`);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return this.client.util.handleError(err, message, this, false);
|
return this.client.util.handleError(err, message, this, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,10 +17,18 @@ export default class DJS extends Command {
|
||||||
try {
|
try {
|
||||||
if (!args[0]) return this.client.commands.get('help').run(message, [this.name]);
|
if (!args[0]) return this.client.commands.get('help').run(message, [this.name]);
|
||||||
|
|
||||||
const { data }: AxiosResponse<EmbedOptions> = await axios.get(`https://djsdocs.sorta.moe/v2/embed?src=master&q=${args[0]}`);
|
let res: AxiosResponse<EmbedOptions>;
|
||||||
if (!data) return this.error(message.channel, 'Could not find information. Try something else.');
|
try {
|
||||||
|
res = await axios.get(`https://djsdocs.sorta.moe/v2/embed?src=master&q=${args[0]}`);
|
||||||
|
} catch (err) {
|
||||||
|
return this.error(message.channel, 'Please try again later, something unexpected happened.');
|
||||||
|
}
|
||||||
|
|
||||||
const embed = new RichEmbed(data);
|
if (!res.data) return this.error(message.channel, 'Could not find information. Try something else.');
|
||||||
|
|
||||||
|
const embed = new RichEmbed(res.data);
|
||||||
|
embed.setFooter(this.client.user.username, this.client.user.avatarURL);
|
||||||
|
embed.setTimestamp();
|
||||||
return message.channel.createMessage({ embed });
|
return message.channel.createMessage({ embed });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return this.client.util.handleError(err, message, this);
|
return this.client.util.handleError(err, message, this);
|
||||||
|
|
|
@ -27,7 +27,7 @@ export default class Game extends Command {
|
||||||
let member: Member;
|
let member: Member;
|
||||||
if (!args[0]) member = message.member;
|
if (!args[0]) member = message.member;
|
||||||
else {
|
else {
|
||||||
member = this.client.util.resolveMember(args.join(' '), this.client.guilds.get(this.client.config.guildID));
|
member = this.client.util.resolveMember(args.join(' '), message.guild);
|
||||||
if (!member) {
|
if (!member) {
|
||||||
return this.error(message.channel, 'Member not found.');
|
return this.error(message.channel, 'Member not found.');
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ export default class Kick extends Command {
|
||||||
public async run(message: Message, args: string[]) {
|
public async run(message: Message, args: string[]) {
|
||||||
try {
|
try {
|
||||||
if (!args[0]) return this.client.commands.get('help').run(message, [this.name]);
|
if (!args[0]) return this.client.commands.get('help').run(message, [this.name]);
|
||||||
let user: Member = this.client.util.resolveMember(args[0], this.client.guilds.get(this.client.config.guildID));
|
let user: Member = this.client.util.resolveMember(args[0], message.guild);
|
||||||
if (!user) {
|
if (!user) {
|
||||||
try {
|
try {
|
||||||
user = await this.client.getRESTGuildMember(this.client.config.guildID, args[0]);
|
user = await this.client.getRESTGuildMember(this.client.config.guildID, args[0]);
|
||||||
|
|
|
@ -17,9 +17,9 @@ export default class Roleinfo extends Command {
|
||||||
try {
|
try {
|
||||||
if (!args[0]) return this.client.commands.get('help').run(message, [this.name]);
|
if (!args[0]) return this.client.commands.get('help').run(message, [this.name]);
|
||||||
|
|
||||||
let role: Role = this.client.guilds.get(this.client.config.guildID).roles.find((r: Role) => r.id === args[0]);
|
let role: Role = message.guild.roles.find((r: Role) => r.id === args[0]);
|
||||||
if (!role) { // if it's a role name
|
if (!role) { // if it's a role name
|
||||||
role = this.client.guilds.get(this.client.config.guildID).roles.find((r: Role) => r.name.toLowerCase().includes(args.join(' ').toLowerCase()));
|
role = message.guild.roles.find((r: Role) => r.name.toLowerCase().includes(args.join(' ').toLowerCase()));
|
||||||
}
|
}
|
||||||
if (!role) return this.error(message.channel, 'Could not find role.');
|
if (!role) return this.error(message.channel, 'Could not find role.');
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ export default class Unban extends Command {
|
||||||
return this.error(message.channel, 'Could find find user.');
|
return this.error(message.channel, 'Could find find user.');
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await this.client.guilds.get(this.client.config.guildID).getBan(args[0]);
|
await message.guild.getBan(args[0]);
|
||||||
} catch {
|
} catch {
|
||||||
return this.error(message.channel, 'This user is not banned.');
|
return this.error(message.channel, 'This user is not banned.');
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ export default class Whois extends Command {
|
||||||
let member: Member;
|
let member: Member;
|
||||||
if (!args[0]) member = message.member;
|
if (!args[0]) member = message.member;
|
||||||
else {
|
else {
|
||||||
member = this.client.util.resolveMember(args.join(' '), this.client.guilds.get(this.client.config.guildID));
|
member = this.client.util.resolveMember(args.join(' '), message.guild);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!member) {
|
if (!member) {
|
||||||
|
@ -59,42 +59,33 @@ export default class Whois extends Command {
|
||||||
description += `\n<@${member.id}>`;
|
description += `\n<@${member.id}>`;
|
||||||
embed.setDescription(description);
|
embed.setDescription(description);
|
||||||
|
|
||||||
for (const role of member.roles.map((r) => this.client.guilds.get(this.client.config.guildID).roles.get(r)).sort((a, b) => b.position - a.position)) {
|
for (const role of member.roles.map((r) => message.guild.roles.get(r)).sort((a, b) => b.position - a.position)) {
|
||||||
if (role?.color !== 0) {
|
if (role?.color !== 0) {
|
||||||
embed.setColor(role.color);
|
embed.setColor(role.color);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (member.status) {
|
embed.addField('Status', member.status === 'dnd' ? 'Do Not Disturb' : this.capsFirstLetter(member.status) || 'Unknown', true);
|
||||||
embed.addField('Status', `${member.status[0].toUpperCase()}${member.status.slice(1)}`, true);
|
const platform = member.bot && member.status !== 'offline' ? 'API/WebSocket' : Object.entries(message.member.clientStatus).filter((a) => a[1] !== 'offline').map((a) => this.capsFirstLetter(a[0])).join(', ');
|
||||||
}
|
if (platform) embed.addField('Platform', platform, true);
|
||||||
if (member.bot) {
|
|
||||||
embed.addField('Platform', 'API/WebSocket', true);
|
|
||||||
} else if (member.clientStatus?.web === 'online' || member.clientStatus?.web === 'idle' || member.clientStatus?.web === 'dnd') {
|
|
||||||
embed.addField('Platform', 'Web', true);
|
|
||||||
} else if (member.clientStatus?.desktop === 'online' || member.clientStatus?.desktop === 'idle' || member.clientStatus?.desktop === 'dnd') {
|
|
||||||
embed.addField('Platform', 'Desktop', true);
|
|
||||||
} else if (member.clientStatus?.mobile === 'online' || member.clientStatus?.mobile === 'idle' || member.clientStatus?.mobile === 'dnd') {
|
|
||||||
embed.addField('Platform', 'Mobile', true);
|
|
||||||
}
|
|
||||||
embed.addField('Joined At', `${moment(new Date(member.joinedAt)).format('dddd, MMMM Do YYYY, h:mm:ss A')} ET`, true);
|
embed.addField('Joined At', `${moment(new Date(member.joinedAt)).format('dddd, MMMM Do YYYY, h:mm:ss A')} ET`, true);
|
||||||
embed.addField('Created At', `${moment(new Date(member.user.createdAt)).format('dddd, MMMM Do YYYY, h:mm:ss A')} ET`, true);
|
embed.addField('Created At', `${moment(new Date(member.user.createdAt)).format('dddd, MMMM Do YYYY, h:mm:ss A')} ET`, true);
|
||||||
if (member.roles.length > 0) {
|
if (member.roles.length > 0) {
|
||||||
embed.addField(`Roles [${member.roles.length}]`, member.roles.map((r) => this.client.guilds.get(this.client.config.guildID).roles.get(r)).sort((a, b) => b.position - a.position).map((r) => `<@&${r.id}>`).join(', '));
|
embed.addField(`Roles [${member.roles.length}]`, member.roles.map((r) => message.guild.roles.get(r)).sort((a, b) => b.position - a.position).map((r) => `<@&${r.id}>`).join(', '));
|
||||||
}
|
}
|
||||||
const permissions: string[] = [];
|
const permissions: string[] = [];
|
||||||
const serverAcknowledgements: string[] = [];
|
const serverAcknowledgements: string[] = [];
|
||||||
const bit = member.permission.allow;
|
const bit = member.permission.allow;
|
||||||
if (this.client.guilds.get(this.client.config.guildID).ownerID === member.id) serverAcknowledgements.push('Server Owner');
|
if (message.guild.ownerID === member.id) serverAcknowledgements.push('Server Owner');
|
||||||
if ((bit | 8) === bit) { permissions.push('Administrator'); serverAcknowledgements.push('Server Admin'); }
|
if (bit & 8) { permissions.push('Administrator'); serverAcknowledgements.push('Server Admin'); }
|
||||||
if ((bit | 32) === bit) { permissions.push('Manage Server'); serverAcknowledgements.push('Server Manager'); }
|
if (bit & 32) { permissions.push('Manage Server'); serverAcknowledgements.push('Server Manager'); }
|
||||||
if ((bit | 16) === bit) permissions.push('Manage Channels');
|
if (bit & 16) permissions.push('Manage Channels');
|
||||||
if ((bit | 268435456) === bit) permissions.push('Manage Roles');
|
if (bit & 268435456) permissions.push('Manage Roles');
|
||||||
if ((bit | 8192) === bit) { permissions.push('Manage Messages'); serverAcknowledgements.push('Server Moderator'); }
|
if (bit & 8192) { permissions.push('Manage Messages'); serverAcknowledgements.push('Server Moderator'); }
|
||||||
if ((bit | 134217728) === bit) permissions.push('Manage Nicknames');
|
if (bit & 134217728) permissions.push('Manage Nicknames');
|
||||||
if ((bit | 1073741824) === bit) permissions.push('Manage Emojis');
|
if (bit & 1073741824) permissions.push('Manage Emojis');
|
||||||
if ((bit | 4) === bit) permissions.push('Ban Members');
|
if (bit & 4) permissions.push('Ban Members');
|
||||||
if ((bit | 2) === bit) permissions.push('Kick Members');
|
if (bit & 2) permissions.push('Kick Members');
|
||||||
const account = await this.client.db.Member.findOne({ userID: member.id });
|
const account = await this.client.db.Member.findOne({ userID: member.id });
|
||||||
if (account?.additional?.langs.length > 0) {
|
if (account?.additional?.langs.length > 0) {
|
||||||
const langs: string[] = [];
|
const langs: string[] = [];
|
||||||
|
@ -199,4 +190,9 @@ export default class Whois extends Command {
|
||||||
public resolveStaffInformation(id: string) {
|
public resolveStaffInformation(id: string) {
|
||||||
return acknowledgements.find((m) => m.id === id);
|
return acknowledgements.find((m) => m.id === id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public capsFirstLetter(string?: string): string | void {
|
||||||
|
if (typeof string !== 'string') return undefined;
|
||||||
|
return string.substring(0, 1).toUpperCase() + string.substring(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue