@jadl/cmd
Version:
A command handler for JADL
29 lines (28 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Targets = void 0;
const Decorators_1 = require("../../utils/Decorators");
const v9_1 = require("discord-api-types/v9");
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
const createTargetDecorator = (prop) => {
return Decorators_1.Decorators.createParameterDecorator(() => {
return (int) => {
const resolved = int.data.resolved;
if (int.data.type !== v9_1.ApplicationCommandType.Message &&
int.data.type !== v9_1.ApplicationCommandType.User) {
throw new Error("Used an @Target decorator when the command type doesn't support targets");
}
if (!int.data.target_id)
throw new Error('Used @Target and no target_id was provided');
if (!resolved)
throw new Error('Used @Target and no objects were resolved');
const resolvedTarget = prop in resolved ? resolved?.[prop]?.[int.data.target_id] : undefined;
return resolvedTarget;
};
});
};
exports.Targets = {
User: createTargetDecorator('users'),
Member: createTargetDecorator('members'),
Message: createTargetDecorator('messages')
};