diff options
Diffstat (limited to '')
| -rw-r--r-- | bot/__main__.py | 2 | ||||
| -rw-r--r-- | bot/cogs/antimalware.py | 10 | ||||
| -rw-r--r-- | bot/cogs/reminders.py | 17 | 
3 files changed, 20 insertions, 9 deletions
| diff --git a/bot/__main__.py b/bot/__main__.py index 79f89b467..d21a1bcbc 100644 --- a/bot/__main__.py +++ b/bot/__main__.py @@ -10,7 +10,7 @@ from bot.bot import Bot  from bot.constants import Bot as BotConfig, DEBUG_MODE  sentry_logging = LoggingIntegration( -    level=logging.TRACE, +    level=logging.DEBUG,      event_level=logging.WARNING  ) diff --git a/bot/cogs/antimalware.py b/bot/cogs/antimalware.py index 28e3e5d96..9e9e81364 100644 --- a/bot/cogs/antimalware.py +++ b/bot/cogs/antimalware.py @@ -4,7 +4,7 @@ from discord import Embed, Message, NotFound  from discord.ext.commands import Cog  from bot.bot import Bot -from bot.constants import AntiMalware as AntiMalwareConfig, Channels, URLs +from bot.constants import AntiMalware as AntiMalwareConfig, Channels, STAFF_ROLES, URLs  log = logging.getLogger(__name__) @@ -18,7 +18,13 @@ class AntiMalware(Cog):      @Cog.listener()      async def on_message(self, message: Message) -> None:          """Identify messages with prohibited attachments.""" -        if not message.attachments: +        # Return when message don't have attachment and don't moderate DMs +        if not message.attachments or not message.guild: +            return + +        # Check if user is staff, if is, return +        # Since we only care that roles exist to iterate over, check for the attr rather than a User/Member instance +        if hasattr(message.author, "roles") and any(role.id in STAFF_ROLES for role in message.author.roles):              return          embed = Embed() diff --git a/bot/cogs/reminders.py b/bot/cogs/reminders.py index a642cbfdb..041791056 100644 --- a/bot/cogs/reminders.py +++ b/bot/cogs/reminders.py @@ -46,7 +46,7 @@ class Reminders(Scheduler, Cog):          loop = asyncio.get_event_loop()          for reminder in response: -            is_valid, *_ = self.ensure_valid_reminder(reminder) +            is_valid, *_ = self.ensure_valid_reminder(reminder, cancel_task=False)              if not is_valid:                  continue @@ -59,7 +59,11 @@ class Reminders(Scheduler, Cog):              else:                  self.schedule_task(loop, reminder["id"], reminder) -    def ensure_valid_reminder(self, reminder: dict) -> t.Tuple[bool, discord.User, discord.TextChannel]: +    def ensure_valid_reminder( +        self, +        reminder: dict, +        cancel_task: bool = True +    ) -> t.Tuple[bool, discord.User, discord.TextChannel]:          """Ensure reminder author and channel can be fetched otherwise delete the reminder."""          user = self.bot.get_user(reminder['author'])          channel = self.bot.get_channel(reminder['channel_id']) @@ -70,7 +74,7 @@ class Reminders(Scheduler, Cog):                  f"Reminder {reminder['id']} invalid: "                  f"User {reminder['author']}={user}, Channel {reminder['channel_id']}={channel}."              ) -            asyncio.create_task(self._delete_reminder(reminder['id'])) +            asyncio.create_task(self._delete_reminder(reminder['id'], cancel_task))          return is_valid, user, channel @@ -111,12 +115,13 @@ class Reminders(Scheduler, Cog):          # Now we can begone with it from our schedule list.          self.cancel_task(reminder_id) -    async def _delete_reminder(self, reminder_id: str) -> None: +    async def _delete_reminder(self, reminder_id: str, cancel_task: bool = True) -> None:          """Delete a reminder from the database, given its ID, and cancel the running task."""          await self.bot.api_client.delete('bot/reminders/' + str(reminder_id)) -        # Now we can remove it from the schedule list -        self.cancel_task(reminder_id) +        if cancel_task: +            # Now we can remove it from the schedule list +            self.cancel_task(reminder_id)      async def _reschedule_reminder(self, reminder: dict) -> None:          """Reschedule a reminder object.""" | 
