diff options
author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-05-27 22:39:07 -0400 |
---|---|---|
committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-05-27 22:39:07 -0400 |
commit | 94c20f17f1a87e594fc07a75eb6026891086c67c (patch) | |
tree | f32942ce07630352afbf4d7be2b718fc9724502c /src/lib/extensions/discord-akairo | |
parent | f718df9321f2ff28a5a1f20d53e474fbf5998d6e (diff) | |
download | tanzanite-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.ts | 6 | ||||
-rw-r--r-- | src/lib/extensions/discord-akairo/BushClientUtil.ts | 41 |
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() { |