diff --git a/src/commands/ban.ts b/src/commands/ban.ts index 4d7e46f..4562e1d 100644 --- a/src/commands/ban.ts +++ b/src/commands/ban.ts @@ -1,5 +1,5 @@ import moment, { unitOfTime } from 'moment'; -import { Message } from 'eris'; +import { Message, User } from 'eris'; import { Client, Command } from '../class'; export default class Ban extends Command { @@ -17,16 +17,35 @@ export default class Ban extends Command { try { // @ts-ignore const member = this.client.util.resolveMember(args[0], message.channel.guild); - if (!member) return message.channel.createMessage(`***${this.client.util.emojis.ERROR} Cannot find member.***`); - if (!this.client.util.moderation.checkPermissions(member, message.member)) return message.channel.createMessage(`***${this.client.util.emojis.ERROR} Permission denied.***`); + let user: User; + if (!member) { + try { + user = await this.client.getRESTUser(args[0]); + } catch { + return message.channel.createMessage(`***${this.client.util.emojis.ERROR} Cannot find user.***`); + } + } + try { + await this.client.guilds.get(this.client.config.guildID).getBan(args[0]); + return message.channel.createMessage(`***${this.client.util.emojis.ERROR} This user is already banned.***`); + } catch { + // eslint-disable-next-line no-unused-expressions + undefined; + } + if (member && !this.client.util.moderation.checkPermissions(member, message.member)) return message.channel.createMessage(`***${this.client.util.emojis.ERROR} Permission denied.***`); message.delete(); - const lockLength = args[1].match(/[a-z]+|[^a-z]+/gi); - const length = Number(lockLength[0]); - const unit = lockLength[1] as unitOfTime.Base; - const momentMilliseconds = moment.duration(length, unit).asMilliseconds(); - const reason = momentMilliseconds ? args.slice(2).join(' ') : args.slice(1).join(' '); - return await this.client.util.moderation.ban(member, message.member, momentMilliseconds, reason); + let momentMilliseconds: number; + let reason: string; + if (args.length > 1) { + const lockLength = args[1].match(/[a-z]+|[^a-z]+/gi); + const length = Number(lockLength[0]); + const unit = lockLength[1] as unitOfTime.Base; + momentMilliseconds = moment.duration(length, unit).asMilliseconds(); + reason = momentMilliseconds ? args.slice(2).join(' ') : args.slice(1).join(' '); + } + await this.client.util.moderation.ban(user, message.member, momentMilliseconds, reason); + return message.channel.createMessage(`***${this.client.util.emojis.SUCCESS} ${user.username}#${user.id} has been banned.***`); } catch (err) { return this.client.util.handleError(err, message, this, false); } diff --git a/src/commands/unban.ts b/src/commands/unban.ts index 2d1702e..34efd89 100644 --- a/src/commands/unban.ts +++ b/src/commands/unban.ts @@ -17,14 +17,20 @@ export default class Unban extends Command { // @ts-ignore let user: User; try { - await this.client.getRESTUser(args[0]); + user = await this.client.getRESTUser(args[0]); } catch { return message.channel.createMessage(`***${this.client.util.emojis.ERROR} Could find find user.***`); } try { if (await this.client.getRESTGuildMember(this.client.config.guildID, args[0])) return message.channel.createMessage(`***${this.client.util.emojis.ERROR} This member exists in the server.***`); } catch { - return message.channel.createMessage(`***${this.client.util.emojis.ERROR} This member exists in the server.***`); + // eslint-disable-next-line no-unused-expressions + undefined; + } + try { + await this.client.guilds.get(this.client.config.guildID).getBan(args[0]); + } catch { + return message.channel.createMessage(`***${this.client.util.emojis.ERROR} This user is not banned.***`); } if (!user) return message.channel.createMessage(`***${this.client.util.emojis.ERROR} Unable to locate user.***`); message.delete();