summaryrefslogtreecommitdiff
path: root/src/server.js
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-09-06 17:00:32 -0700
committerFuwn <[email protected]>2025-09-06 17:00:32 -0700
commit57c9f7ce45b40badeb13ed1e57a99b52cb8465f7 (patch)
tree3089a706daae73e8aad781b49b1bfab10eed0a15 /src/server.js
parentci(Actions): Remove test requirement for release (diff)
downloadumabotdiscord-57c9f7ce45b40badeb13ed1e57a99b52cb8465f7.tar.xz
umabotdiscord-57c9f7ce45b40badeb13ed1e57a99b52cb8465f7.zip
feat: Add NSFW command
Diffstat (limited to 'src/server.js')
-rw-r--r--src/server.js92
1 files changed, 72 insertions, 20 deletions
diff --git a/src/server.js b/src/server.js
index b505f31..5695344 100644
--- a/src/server.js
+++ b/src/server.js
@@ -4,8 +4,8 @@ import {
InteractionType,
verifyKey,
} from 'discord-interactions';
-import { HOT_COMMAND, ROLEPLAY_COMMAND } from './commands.js';
-import { getCutePost, getRoleplayPost } from './reddit.js';
+import { HOT_COMMAND, ROLEPLAY_COMMAND, NSFW_COMMAND } from './commands.js';
+import { getCutePost, getRoleplayPost, getNSFWPost } from './reddit.js';
class JSONResponse extends Response {
constructor(body, init) {
@@ -90,27 +90,79 @@ router.post('/', async (request, environment) => {
if (interaction.type === InteractionType.APPLICATION_COMMAND) {
switch (interaction.data.name.toLowerCase()) {
case HOT_COMMAND.name.toLowerCase(): {
- const post = await getCutePost();
- const embed = createPostEmbed(post);
-
- return new JSONResponse({
- type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
- data: {
- embeds: [embed],
- },
- });
+ try {
+ const post = await getCutePost();
+ 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 posts found. Try again later!',
+ flags: 64,
+ },
+ });
+ }
}
case ROLEPLAY_COMMAND.name.toLowerCase(): {
- const post = await getRoleplayPost();
- const embed = createPostEmbed(post);
-
- return new JSONResponse({
- type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
- data: {
- embeds: [embed],
- },
- });
+ try {
+ const post = await getRoleplayPost();
+ 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 roleplay posts found. Try again later!',
+ flags: 64,
+ },
+ });
+ }
+ }
+
+ case NSFW_COMMAND.name.toLowerCase(): {
+ if (!interaction.channel_id || !interaction.channel?.nsfw) {
+ return new JSONResponse({
+ type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
+ data: {
+ content: '❌ This command can only be used in NSFW channels.',
+ flags: 64,
+ },
+ });
+ }
+
+ try {
+ const post = await getNSFWPost();
+ 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 NSFW posts found. Try again later!',
+ flags: 64,
+ },
+ });
+ }
}
default: