diff options
Diffstat (limited to 'src/server.js')
| -rw-r--r-- | src/server.js | 37 |
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 }); } |