From b6b6653416b17350e9028503b199c178856d2697 Mon Sep 17 00:00:00 2001 From: Scriptim Date: Tue, 7 Sep 2021 12:29:12 +0200 Subject: [PATCH 1/4] Filter NSFW posts in Reddit integration --- integrations/reddit/cog.py | 4 ++++ integrations/reddit/settings.py | 1 + 2 files changed, 5 insertions(+) diff --git a/integrations/reddit/cog.py b/integrations/reddit/cog.py index 92dcba21c..f277e39ed 100644 --- a/integrations/reddit/cog.py +++ b/integrations/reddit/cog.py @@ -56,10 +56,14 @@ async def fetch_reddit_posts(subreddit: str, limit: int) -> Optional[List[dict]] data = (await response.json())["data"] + filter_nsfw = await RedditSettings.filter_nsfw.get() posts: List[dict] = [] for post in data["children"]: # t3 = link if post["kind"] == "t3" and post["data"].get("post_hint") == "image": + if post["data"]["over_18"] and filter_nsfw: + continue + posts.append( { "id": post["data"]["id"], diff --git a/integrations/reddit/settings.py b/integrations/reddit/settings.py index af2a19c5d..62e2b85ab 100644 --- a/integrations/reddit/settings.py +++ b/integrations/reddit/settings.py @@ -4,3 +4,4 @@ class RedditSettings(Settings): interval = 4 limit = 4 + filter_nsfw = True From 04f412d5dfa8c60fc2a737455da11afeb8f08dc5 Mon Sep 17 00:00:00 2001 From: Scriptim Date: Tue, 7 Sep 2021 12:47:26 +0200 Subject: [PATCH 2/4] Make Reddit NSFW filter configurable --- integrations/reddit/cog.py | 17 +++++++++++++++++ integrations/reddit/translations/en.yml | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/integrations/reddit/cog.py b/integrations/reddit/cog.py index f277e39ed..1335c2ebe 100644 --- a/integrations/reddit/cog.py +++ b/integrations/reddit/cog.py @@ -243,6 +243,23 @@ async def reddit_limit(self, ctx: Context, limit: int): await reply(ctx, embed=embed) await send_to_changelog(ctx.guild, t.log_reddit_limit_set(limit)) + @reddit.command(name="nsfw_filter", aliases=["nsfw"]) + @RedditPermission.write.check + async def reddit_nsfw_filter(self, ctx: Context, enabled: bool): + """ + enable/disable nsfw filter for posts + """ + + embed = Embed(title=t.reddit, colour=Colors.Reddit) + await RedditSettings.nsfw_filter.set(enabled) + if enabled: + embed.description = t.nsfw_filter_now_enabled + await send_to_changelog(ctx.guild, t.log_nsfw_filter_now_enabled) + else: + embed.description = t.nsfw_filter_now_disabled + await send_to_changelog(ctx.guild, t.log_nsfw_filter_now_disabled) + await reply(ctx, embed=embed) + @reddit.command(name="trigger", aliases=["t"]) @RedditPermission.trigger.check async def reddit_trigger(self, ctx: Context): diff --git a/integrations/reddit/translations/en.yml b/integrations/reddit/translations/en.yml index 0dd8c5459..2ec8bfb3e 100644 --- a/integrations/reddit/translations/en.yml +++ b/integrations/reddit/translations/en.yml @@ -35,3 +35,7 @@ reddit_limit_set: "Reddit limit has been updated. :white_check_mark:" log_reddit_limit_set: "**Reddit limit** has been **set** to {}." could_not_fetch: Could not fetch reddit posts of r/{}. cannot_send: Reddit integration cannot send messages to {}. +nsfw_filter_now_enabled: "Reddit NSFW filter has been enabled." +log_nsfw_filter_now_enabled: "**Reddit NSFW filter** has been **enabled**." +nsfw_filter_now_disabled: "Reddit NSFW filter has been disabled." +log_nsfw_filter_now_disabled: "**Reddit NSFW filter** has been **disabled**." From 668fbf6d5d43eef313cae4469fe697f039488ac5 Mon Sep 17 00:00:00 2001 From: TheCataliasTNT2k <44349750+TheCataliasTNT2k@users.noreply.github.com> Date: Tue, 14 Sep 2021 19:50:13 +0200 Subject: [PATCH 3/4] fixed typo in attribute name "nsfw_filter" to "filter_nsfw" --- integrations/reddit/cog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrations/reddit/cog.py b/integrations/reddit/cog.py index 1335c2ebe..a4ed89233 100644 --- a/integrations/reddit/cog.py +++ b/integrations/reddit/cog.py @@ -251,7 +251,7 @@ async def reddit_nsfw_filter(self, ctx: Context, enabled: bool): """ embed = Embed(title=t.reddit, colour=Colors.Reddit) - await RedditSettings.nsfw_filter.set(enabled) + await RedditSettings.filter_nsfw.set(enabled) if enabled: embed.description = t.nsfw_filter_now_enabled await send_to_changelog(ctx.guild, t.log_nsfw_filter_now_enabled) From e2fff8b9d0d094feb4c02ba4fdafab40dc7420b9 Mon Sep 17 00:00:00 2001 From: Scriptim Date: Sat, 18 Sep 2021 10:59:33 +0200 Subject: [PATCH 4/4] Show NSFW filter status in .reddit embed --- integrations/reddit/cog.py | 3 +++ integrations/reddit/translations/en.yml | 1 + 2 files changed, 4 insertions(+) diff --git a/integrations/reddit/cog.py b/integrations/reddit/cog.py index a4ed89233..620f5b9b3 100644 --- a/integrations/reddit/cog.py +++ b/integrations/reddit/cog.py @@ -162,6 +162,9 @@ async def reddit(self, ctx: Context): limit = await RedditSettings.limit.get() embed.add_field(name=t.limit, value=str(limit)) + filter_nsfw = await RedditSettings.filter_nsfw.get() + embed.add_field(name=t.nsfw_filter, value=tg.enabled if filter_nsfw else tg.disabled, inline=False) + out = [] async for reddit_channel in await db.stream(select(RedditChannel)): # type: RedditChannel text_channel: Optional[TextChannel] = self.bot.get_channel(reddit_channel.channel) diff --git a/integrations/reddit/translations/en.yml b/integrations/reddit/translations/en.yml index 2ec8bfb3e..5620f09d5 100644 --- a/integrations/reddit/translations/en.yml +++ b/integrations/reddit/translations/en.yml @@ -35,6 +35,7 @@ reddit_limit_set: "Reddit limit has been updated. :white_check_mark:" log_reddit_limit_set: "**Reddit limit** has been **set** to {}." could_not_fetch: Could not fetch reddit posts of r/{}. cannot_send: Reddit integration cannot send messages to {}. +nsfw_filter: "NSFW filter" nsfw_filter_now_enabled: "Reddit NSFW filter has been enabled." log_nsfw_filter_now_enabled: "**Reddit NSFW filter** has been **enabled**." nsfw_filter_now_disabled: "Reddit NSFW filter has been disabled."