aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Mark <[email protected]>2020-02-27 08:16:41 -0800
committerGravatar GitHub <[email protected]>2020-02-27 08:16:41 -0800
commitb674b3a57c1906f8b4b1dfaf42aa8149e9d3bb8f (patch)
tree19e23c93f3cd24cd285dcf781ed858410db9b98d
parentFix comparison operator when checking token expiration. (diff)
parentMerge pull request #790 from ks129/master (diff)
Merge branch 'master' into channel_constants_check
-rw-r--r--bot/__main__.py2
-rw-r--r--bot/cogs/antimalware.py10
-rw-r--r--bot/cogs/reminders.py17
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."""