summaryrefslogtreecommitdiff
path: root/src/server.js
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-09-07 01:55:42 -0700
committerFuwn <[email protected]>2025-09-07 01:55:42 -0700
commitc896ab4607654a8b3ea3192919ee10dd7d62286f (patch)
treed9698ed6f35d17842e02262d1fe9b81826893cba /src/server.js
parentchore: Fix package description (diff)
downloadumabotdiscord-c896ab4607654a8b3ea3192919ee10dd7d62286f.tar.xz
umabotdiscord-c896ab4607654a8b3ea3192919ee10dd7d62286f.zip
feat: Add top command
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 });
}