From 57c9f7ce45b40badeb13ed1e57a99b52cb8465f7 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sat, 6 Sep 2025 17:00:32 -0700 Subject: feat: Add NSFW command --- src/reddit.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'src/reddit.js') diff --git a/src/reddit.js b/src/reddit.js index 36cb154..183faca 100644 --- a/src/reddit.js +++ b/src/reddit.js @@ -35,10 +35,17 @@ function filterPostsByFlair(posts, excludedFlairs = [], includedFlairs = []) { if (!hasMedia) return false; - if (post.over_18 || post.link_flair_text?.toLowerCase().includes('nsfw')) - return false; - const postFlair = post.link_flair_text?.toLowerCase() || ''; + const isNSFW = post.over_18 || postFlair.includes('nsfw'); + + if ( + includedFlairs.length > 0 && + includedFlairs.some((flair) => flair.toLowerCase() === 'nsfw') + ) + if (includedFlairs.some((flair) => flair.toLowerCase() === 'nsfw')) + return isNSFW; + + if (isNSFW) return false; if (includedFlairs.length > 0) return includedFlairs.some((flair) => @@ -55,6 +62,9 @@ function filterPostsByFlair(posts, excludedFlairs = [], includedFlairs = []) { } function getRandomPost(posts) { + if (posts.length === 0) + throw new Error('No posts found matching the criteria'); + const randomIndex = Math.floor(Math.random() * posts.length); return posts[randomIndex]; @@ -74,4 +84,11 @@ export async function getRoleplayPost() { return getRandomPost(filteredPosts); } +export async function getNSFWPost() { + const posts = await fetchRedditPosts(); + const filteredPosts = filterPostsByFlair(posts, [], ['nsfw']); + + return getRandomPost(filteredPosts); +} + export const redditURL = 'https://www.reddit.com/r/okbuddyumamusume/hot.json'; -- cgit v1.2.3