dressed
Version:
A sleek, serverless-ready Discord bot framework.
57 lines • 2.15 kB
JavaScript
import { baseInteractionMethods } from "./responses.js";
import { InteractionType } from "discord-api-types/v10";
import { getOption } from "./options.js";
export function createInteraction(interaction) {
if (!interaction.user && interaction.member) {
interaction.user = interaction.member.user;
}
switch (interaction.type) {
case InteractionType.ApplicationCommand: {
return {
...interaction,
...baseInteractionMethods(interaction),
getOption: (name, required) => {
var _a;
return getOption(name, required, "options" in interaction.data
? ((_a = interaction.data.options) !== null && _a !== void 0 ? _a : [])
: [], interaction.data
.resolved);
},
};
}
case InteractionType.ApplicationCommandAutocomplete: {
return {
...interaction,
...baseInteractionMethods(interaction),
getOption: (name) => getOption(name, false, interaction.data.options, interaction.data.resolved),
};
}
case InteractionType.MessageComponent: {
return {
...interaction,
...baseInteractionMethods(interaction),
};
}
case InteractionType.ModalSubmit: {
return {
...interaction,
...baseInteractionMethods(interaction),
getField(custom_id, required) {
const field = interaction.data.components
.flatMap((c) => c.components)
.find((c) => c.custom_id === custom_id);
if (!field) {
if (required)
throw new Error(`Field "${custom_id}" not found`);
return;
}
return field.value;
},
};
}
default: {
return null;
}
}
}
//# sourceMappingURL=interaction.js.map