diff options
Diffstat (limited to 'bot/cogs/moderation/scheduler.py')
| -rw-r--r-- | bot/cogs/moderation/scheduler.py | 20 | 
1 files changed, 12 insertions, 8 deletions
diff --git a/bot/cogs/moderation/scheduler.py b/bot/cogs/moderation/scheduler.py index 3e0968121..01e4b1fe7 100644 --- a/bot/cogs/moderation/scheduler.py +++ b/bot/cogs/moderation/scheduler.py @@ -7,10 +7,11 @@ from gettext import ngettext  import dateutil.parser  import discord -from discord.ext.commands import Bot, Context +from discord.ext.commands import Context  from bot import constants  from bot.api import ResponseCodeError +from bot.bot import Bot  from bot.constants import Colours, STAFF_CHANNELS  from bot.utils import time  from bot.utils.scheduling import Scheduler @@ -113,8 +114,8 @@ class InfractionScheduler(Scheduler):                  dm_result = ":incoming_envelope: "                  dm_log_text = "\nDM: Sent"              else: +                dm_result = f"{constants.Emojis.failmail} "                  dm_log_text = "\nDM: **Failed**" -                log_content = ctx.author.mention          if infraction["actor"] == self.bot.user.id:              log.trace( @@ -146,14 +147,18 @@ class InfractionScheduler(Scheduler):                  if expiry:                      # Schedule the expiration of the infraction.                      self.schedule_task(ctx.bot.loop, infraction["id"], infraction) -            except discord.Forbidden: +            except discord.HTTPException as e:                  # Accordingly display that applying the infraction failed.                  confirm_msg = f":x: failed to apply"                  expiry_msg = ""                  log_content = ctx.author.mention                  log_title = "failed to apply" -                log.warning(f"Failed to apply {infr_type} infraction #{id_} to {user}.") +                log_msg = f"Failed to apply {infr_type} infraction #{id_} to {user}" +                if isinstance(e, discord.Forbidden): +                    log.warning(f"{log_msg}: bot lacks permissions.") +                else: +                    log.exception(log_msg)          # Send a confirmation message to the invoking context.          log.trace(f"Sending infraction #{id_} confirmation message.") @@ -250,8 +255,7 @@ class InfractionScheduler(Scheduler):          if log_text.get("DM") == "Sent":              dm_emoji = ":incoming_envelope: "          elif "DM" in log_text: -            # Mention the actor because the DM failed to send. -            log_content = ctx.author.mention +            dm_emoji = f"{constants.Emojis.failmail} "          # Accordingly display whether the pardon failed.          if "Failure" in log_text: @@ -324,12 +328,12 @@ class InfractionScheduler(Scheduler):                      f"Attempted to deactivate an unsupported infraction #{id_} ({type_})!"                  )          except discord.Forbidden: -            log.warning(f"Failed to deactivate infraction #{id_} ({type_}): bot lacks permissions") +            log.warning(f"Failed to deactivate infraction #{id_} ({type_}): bot lacks permissions.")              log_text["Failure"] = f"The bot lacks permissions to do this (role hierarchy?)"              log_content = mod_role.mention          except discord.HTTPException as e:              log.exception(f"Failed to deactivate infraction #{id_} ({type_})") -            log_text["Failure"] = f"HTTPException with code {e.code}." +            log_text["Failure"] = f"HTTPException with status {e.status} and code {e.code}."              log_content = mod_role.mention          # Check if the user is currently being watched by Big Brother.  |