dressed
Version:
A sleek, serverless-ready Discord bot framework.
44 lines • 1.57 kB
JavaScript
import { logDefer, logError, logWarn } from "../../utils/log.js";
export function createHandlerSetup(options) {
return (items) => async (data, middleware, key = "default") => {
var _a;
const [item, props] = (_a = options.findItem(data, items)) !== null && _a !== void 0 ? _a : [];
let itemMessages = options.itemMessages;
if (typeof itemMessages === "function") {
itemMessages = itemMessages(data);
}
if (!item || !Array.isArray(props)) {
logWarn(itemMessages.noItem);
return;
}
const pendingText = itemMessages.pending(item, props);
logDefer(pendingText);
try {
let handler;
if (key && item.exports) {
handler = item.exports[key];
if (!handler) {
throw new Error(`Unable to find '${String(key)}' in exports`);
}
}
else {
handler = item.run;
}
if (!handler)
throw new Error("Unable to find a handler to execute");
const args = middleware ? await middleware(...props) : props;
await handler(...args);
}
catch (e) {
const text = pendingText.replace("Running", "Failed to run");
if (e instanceof Error) {
logError(`${text} - ${e.message}`);
}
else {
logError(text);
console.error(e);
}
}
};
}
//# sourceMappingURL=index.js.map