dressed
Version:
A sleek, serverless-ready Discord bot framework.
126 lines • 4.91 kB
JavaScript
import { InteractionResponseType, MessageFlags, Routes, } from "discord-api-types/v10";
import { callDiscord } from "../../utils/call-discord.js";
import { botEnv } from "../../utils/env.js";
export const baseInteractionMethods = (interaction) => {
var _a, _b;
return ({
async reply(data) {
var _a;
if (typeof data === "string") {
data = { content: data };
}
if (data.ephemeral) {
const flags = ((_a = data.flags) !== null && _a !== void 0 ? _a : 0) | MessageFlags.Ephemeral;
data.flags = flags;
}
const files = data.files;
delete data.files;
const res = await callDiscord(Routes.interactionCallback(interaction.id, interaction.token), {
method: "POST",
body: {
type: InteractionResponseType.ChannelMessageWithSource,
data,
},
params: data.with_response
? {
with_response: data.with_response,
}
: undefined,
files,
});
return data.with_response ? res.json() : null;
},
async deferReply(data) {
var _a;
if (data === null || data === void 0 ? void 0 : data.ephemeral) {
const flags = ((_a = data.flags) !== null && _a !== void 0 ? _a : 0) | MessageFlags.Ephemeral;
data.flags = flags;
}
const res = await callDiscord(Routes.interactionCallback(interaction.id, interaction.token), {
method: "POST",
body: {
type: InteractionResponseType.DeferredChannelMessageWithSource,
data,
},
params: (data === null || data === void 0 ? void 0 : data.with_response)
? {
with_response: data.with_response,
}
: undefined,
});
return (data === null || data === void 0 ? void 0 : data.with_response) ? res.json() : null;
},
async update(data) {
if (typeof data === "string") {
data = { content: data };
}
const files = data.files;
delete data.files;
await callDiscord(Routes.interactionCallback(interaction.id, interaction.token), {
method: "POST",
body: {
type: InteractionResponseType.UpdateMessage,
data,
},
files,
});
},
async deferUpdate() {
await callDiscord(Routes.interactionCallback(interaction.id, interaction.token), {
method: "POST",
body: {
type: InteractionResponseType.DeferredMessageUpdate,
},
});
},
async editReply(data) {
if (typeof data === "string") {
data = { content: data };
}
const files = data.files;
delete data.files;
await callDiscord(Routes.webhookMessage(botEnv.DISCORD_APP_ID, interaction.token), {
method: "PATCH",
body: data,
files,
});
},
async followUp(data) {
var _a;
if (typeof data === "string") {
data = { content: data };
}
if (data.ephemeral) {
const flags = ((_a = data.flags) !== null && _a !== void 0 ? _a : 0) | MessageFlags.Ephemeral;
data.flags = flags;
}
const files = data.files;
delete data.files;
await callDiscord(Routes.webhook(botEnv.DISCORD_APP_ID, interaction.token), {
method: "POST",
body: data,
files,
});
},
async showModal(data) {
await callDiscord(Routes.interactionCallback(interaction.id, interaction.token), {
method: "POST",
body: {
type: InteractionResponseType.Modal,
data,
},
});
},
async sendChoices(choices) {
await callDiscord(Routes.interactionCallback(interaction.id, interaction.token), {
method: "POST",
body: {
type: InteractionResponseType.ApplicationCommandAutocompleteResult,
data: { choices },
},
});
},
user: (_b = (_a = interaction.member) === null || _a === void 0 ? void 0 : _a.user) !== null && _b !== void 0 ? _b : interaction.user,
});
};
//# sourceMappingURL=responses.js.map