diff options
Diffstat (limited to 'bot/cogs/moderation/scheduler.py')
| -rw-r--r-- | bot/cogs/moderation/scheduler.py | 20 | 
1 files changed, 11 insertions, 9 deletions
| diff --git a/bot/cogs/moderation/scheduler.py b/bot/cogs/moderation/scheduler.py index 49b61f35e..2dd0bf40e 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 @@ -83,14 +84,11 @@ class InfractionScheduler(Scheduler):          infr_type = infraction["type"]          icon = utils.INFRACTION_ICONS[infr_type][0]          reason = infraction["reason"] -        expiry = infraction["expires_at"] +        expiry = time.format_infraction_with_duration(infraction["expires_at"])          id_ = infraction['id']          log.trace(f"Applying {infr_type} infraction #{id_} to {user}.") -        if expiry: -            expiry = time.format_infraction(expiry) -          # Default values for the confirmation message and mod log.          confirm_msg = f":ok_hand: applied" @@ -149,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.") @@ -327,12 +329,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. | 
