From 2c6cf8e552dce5701242bfaef77ffd0daa2fa058 Mon Sep 17 00:00:00 2001 From: Bsian Date: Fri, 17 Apr 2020 13:42:25 +0100 Subject: [PATCH] Improvements --- src/class/Util.ts | 5 +++++ src/commands/ban.ts | 5 +++-- src/commands/game.ts | 3 ++- src/commands/roleinfo.ts | 5 +++-- src/commands/unban.ts | 3 ++- src/commands/whois.ts | 7 ++++--- src/events/messageCreate.ts | 4 ++-- 7 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/class/Util.ts b/src/class/Util.ts index f31a4ca..2f2f643 100644 --- a/src/class/Util.ts +++ b/src/class/Util.ts @@ -126,4 +126,9 @@ export default class Util { const asHex = number.toString(16); return '#000000'.substring(0, 7 - asHex.length) + asHex; } + + public guildFromMessage(message: Message): Guild | null { + if (message.channel instanceof PrivateChannel || message.channel instanceof GroupChannel) return null; + return message.channel.guild; + } } diff --git a/src/commands/ban.ts b/src/commands/ban.ts index a5afa43..3a6c90f 100644 --- a/src/commands/ban.ts +++ b/src/commands/ban.ts @@ -15,7 +15,8 @@ export default class Ban extends Command { public async run(message: Message, args: string[]) { try { - const member = this.client.util.resolveMember(args[0], message.member.guild); + const guild = this.client.util.guildFromMessage(message); + const member = this.client.util.resolveMember(args[0], guild); let user: User; if (!member) { try { @@ -25,7 +26,7 @@ export default class Ban extends Command { } } try { - await this.client.guilds.get(this.client.config.guildID).getBan(args[0]); + await guild.getBan(args[0]); return this.error(message.channel, 'This user is already banned.'); } catch {} // eslint-disable-line no-empty if (member && !this.client.util.moderation.checkPermissions(member, message.member)) return this.error(message.channel, 'Permission Denied.'); diff --git a/src/commands/game.ts b/src/commands/game.ts index 6d1aa68..4371880 100644 --- a/src/commands/game.ts +++ b/src/commands/game.ts @@ -24,10 +24,11 @@ export default class Game extends Command { public async run(message: Message, args: string[]) { try { + const guild = this.client.util.guildFromMessage(message); let member: Member; if (!args[0]) member = message.member; else { - member = this.client.util.resolveMember(args.join(' '), message.member.guild); + member = this.client.util.resolveMember(args.join(' '), guild); if (!member) { return this.error(message.channel, 'Member not found.'); } diff --git a/src/commands/roleinfo.ts b/src/commands/roleinfo.ts index 574a7d0..a0bf5cc 100644 --- a/src/commands/roleinfo.ts +++ b/src/commands/roleinfo.ts @@ -14,11 +14,12 @@ export default class Roleinfo extends Command { public async run(message: Message, args: string[]) { try { + const guild = this.client.util.guildFromMessage(message); if (!args[0]) return this.error(message.channel, 'You need to specifiy a role ID or a role name.'); - let role: Role = message.member.guild.roles.find((r: Role) => r.id === args[0]); + let role: Role = guild.roles.find((r: Role) => r.id === args[0]); if (!role) { // if it's a role name - role = message.member.guild.roles.find((r: Role) => r.name.toLowerCase().includes(args.join(' ').toLowerCase())); + role = guild.roles.find((r: Role) => r.name.toLowerCase().includes(args.join(' ').toLowerCase())); } if (!role) return this.error(message.channel, 'Could not find role.'); diff --git a/src/commands/unban.ts b/src/commands/unban.ts index 025758c..c1ff2cb 100644 --- a/src/commands/unban.ts +++ b/src/commands/unban.ts @@ -14,6 +14,7 @@ export default class Unban extends Command { public async run(message: Message, args: string[]) { try { + const guild = this.client.util.guildFromMessage(message); let user: User; try { user = await this.client.getRESTUser(args[0]); @@ -21,7 +22,7 @@ export default class Unban extends Command { return this.error(message.channel, 'Could find find user.'); } try { - await this.client.guilds.get(this.client.config.guildID).getBan(args[0]); + await guild.getBan(args[0]); } catch { return this.error(message.channel, 'This user is not banned.'); } diff --git a/src/commands/whois.ts b/src/commands/whois.ts index e6bdad9..24b3e88 100644 --- a/src/commands/whois.ts +++ b/src/commands/whois.ts @@ -18,10 +18,11 @@ export default class Whois extends Command { public async run(message: Message, args: string[]) { try { + const guild = this.client.util.guildFromMessage(message); let member: Member; if (!args[0]) member = message.member; else { - member = this.client.util.resolveMember(args.join(' '), message.member.guild); + member = this.client.util.resolveMember(args.join(' '), guild); } if (!member) { @@ -61,7 +62,7 @@ export default class Whois extends Command { description += `\n<@${member.id}>`; embed.setDescription(description); - const roles = member.roles.map((r) => message.member.guild.roles.get(r)).sort((a, b) => b.position - a.position); + const roles = member.roles.map((r) => guild.roles.get(r)).sort((a, b) => b.position - a.position); const { color } = roles.find((r) => r.color); embed.setColor(color); @@ -72,7 +73,7 @@ export default class Whois extends Command { const permissions: string[] = []; const serverAcknowledgements: string[] = []; const bit = member.permission.allow; - if (this.client.guilds.get(this.client.config.guildID).ownerID === member.id) serverAcknowledgements.push('Server Owner'); + if (guild.ownerID === member.id) serverAcknowledgements.push('Server Owner'); if ((bit | 8) === bit) { permissions.push('Administrator'); serverAcknowledgements.push('Server Admin'); } if ((bit | 20) === bit) { permissions.push('Manage Server'); serverAcknowledgements.push('Server Manager'); } if ((bit | 10) === bit) permissions.push('Manage Channels'); diff --git a/src/events/messageCreate.ts b/src/events/messageCreate.ts index 72a1b65..cae3794 100644 --- a/src/events/messageCreate.ts +++ b/src/events/messageCreate.ts @@ -1,5 +1,5 @@ /* eslint-disable no-useless-return */ -import { Message, TextChannel } from 'eris'; +import { Message, TextChannel, NewsChannel } from 'eris'; import { Client } from '../class'; export default class { @@ -16,7 +16,7 @@ export default class { const noPrefix: string[] = message.content.slice(this.client.config.prefix.length).trim().split(/ +/g); const resolved = await this.client.util.resolveCommand(noPrefix); if (!resolved) return; - if (resolved.cmd.guildOnly && !(message.channel instanceof TextChannel)) return; + if (resolved.cmd.guildOnly && !(message.channel instanceof TextChannel || message.channel instanceof NewsChannel)) return; if (!resolved.cmd.enabled) { message.channel.createMessage(`***${this.client.util.emojis.ERROR} This command has been disabled***`); return; } if (!resolved.cmd.checkPermissions(message.member)) return; this.client.util.signale.info(`User '${message.author.username}#${message.author.discriminator}' ran command '${resolved.cmd.name}' in '${message.channel.id}'.`);