fix various issues with ban/unban commands

merge-requests/9/merge
Matthew 2020-04-16 17:58:10 -04:00
parent 563db7d9a7
commit 4069a20a31
No known key found for this signature in database
GPG Key ID: 766BE43AE75F7559
2 changed files with 36 additions and 11 deletions

View File

@ -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();
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;
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);
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);
}

View File

@ -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();