Small fixes here and there

This commit is contained in:
Erik 2023-12-08 00:30:33 +02:00
parent c8fb823b05
commit eb0a63a4b9
5 changed files with 17 additions and 24 deletions

View File

@ -175,7 +175,6 @@ class LockdownInfraction extends Infraction
async verify ()
{
const perms = (this.target as GuildChannel).permissionsFor(this.client.user!);
const missing = perms?.missing([ 'ManageRoles', 'SendMessages', 'AddReactions', 'ViewChannel' ]);
if (!perms || missing?.length)

View File

@ -195,7 +195,6 @@ class MuteInfraction extends Infraction
return this._fail('COMMAND_MUTE_MISSING_MANAGEROLE_PERM');
return super._verify();
}
async resolve (_staff: UserWrapper, _reason: string, _notify: boolean): Promise<void | ResolveResult>
@ -212,7 +211,6 @@ class MuteInfraction extends Infraction
error = false;
const settings = await this.guild.settings();
const { removedRoles = [], muteType = settings.mute.type, muteRole = settings.mute.role } = this.data || {};
// TODO: Change this to not rely on the member
const member = await this.guild.memberWrapper(this.targetId!).catch(() => null);

View File

@ -5,7 +5,7 @@ import { WarnData } from '../../../@types/Infractions.js';
import { MemberWrapper } from '../components/wrappers/index.js';
import { InfractionTargetType, InfractionType } from '../../../@types/Client.js';
class WarnInfraction extends Infraction
class WarnInfraction extends Infraction
{
static get Type (): InfractionType
{
@ -21,12 +21,10 @@ class WarnInfraction extends Infraction
constructor (client: DiscordClient, logger: LoggerClient, opts: WarnData)
{
if (opts.fetched)
if (opts.fetched)
super(client, logger, opts);
else
else
{
super(client, logger, {
targetType: 'USER',
type: opts.type,
@ -47,9 +45,7 @@ class WarnInfraction extends Infraction
if (!(opts.target instanceof MemberWrapper))
throw new Error('Guild member required');
this.member = opts.target;
}
}
async execute ()
@ -60,13 +56,11 @@ class WarnInfraction extends Infraction
async verify ()
{
// NOTE: If I want to readd permission checking for escalations.
// const permissions = await this.client.permissions.execute(this.message, this.message.command);
// if(permissions.error) return super._fail('COMMAND_WARN_INSUFFICIENTPERMISSIONS');
return super._verify();
}
}

View File

@ -81,8 +81,8 @@ class CommandOption
throw new Error('Type cannot be an array here');
this.#type = options.type ?? CommandOptionType.STRING;
this.#required = Boolean(options.required);
this.#autocomplete = options.autocomplete || false;
this.#choices = options.choices || []; // Used for STRING/INTEGER/NUMBER types.
this.#autocomplete = options.autocomplete ?? false;
this.#choices = options.choices ?? []; // Used for STRING/INTEGER/NUMBER types.
this.#options = [];
if (options.options)
@ -98,10 +98,10 @@ class CommandOption
// Used for INTEGER/NUMBER/FLOAT types.
if (typeof options.minimum === 'number')
this.#minimum = options.minimum;
if (typeof options.maximum === 'number')
if (typeof options.maximum === 'number')
this.#maximum = options.maximum;
this.#slashOption = options.slashOption || false;
this.#slashOption = options.slashOption ?? false;
this.#flag = options.flag ?? false; // used with message based command options
this.#valueOptional = options.valueOptional ?? false;
if (this.#valueOptional && typeof options.defaultValue === 'undefined')
@ -112,7 +112,7 @@ class CommandOption
// this.words = options.words ?? null; // Used when parsing strings if the command has multiple string types that aren't flags
// Used in cloned options when parsing final value
this.#guild = options.guild || null;
this.#guild = options.guild ?? null;
this.#rawValue = options.rawValue ?? null; // Raw value input from Discord. -- use ?? where the value is potentially false, otherwise we end up with false -> null
}
@ -191,7 +191,7 @@ class CommandOption
return `__${usage.name.replace('》', '').trim()}__\n${usage.value}`;
}).join('\n\n');
}
else if (CommandOptionType[this.type] === 'SUB_COMMAND')
else if (CommandOptionType[this.type] === 'SUB_COMMAND')
{
if (this.options.length)
value = this.options.map((opt) => opt.usage(guild, true).value).join('\n');
@ -291,7 +291,8 @@ class CommandOption
continue;
if (PointsReg.test(str))
{
value = num; removed = [ str ];
value = num;
removed = [ str ];
break;
}
const index = this.#rawValue.indexOf(str);
@ -299,7 +300,8 @@ class CommandOption
const tmp = str + next;
if (PointsReg.test(tmp))
{
value = num; removed = [ str, next ];
value = num;
removed = [ str, next ];
break;
}
}

View File

@ -242,13 +242,13 @@ class Infraction
throw new Error('Expected this method to be implemented in a subclass');
}
async save ()
async save ()
{
const filter: {id: string, _id?: ObjectId} = { id: this.id };
if (this.#mongoId)
filter._id = this.#mongoId;
return this.#client.mongodb.infractions.updateOne(filter, { $set: this.json })
.catch((error: Error) =>
.catch((error: Error) =>
{
this.#logger.error(`There was an issue saving infraction data to the database.\n${error.stack || error}\nInfraction data:\n${inspect(this.json)}`);
});
@ -256,9 +256,9 @@ class Infraction
hyperlink (modLogMessage = false)
{
if (this.#hyperlink)
if (this.#hyperlink)
return this.#hyperlink;
if (modLogMessage)
if (modLogMessage)
return `https://discord.com/channels/${this.#guildId}/${this.#modLogId}/${this.#modLogMessageId}`;
return `https://discord.com/channels/${this.#guildId}/${this.#channelId}/${this.#messageId}`;
}