diff options
author | 2022-12-23 17:17:27 +0100 | |
---|---|---|
committer | 2023-02-19 14:42:20 +0100 | |
commit | 0c10ceb5397eafadbe09a507aa40834670514bd7 (patch) | |
tree | e2eedcf2babfb59bc0eb694590e39363ee7aa83a | |
parent | sync commands upon cog load (diff) |
move running permission checks in a static method
-rw-r--r-- | bot/exts/utilities/bookmark.py | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/bot/exts/utilities/bookmark.py b/bot/exts/utilities/bookmark.py index c86d3474..6a00ba57 100644 --- a/bot/exts/utilities/bookmark.py +++ b/bot/exts/utilities/bookmark.py @@ -121,6 +121,24 @@ class Bookmark(commands.Cog): else: log.info(f"{member} bookmarked {target_message.jump_url} with title '{title}'") + @staticmethod + async def run_permission_check(author: discord.Member | discord.User, channel: discord.TextChannel): + """Check if users have the right to bookmark a message in a particular channel. + + This also notifies users in case they don't have the right to. + """ + permissions = channel.permissions_for(author) + if not permissions.read_messages: + log.info(f"{author} tried to bookmark a message in #{channel} but has no permissions.") + embed = discord.Embed( + title=random.choice(ERROR_REPLIES), + color=Colours.soft_red, + description="You don't have permission to view this channel.", + ) + await channel.send(embed=embed) + return False + return True + @commands.group(name="bookmark", aliases=("bm", "pin"), invoke_without_command=True) @commands.guild_only() @whitelist_override(roles=(Roles.everyone,)) @@ -142,16 +160,7 @@ class Bookmark(commands.Cog): if target_message is None: raise commands.UserInputError(MESSAGE_NOT_FOUND_ERROR) - # Prevent users from bookmarking a message in a channel they don't have access to - permissions = target_message.channel.permissions_for(ctx.author) - if not permissions.read_messages: - log.info(f"{ctx.author} tried to bookmark a message in #{target_message.channel} but has no permissions.") - embed = discord.Embed( - title=random.choice(ERROR_REPLIES), - color=Colours.soft_red, - description="You don't have permission to view this channel.", - ) - await ctx.send(embed=embed) + if not await self.run_permission_check(ctx.author, target_message.channel): return await self.action_bookmark(ctx.channel, ctx.author, target_message, title) |