From ad97bae9f7ba5ae66bd615ee267b686e31114c4e Mon Sep 17 00:00:00 2001 From: zevaryx Date: Sat, 7 May 2022 13:15:34 -0600 Subject: [PATCH 1/3] Change message for post not found --- jarvis/cogs/reddit.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/jarvis/cogs/reddit.py b/jarvis/cogs/reddit.py index f292f78..d0089eb 100644 --- a/jarvis/cogs/reddit.py +++ b/jarvis/cogs/reddit.py @@ -56,7 +56,7 @@ class RedditCog(Cog): fields = [] content = "" og_post = None - if not post.is_self: + if "crosspost_parent_list" in vars(post): og_post = post # noqa: F841 post = await self.api.submission(post.crosspost_parent_list[0]["id"]) await post.load() @@ -76,9 +76,14 @@ class RedditCog(Cog): break if "selftext" in vars(post) and post.selftext: + text = post.selftext + if post.spoiler: + text = "||" + text + "||" content += "\n\n" + post.selftext if len(content) > 900: content = content[:900] + "..." + if post.spoiler: + content += "||" content += f"\n\n[View this post]({url})" if not images and not content: @@ -96,9 +101,7 @@ class RedditCog(Cog): url=url, color=color, ) - base_embed.set_author( - name="u/" + post.author.name, url=author_url, icon_url=author_icon - ) + base_embed.set_author(name="u/" + post.author.name, url=author_url, icon_url=author_icon) base_embed.set_footer( text="Reddit", icon_url="https://www.redditinc.com/assets/images/site/reddit-logo.png" ) @@ -405,7 +408,7 @@ class RedditCog(Cog): await post.load() except (NotFound, Forbidden, Redirect) as e: self.logger.debug(f"Submission {sid} raised {e.__class__.__name__} in post") - await ctx.send("Subreddit may be private, quarantined, or nonexistent.", ephemeral=True) + await ctx.send("Post could not be found.", ephemeral=True) return embeds = await self.post_embeds(post.subreddit, post) From 7c72296cce01e06b56beedfa72f281e0082856be Mon Sep 17 00:00:00 2001 From: zevaryx Date: Sat, 7 May 2022 13:47:39 -0600 Subject: [PATCH 2/3] Allow setting for sending NSFW content to DMs --- jarvis/cogs/reddit.py | 88 ++++++++++++++++++++++++++++++------------- poetry.lock | 4 +- 2 files changed, 64 insertions(+), 28 deletions(-) diff --git a/jarvis/cogs/reddit.py b/jarvis/cogs/reddit.py index d0089eb..fbf996b 100644 --- a/jarvis/cogs/reddit.py +++ b/jarvis/cogs/reddit.py @@ -8,7 +8,7 @@ from asyncpraw.models.reddit.submission import Submission from asyncpraw.models.reddit.submission import Subreddit as Sub from asyncprawcore.exceptions import Forbidden, NotFound, Redirect from jarvis_core.db import q -from jarvis_core.db.models import Subreddit, SubredditFollow +from jarvis_core.db.models import Subreddit, SubredditFollow, UserSetting from naff import Client, Cog, InteractionContext, Permissions from naff.client.utils.misc_utils import get from naff.models.discord.channel import ChannelTypes, GuildText @@ -269,11 +269,15 @@ class RedditCog(Cog): embeds = await self.post_embeds(subreddit, post) if post.over_18 and not ctx.channel.nsfw: - try: - await ctx.author.send(embeds=embeds) - await ctx.send("Hey! Due to content, I had to DM the result to you") - except Exception: - await ctx.send("Hey! Due to content, I cannot share the result") + setting = await UserSetting.find_one( + q(user=ctx.author.id, type="reddit", setting="dm_nsfw") + ) + if setting and setting.value: + try: + await ctx.author.send(embeds=embeds) + except Exception: + pass + await ctx.send("Hey! Due to content, I cannot share the result") else: await ctx.send(embeds=embeds) @@ -317,11 +321,15 @@ class RedditCog(Cog): embeds = await self.post_embeds(subreddit, post) if post.over_18 and not ctx.channel.nsfw: - try: - await ctx.author.send(embeds=embeds) - await ctx.send("Hey! Due to content, I had to DM the result to you") - except Exception: - await ctx.send("Hey! Due to content, I cannot share the result") + setting = await UserSetting.find_one( + q(user=ctx.author.id, type="reddit", setting="dm_nsfw") + ) + if setting and setting.value: + try: + await ctx.author.send(embeds=embeds) + except Exception: + pass + await ctx.send("Hey! Due to content, I cannot share the result") else: await ctx.send(embeds=embeds) @@ -353,11 +361,15 @@ class RedditCog(Cog): embeds = await self.post_embeds(subreddit, post) if post.over_18 and not ctx.channel.nsfw: - try: - await ctx.author.send(embeds=embeds) - await ctx.send("Hey! Due to content, I had to DM the result to you") - except Exception: - await ctx.send("Hey! Due to content, I cannot share the result") + setting = await UserSetting.find_one( + q(user=ctx.author.id, type="reddit", setting="dm_nsfw") + ) + if setting and setting.value: + try: + await ctx.author.send(embeds=embeds) + except Exception: + pass + await ctx.send("Hey! Due to content, I cannot share the result") else: await ctx.send(embeds=embeds) @@ -389,11 +401,15 @@ class RedditCog(Cog): embeds = await self.post_embeds(subreddit, post) if post.over_18 and not ctx.channel.nsfw: - try: - await ctx.author.send(embeds=embeds) - await ctx.send("Hey! Due to content, I had to DM the result to you") - except Exception: - await ctx.send("Hey! Due to content, I cannot share the result") + setting = await UserSetting.find_one( + q(user=ctx.author.id, type="reddit", setting="dm_nsfw") + ) + if setting and setting.value: + try: + await ctx.author.send(embeds=embeds) + except Exception: + pass + await ctx.send("Hey! Due to content, I cannot share the result") else: await ctx.send(embeds=embeds) @@ -413,14 +429,34 @@ class RedditCog(Cog): embeds = await self.post_embeds(post.subreddit, post) if post.over_18 and not ctx.channel.nsfw: - try: - await ctx.author.send(embeds=embeds) - await ctx.send("Hey! Due to content, I had to DM the result to you") - except Exception: - await ctx.send("Hey! Due to content, I cannot share the result") + setting = await UserSetting.find_one( + q(user=ctx.author.id, type="reddit", setting="dm_nsfw") + ) + if setting and setting.value: + try: + await ctx.author.send(embeds=embeds) + except Exception: + pass + await ctx.send("Hey! Due to content, I cannot share the result") else: await ctx.send(embeds=embeds) + @reddit.subcommand( + sub_cmd_name="dm_nsfw", sub_cmd_description="DM NSFW posts if channel isn't NSFW" + ) + @slash_option(name="dm", description="Send DM?", opt_type=OptionTypes.BOOLEAN, required=True) + async def _reddit_dm(self, ctx: InteractionContext, dm: bool) -> None: + setting = await UserSetting.find_one( + q(user=ctx.author.id, type="reddit", setting="dm_nsfw") + ) + if not setting: + setting = UserSetting.find_one( + q(user=ctx.author.id, type="reddit", setting="dm_nsfw", value=dm) + ) + setting.value = dm + await setting.commit() + await ctx.send(f"Reddit DM NSFW setting is now set to {dm}", ephemeral=True) + def setup(bot: Client) -> None: """Add RedditCog to JARVIS""" diff --git a/poetry.lock b/poetry.lock index 2697614..59e1b34 100644 --- a/poetry.lock +++ b/poetry.lock @@ -307,7 +307,7 @@ python-versions = ">=3.5" [[package]] name = "jarvis-core" -version = "0.9.2" +version = "0.10.1" description = "JARVIS core" category = "main" optional = false @@ -328,7 +328,7 @@ umongo = "^3.1.0" type = "git" url = "https://git.zevaryx.com/stark-industries/jarvis/jarvis-core.git" reference = "main" -resolved_reference = "83117c1b3c5540acadeac3005f4d8e69cbf743fc" +resolved_reference = "06a6dd8434b42cd4df7ee073eedbe2a3430ab379" [[package]] name = "jinxed" From 256eb0d96d376a92d4209b9374eb74e4a80babd3 Mon Sep 17 00:00:00 2001 From: zevaryx Date: Sat, 7 May 2022 13:51:53 -0600 Subject: [PATCH 3/3] Fix object instantiation --- jarvis/cogs/reddit.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/jarvis/cogs/reddit.py b/jarvis/cogs/reddit.py index fbf996b..d397877 100644 --- a/jarvis/cogs/reddit.py +++ b/jarvis/cogs/reddit.py @@ -450,9 +450,7 @@ class RedditCog(Cog): q(user=ctx.author.id, type="reddit", setting="dm_nsfw") ) if not setting: - setting = UserSetting.find_one( - q(user=ctx.author.id, type="reddit", setting="dm_nsfw", value=dm) - ) + setting = UserSetting(user=ctx.author.id, type="reddit", setting="dm_nsfw", value=dm) setting.value = dm await setting.commit() await ctx.send(f"Reddit DM NSFW setting is now set to {dm}", ephemeral=True)