aboutsummaryrefslogtreecommitdiff
path: root/src/lib/extensions
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-08-30 19:42:10 +0000
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-08-30 19:42:10 +0000
commitbada2976eed34a2530bc09683d2de17c71c744a8 (patch)
treefe459cebb005dd90d1ae7ed3269a77248f780499 /src/lib/extensions
parentaaef32128f8c8c30254836932805d0745647c646 (diff)
downloadtanzanite-bada2976eed34a2530bc09683d2de17c71c744a8.tar.gz
tanzanite-bada2976eed34a2530bc09683d2de17c71c744a8.tar.bz2
tanzanite-bada2976eed34a2530bc09683d2de17c71c744a8.zip
some fixes + some more error stuff
Diffstat (limited to 'src/lib/extensions')
-rw-r--r--src/lib/extensions/discord-akairo/BushClientUtil.ts35
-rw-r--r--src/lib/extensions/discord.js/BushGuild.ts28
-rw-r--r--src/lib/extensions/discord.js/BushGuildMember.ts24
3 files changed, 46 insertions, 41 deletions
diff --git a/src/lib/extensions/discord-akairo/BushClientUtil.ts b/src/lib/extensions/discord-akairo/BushClientUtil.ts
index ddc03d0..a7dd535 100644
--- a/src/lib/extensions/discord-akairo/BushClientUtil.ts
+++ b/src/lib/extensions/discord-akairo/BushClientUtil.ts
@@ -46,8 +46,10 @@ import {
} from 'discord.js';
import got from 'got';
import humanizeDuration from 'humanize-duration';
+import _ from 'lodash';
import moment from 'moment';
import { inspect, InspectOptions, promisify } from 'util';
+import CommandErrorListener from '../../../listeners/commands/commandError';
import { ActivePunishment, ActivePunishmentType } from '../../models/ActivePunishment';
import { BushNewsChannel } from '../discord.js/BushNewsChannel';
import { BushTextChannel } from '../discord.js/BushTextChannel';
@@ -569,7 +571,7 @@ export class BushClientUtil extends ClientUtil {
const res: hastebinRes = await got.post(`${url}/documents`, { body: content }).json();
return `${url}/${res.key}`;
} catch {
- void client.console.error('Haste', `Unable to upload haste to ${url}`);
+ void client.console.error('haste', `Unable to upload haste to ${url}`);
}
}
return 'Unable to post';
@@ -994,7 +996,7 @@ export class BushClientUtil extends ClientUtil {
const newValue = this.addOrRemoveFromArray(action, oldValue, value);
row[key] = newValue;
client.cache.global[key] = newValue;
- return await row.save().catch((e) => client.logger.error('insertOrRemoveFromGlobal', e?.stack || e));
+ return await row.save().catch((e) => util.handleError('insertOrRemoveFromGlobal', e));
}
/**
@@ -1110,8 +1112,8 @@ export class BushClientUtil extends ClientUtil {
duration: duration,
guild
});
- const saveResult: ModLog | null = await modLogEntry.save().catch((e) => {
- void client.console.error('createModLogEntry', e?.stack || e);
+ const saveResult: ModLog | null = await modLogEntry.save().catch(async (e) => {
+ await util.handleError('createModLogEntry', e);
return null;
});
@@ -1130,17 +1132,17 @@ export class BushClientUtil extends ClientUtil {
extraInfo?: Snowflake;
}): Promise<ActivePunishment | null> {
const expires = options.duration ? new Date(new Date().getTime() + options.duration) : undefined;
+ client.console.debug(expires);
+ client.console.debug(typeof expires);
const user = client.users.resolveId(options.user)!;
const guild = client.guilds.resolveId(options.guild)!;
const type = this.#findTypeEnum(options.type)!;
-
-
const entry = options.extraInfo
- ? ActivePunishment.build({ user, type, guild, expires, modlog: options.modlog??, extraInfo: options.extraInfo })
+ ? ActivePunishment.build({ user, type, guild, expires, modlog: options.modlog, extraInfo: options.extraInfo })
: ActivePunishment.build({ user, type, guild, expires, modlog: options.modlog });
- return await entry.save().catch((e) => {
- void client.console.error('createPunishmentEntry', e?.stack || e);
+ return await entry.save().catch(async (e) => {
+ await util.handleError('createPunishmentEntry', e);
return null;
});
}
@@ -1159,15 +1161,15 @@ export class BushClientUtil extends ClientUtil {
const entries = await ActivePunishment.findAll({
// finding all cases of a certain type incase there were duplicates or something
where: { user, guild, type }
- }).catch((e) => {
- void client.console.error('removePunishmentEntry', e?.stack || e);
+ }).catch(async (e) => {
+ await util.handleError('removePunishmentEntry', e);
success = false;
});
if (entries) {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
entries.forEach(async (entry) => {
- await entry.destroy().catch((e) => {
- void client.console.error('removePunishmentEntry', e?.stack || e);
+ await entry.destroy().catch(async (e) => {
+ await util.handleError('removePunishmentEntry', e);
});
success = false;
});
@@ -1357,6 +1359,13 @@ export class BushClientUtil extends ClientUtil {
return new Promise((resolve) => setTimeout(resolve, s * 1000));
}
+ public async handleError(context: string, error: Error) {
+ await client.console.error(_.camelCase(context), `An error occurred:\n${error?.stack ?? (error as any)}`, false);
+ await client.console.channelError({
+ embeds: [await CommandErrorListener.generateErrorEmbed({ type: 'unhandledRejection', error: error, context })]
+ });
+ }
+
//~ modified from https://stackoverflow.com/questions/31054910/get-functions-methods-of-a-class
//~ answer by Bruno Grieder
//~ public getMethods(obj: any): string {
diff --git a/src/lib/extensions/discord.js/BushGuild.ts b/src/lib/extensions/discord.js/BushGuild.ts
index 2c3b4bd..09e355c 100644
--- a/src/lib/extensions/discord.js/BushGuild.ts
+++ b/src/lib/extensions/discord.js/BushGuild.ts
@@ -84,25 +84,21 @@ export class BushGuild extends Guild {
if (!unbanSuccess) return 'error unbanning';
// add modlog entry
- const modlog = await util
- .createModLogEntry({
- type: ModLogType.UNBAN,
- user,
- moderator: moderator.id,
- reason: options.reason,
- guild: this
- })
- .catch(() => null);
+ const modlog = await util.createModLogEntry({
+ type: ModLogType.UNBAN,
+ user,
+ moderator: moderator.id,
+ reason: options.reason,
+ guild: this
+ });
if (!modlog) return 'error creating modlog entry';
// remove punishment entry
- const removePunishmentEntrySuccess = await util
- .removePunishmentEntry({
- type: 'ban',
- user,
- guild: this
- })
- .catch(() => null);
+ const removePunishmentEntrySuccess = await util.removePunishmentEntry({
+ type: 'ban',
+ user,
+ guild: this
+ });
if (!removePunishmentEntrySuccess) return 'error removing ban entry';
const userObject = client.users.cache.get(user);
diff --git a/src/lib/extensions/discord.js/BushGuildMember.ts b/src/lib/extensions/discord.js/BushGuildMember.ts
index e738b5e..f71a435 100644
--- a/src/lib/extensions/discord.js/BushGuildMember.ts
+++ b/src/lib/extensions/discord.js/BushGuildMember.ts
@@ -132,9 +132,10 @@ export class BushGuildMember extends GuildMember {
})
: { log: null };
- if (!modlog) return 'error creating modlog entry';
+ if (!modlog && options.addToModlog) return 'error creating modlog entry';
- if (options.addToModlog) {
+ if (options.addToModlog || options.duration) {
+ client.console.debug('got to punishment');
const punishmentEntrySuccess = await util.createPunishmentEntry({
type: 'role',
user: this,
@@ -212,7 +213,8 @@ export class BushGuildMember extends GuildMember {
const muteSuccess = await this.roles
.add(muteRole, `[Mute] ${moderator.tag} | ${options.reason ?? 'No reason provided.'}`)
.catch(async (e) => {
- await client.console.warn('muteRoleAddError', e?.stack || e);
+ await client.console.warn('muteRoleAddError', e);
+ client.console.debug(e);
return false;
});
if (!muteSuccess) return 'error giving mute role';
@@ -322,15 +324,13 @@ export class BushGuildMember extends GuildMember {
if (!kickSuccess) return 'error kicking';
// add modlog entry
- const { log: modlog } = await util
- .createModLogEntry({
- type: ModLogType.KICK,
- user: this,
- moderator: moderator.id,
- reason: options.reason,
- guild: this.guild
- })
- .catch(() => ({ log: null }));
+ const { log: modlog } = await util.createModLogEntry({
+ type: ModLogType.KICK,
+ user: this,
+ moderator: moderator.id,
+ reason: options.reason,
+ guild: this.guild
+ });
if (!modlog) return 'error creating modlog entry';
if (!dmSuccess) return 'failed to dm';
return 'success';