UNPKG

bdjs

Version:

A potent package for creating Discord bots.

73 lines (72 loc) 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Function_1 = require("../structures/Function"); const util_1 = require("util"); exports.default = new Function_1.BaseFunction({ description: 'Allows you to handle and manage errors and exceptions in a code.', parameters: [ { name: 'Code', description: 'The code to try first.', required: true, resolver: 'String', compile: false, value: 'none' }, { name: 'Catch code', description: 'The code to execute something goes wrong.', required: true, resolver: 'String', compile: false, value: 'none' }, { name: 'Finally code', description: 'The code to execute if the condition is false.', required: false, resolver: 'String', compile: false, value: 'none' }, { name: 'Separator', description: 'Code result separator.', required: false, resolver: 'String', value: ',' } ], code: async function (d, [code, catchCode, finallyCode, sep = ',']) { if (code === undefined) throw new d.error(d, 'required', 'code', d.function?.name); if (catchCode === undefined) throw new d.error(d, 'required', 'catch code', d.function?.name); const results = []; d.reader.compile(code, d).then((compiled) => { if (compiled.code !== '') results.push(compiled.code); }).catch(async (e) => { const data = d.extend(d); data.functions.set('error', new Function_1.BaseFunction({ description: 'Retrieves a property from the error.', code: async function (subdata, [property = 'message']) { const properties = ['message', 'stack', 'raw']; if (!properties.includes(property.toLowerCase())) throw new subdata.error(d, 'invalid', 'property', subdata.function?.name); const error = (0, util_1.inspect)(property.toLowerCase() === 'raw' ? e : e[property], { depth: 4 }); return error; } })); const compiled = await data.reader.compile(catchCode, data); if (compiled.code !== '') results.push(compiled.code); }); if (finallyCode) { const compiled = await d.reader.compile(finallyCode, d); if (compiled.code !== '') results.push(compiled.code); } return results.join(sep); } });