From 9b95eabeb46edbeb7e2dcc28a8b8b8e8530ff795 Mon Sep 17 00:00:00 2001 From: Matthew R Date: Wed, 15 Apr 2020 15:13:16 -0400 Subject: [PATCH] add ban command --- src/commands/ban.ts | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/commands/ban.ts diff --git a/src/commands/ban.ts b/src/commands/ban.ts new file mode 100644 index 0000000..81c03a4 --- /dev/null +++ b/src/commands/ban.ts @@ -0,0 +1,33 @@ +import moment, { unitOfTime } from 'moment'; +import { Message } from 'eris'; +import { Client, Command } from '../class'; + +export default class Ban extends Command { + constructor(client: Client) { + super(client); + this.name = 'ban'; + this.description = 'Bans a member from the guild.'; + this.permissions = 2; + this.guildOnly = true; + this.enabled = true; + } + + public async run(message: Message, args: string[]) { + 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.***`); + 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); + } catch (err) { + return this.client.util.handleError(err, message, this); + } + } +}