aboutsummaryrefslogtreecommitdiff
path: root/src/lib/extensions/discord-akairo
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-05-27 22:39:07 -0400
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-05-27 22:39:07 -0400
commit94c20f17f1a87e594fc07a75eb6026891086c67c (patch)
treef32942ce07630352afbf4d7be2b718fc9724502c /src/lib/extensions/discord-akairo
parentf718df9321f2ff28a5a1f20d53e474fbf5998d6e (diff)
downloadtanzanite-94c20f17f1a87e594fc07a75eb6026891086c67c.tar.gz
tanzanite-94c20f17f1a87e594fc07a75eb6026891086c67c.tar.bz2
tanzanite-94c20f17f1a87e594fc07a75eb6026891086c67c.zip
fix: use util#formatError
Diffstat (limited to 'src/lib/extensions/discord-akairo')
-rw-r--r--src/lib/extensions/discord-akairo/BushClient.ts6
-rw-r--r--src/lib/extensions/discord-akairo/BushClientUtil.ts41
2 files changed, 45 insertions, 2 deletions
diff --git a/src/lib/extensions/discord-akairo/BushClient.ts b/src/lib/extensions/discord-akairo/BushClient.ts
index 847631c..ac4de5f 100644
--- a/src/lib/extensions/discord-akairo/BushClient.ts
+++ b/src/lib/extensions/discord-akairo/BushClient.ts
@@ -431,7 +431,11 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re
void this.logger.success('startup', `Successfully loaded <<${handlerName}>>.`, false);
})
.catch((e) => {
- void this.logger.error('startup', `Unable to load loader <<${handlerName}>> with error:\n${e?.stack || e}`, false);
+ void this.logger.error(
+ 'startup',
+ `Unable to load loader <<${handlerName}>> with error:\n${util.formatError(e)}`,
+ false
+ );
if (process.argv.includes('dry')) process.exit(1);
})
);
diff --git a/src/lib/extensions/discord-akairo/BushClientUtil.ts b/src/lib/extensions/discord-akairo/BushClientUtil.ts
index 7629c38..c0df724 100644
--- a/src/lib/extensions/discord-akairo/BushClientUtil.ts
+++ b/src/lib/extensions/discord-akairo/BushClientUtil.ts
@@ -683,7 +683,7 @@ export class BushClientUtil extends ClientUtil {
* @param error
*/
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.error(_.camelCase(context), `An error occurred:\n${util.formatError(error)}`, false);
await client.console.channelError({
embeds: [await CommandErrorListener.generateErrorEmbed({ type: 'unhandledRejection', error: error, context })]
});
@@ -777,6 +777,27 @@ export class BushClientUtil extends ClientUtil {
}
/**
+ * List the symbols of an object.
+ * @param obj The object to get the symbols of.
+ * @returns An array of the symbols of the object.
+ */
+ public getSymbols(obj: Record<string, any>): symbol[] {
+ let symbols: symbol[] = [];
+ let obj_: Record<string, any> = new Object(obj);
+
+ do {
+ const l = Object.getOwnPropertySymbols(obj_).sort();
+
+ symbols = [...symbols, ...l];
+ } while (
+ (obj_ = Object.getPrototypeOf(obj_)) && // walk-up the prototype chain
+ Object.getPrototypeOf(obj_) // not the the Object prototype methods (hasOwnProperty, etc...)
+ );
+
+ return symbols;
+ }
+
+ /**
* Uploads an image to imgur.
* @param image The image to upload.
* @returns The url of the imgur.
@@ -1052,6 +1073,24 @@ export class BushClientUtil extends ClientUtil {
}
/**
+ * Formats an error into a string.
+ * @param error The error to format.
+ * @returns The formatted error.
+ */
+ public formatError(error: Error | any): string {
+ if (!error) return error;
+ if (typeof error !== 'object') return String.prototype.toString.call(error);
+ if (
+ this.getSymbols(error)
+ .map((s) => s.toString())
+ .includes('Symbol(util.inspect.custom)')
+ )
+ return error.inspect();
+
+ return error.stack;
+ }
+
+ /**
* A wrapper for the Argument class that adds custom typings.
*/
public get arg() {