diff options
-rw-r--r-- | bot/exts/info/code_snippets.py | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/bot/exts/info/code_snippets.py b/bot/exts/info/code_snippets.py index 07b1b8a2d..95a0fb014 100644 --- a/bot/exts/info/code_snippets.py +++ b/bot/exts/info/code_snippets.py @@ -255,16 +255,23 @@ class CodeSnippets(Cog): except discord.NotFound: # Don't send snippets if the original message was deleted. return - - if len(message_to_send) > 1000 and message.channel.id != Channels.bot_commands: - # Redirects to #bot-commands if the snippet contents are too long - await self.bot.wait_until_guild_available() - destination = self.bot.get_channel(Channels.bot_commands) - - await message.channel.send( - 'The snippet you tried to send was too long. ' - f'Please see {destination.mention} for the full snippet.' - ) + except discord.Forbidden as e: + # We still want to send snippets when in DMs, but if we're in guild then + # reraise error since that means there's a permissions issue with the bot. + if message.guild: + raise e + + # If we're in a guild, then check if we need to redirect to #bot-commands + if destination.guild: + if len(message_to_send) > 1000 and message.channel.id != Channels.bot_commands: + # Redirects to #bot-commands if the snippet contents are too long + await self.bot.wait_until_guild_available() + destination = self.bot.get_channel(Channels.bot_commands) + + await message.channel.send( + 'The snippet you tried to send was too long. ' + f'Please see {destination.mention} for the full snippet.' + ) await wait_for_deletion( await destination.send(message_to_send), |