summaryrefslogtreecommitdiff
path: root/src/server.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.js')
-rw-r--r--src/server.js37
1 files changed, 35 insertions, 2 deletions
diff --git a/src/server.js b/src/server.js
index 5695344..22b754c 100644
--- a/src/server.js
+++ b/src/server.js
@@ -4,8 +4,18 @@ import {
InteractionType,
verifyKey,
} from 'discord-interactions';
-import { HOT_COMMAND, ROLEPLAY_COMMAND, NSFW_COMMAND } from './commands.js';
-import { getCutePost, getRoleplayPost, getNSFWPost } from './reddit.js';
+import {
+ HOT_COMMAND,
+ ROLEPLAY_COMMAND,
+ NSFW_COMMAND,
+ TOP_COMMAND,
+} from './commands.js';
+import {
+ getCutePost,
+ getRoleplayPost,
+ getNSFWPost,
+ getTopPost,
+} from './reddit.js';
class JSONResponse extends Response {
constructor(body, init) {
@@ -165,6 +175,29 @@ router.post('/', async (request, environment) => {
}
}
+ case TOP_COMMAND.name.toLowerCase(): {
+ try {
+ const time = interaction.data.options?.[0]?.value || 'day';
+ const post = await getTopPost(time);
+ const embed = createPostEmbed(post);
+
+ return new JSONResponse({
+ type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
+ data: {
+ embeds: [embed],
+ },
+ });
+ } catch {
+ return new JSONResponse({
+ type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
+ data: {
+ content: '❌ No top posts found. Try again later!',
+ flags: 64,
+ },
+ });
+ }
+ }
+
default:
return new JSONResponse({ error: 'Unknown Type' }, { status: 400 });
}