hopefully the last dir change

This commit is contained in:
ITOH
2021-05-05 20:06:32 +02:00
parent ee2e263d63
commit 7ff0d242ff
113 changed files with 267 additions and 250 deletions
@@ -0,0 +1,57 @@
import { applicationId, eventHandlers } from "../../bot.ts";
import { cache } from "../../cache.ts";
import { rest } from "../../rest/rest.ts";
import type { DiscordenoInteractionResponse } from "../../types/discordeno/interaction_response.ts";
import { endpoints } from "../../util/constants.ts";
/**
* Send a response to a users slash command. The command data will have the id and token necessary to respond.
* Interaction `tokens` are valid for **15 minutes** and can be used to send followup messages.
*
* NOTE: By default we will suppress mentions. To enable mentions, just pass any mentions object.
*/
export async function sendInteractionResponse(
id: bigint,
token: string,
options: DiscordenoInteractionResponse,
) {
// If its already been executed, we need to send a followup response
if (cache.executedSlashCommands.has(token)) {
return await rest.runMethod(
"post",
endpoints.WEBHOOK(applicationId, token),
{
...options,
},
);
}
// Expire in 15 minutes
cache.executedSlashCommands.add(token);
setTimeout(
() => {
eventHandlers.debug?.(
"loop",
`Running setTimeout in send_interaction_response file.`,
);
cache.executedSlashCommands.delete(token);
},
900000,
);
// If the user wants this as a private message mark it ephemeral
if (options.private) {
options.data = { ...options.data, flags: 64 };
}
// If no mentions are provided, force disable mentions
if (!options.data?.allowedMentions) {
options.data = { ...options.data, allowedMentions: { parse: [] } };
}
return await rest.runMethod(
"post",
endpoints.INTERACTION_ID_TOKEN(id, token),
options,
);
}