misc fixes

log parser and inhibitor time
await unawaited calls
This commit is contained in:
Erik 2024-01-08 18:40:06 +02:00
parent 861169f083
commit da85e3253c
7 changed files with 21 additions and 13 deletions

View File

@ -494,11 +494,11 @@ class DiscordClient extends Client
{
if (this.#guildWrappers.has(id))
return this.#guildWrappers.get(id)!;
let guild = this.guilds.cache.get(id);
let guild = this.guilds.cache.get(id) ?? null;
if (!guild)
guild = await this.guilds.fetch({ guild: id, cache: true });
guild = await this.guilds.fetch({ guild: id, cache: true }).catch(() => null);
if (!guild)
throw new Error('Guild does not exist');
return Promise.reject(new Error('Guild does not exist'));
const wrapper = new GuildWrapper(this, guild);
this.#guildWrappers.set(id, wrapper);

View File

@ -539,7 +539,7 @@ class ModerationManager implements Initialisable
const guild = await this.#client.getGuildWrapper(i.guild!);
if (!guild)
throw new Error('Missing guild');
throw new Error(`Missing guild for infraction: ${i.id}`);
// await guild.settings(); //just incase
let target = null;

View File

@ -17,7 +17,9 @@ class ClientPermissions extends Inhibitor
async execute (invoker: InvokerWrapper, command: Command)
{
const channel = invoker.channel as GuildTextBasedChannel;
const channel = invoker.channel as GuildTextBasedChannel | null;
if (!channel)
return super._fail();
const missing = channel.permissionsFor(this.client.user!)?.missing(command.clientPermissions);
if (!missing || missing.length)
return super._fail({ error: true, missing: missing?.join(', ') || 'all', silent: true });

View File

@ -78,6 +78,7 @@ class CommandHandler extends Observer
});
}
const start = Date.now();
const messageWrapper = new MessageWrapper(this.client, message);
const { command, parameters } = await this._getCommand(messageWrapper);
if (!command)
@ -100,6 +101,8 @@ class CommandHandler extends Observer
if (await this._parseResult(invoker, result))
return;
const end = Date.now();
this.logger.info(`Message parse took ${end - start}ms`);
await this._executeCommand(invoker, result.options ?? {});
}
@ -222,6 +225,7 @@ class CommandHandler extends Observer
return [];
const promises = [];
const start = Date.now();
for (const inhibitor of inhibitors.values())
{
if (inhibitor.guild && !invoker.inGuild())
@ -230,6 +234,8 @@ class CommandHandler extends Observer
}
const errors = (await Promise.all(promises)).filter((result) => result.error);
const end = Date.now();
this.logger.info(`Inhibitors took ${end - start}ms to complete`);
if (!errors.length)
return [];
@ -271,7 +277,7 @@ class CommandHandler extends Observer
{
if (!(invoker.command instanceof SettingsCommand))
invoker.command.error(now);
this.logger.error(`\n[${invoker.type.toUpperCase()}] Command ${debugstr} errored:\nGuild: ${invoker.guild?.name || 'dms'} (${invoker.guild?.id || ''})\nOptions:\n${Object.keys(options).map((key) => `[${key}: ${options[key].asString} (${options[key].rawValue})]`).join('\n')}\n${error.stack || error}`);
this.logger.error(`\n[${invoker.type.toUpperCase()}] Command ${debugstr} errored:\nGuild: ${invoker.inGuild() ? invoker.guild?.name : 'dms'} (${invoker.guild?.id || ''})\nOptions:\n${Object.keys(options).map((key) => `[${key}: ${options[key].asString} (${options[key].rawValue})]`).join('\n')}\n${error.stack || error}`);
this._generateError(invoker, { type: 'commandHandler' });
}
return;

View File

@ -257,7 +257,7 @@ class LinkFilterSetting extends FilterSetting
}
actionObject.trigger = words;
if (removed.length)
invoker.channel!.send(invoker.format(
await invoker.channel!.send(invoker.format(
'SETTING_LINKFILTER_WORD_IN_ACTION',
{ words: removed.join('`, `') }
));

View File

@ -271,7 +271,7 @@ class WordFilterSetting extends FilterSetting
}
actionObject.trigger = words;
if (removed.length)
invoker.channel!.send(invoker.format(
await invoker.channel!.send(invoker.format(
'SETTING_WORDFILTER_WORD_IN_ACTION',
{ words: removed.join('`, `') }
));

View File

@ -135,7 +135,7 @@ abstract class FilterSetting extends Setting
if (typeof time === 'number')
actionObject.duration = time;
else
invoker.channel!.send(invoker.format('SETTING_FILTER_ACTION_ADD_TIMER_FAIL'));
await invoker.channel!.send(invoker.format('SETTING_FILTER_ACTION_ADD_TIMER_FAIL'));
}
}
@ -161,14 +161,14 @@ abstract class FilterSetting extends Setting
if (value < 0 || value > 100)
{
value = value < 0 ? 0 : 100;
invoker.channel!.send(invoker.format('SETTING_FILTER_ACTION_ADD_POINTS_RANGE', { value }));
await invoker.channel!.send(invoker.format('SETTING_FILTER_ACTION_ADD_POINTS_RANGE', { value }));
}
actionObject.points = value;
}
else
{
actionObject.points = null;
invoker.channel!.send(invoker.format('SETTING_FILTER_ACTION_ADD_POINTS_FAIL'));
await invoker.channel!.send(invoker.format('SETTING_FILTER_ACTION_ADD_POINTS_FAIL'));
}
@ -190,7 +190,7 @@ abstract class FilterSetting extends Setting
if (typeof time === 'number')
actionObject.expiration = time;
else
invoker.channel!.send(invoker.format('SETTING_FILTER_ACTION_ADD_EXPIRATION_FAIL'));
await invoker.channel!.send(invoker.format('SETTING_FILTER_ACTION_ADD_EXPIRATION_FAIL'));
}
}
}
@ -407,7 +407,7 @@ abstract class FilterSetting extends Setting
points = 0;
else if (points > 100)
points = 100;
invoker.channel?.send(invoker.format('SETTING_FILTER_ACTION_ADD_POINTS_RANGE', { value: points }));
await invoker.channel?.send(invoker.format('SETTING_FILTER_ACTION_ADD_POINTS_RANGE', { value: points }));
}
action.points = points;