diff options
| author | 2019-01-11 22:39:15 -0500 | |
|---|---|---|
| committer | 2019-01-11 22:39:15 -0500 | |
| commit | 4bc92be7c4831fa3b714d7091700d587f8f62373 (patch) | |
| tree | f499b87dcd72d746377382dbb66ae9408bdb24e0 | |
| parent | Merge pull request #269 from python-discord/disable-rich-embed-filter (diff) | |
Add edit delta to modlog for multi-edit messages
To help with self-bot detection, if a message has been previously edited, generate a human-readable delta between the last edit and the new one
Use message timestamp for modlog embeds generated during on_message event
Visually separate send_log_message kwargs to make them easier to read
| -rw-r--r-- | bot/cogs/modlog.py | 47 | 
1 files changed, 39 insertions, 8 deletions
diff --git a/bot/cogs/modlog.py b/bot/cogs/modlog.py index 06f81cb36..bded3baa0 100644 --- a/bot/cogs/modlog.py +++ b/bot/cogs/modlog.py @@ -104,9 +104,19 @@ class ModLog:                  self._ignored[event].append(item)      async def send_log_message( -            self, icon_url: Optional[str], colour: Colour, title: Optional[str], text: str, -            thumbnail: str = None, channel_id: int = Channels.modlog, ping_everyone: bool = False, -            files: List[File] = None, content: str = None, additional_embeds: List[Embed] = None, +            self, +            icon_url: Optional[str], +            colour: Colour, +            title: Optional[str], +            text: str, +            thumbnail: str = None, +            channel_id: int = Channels.modlog, +            ping_everyone: bool = False, +            files: List[File] = None, +            content: str = None, +            additional_embeds: List[Embed] = None, +            timestamp_override: datetime.datetime = None, +            footer_override: str = None,      ):          embed = Embed(description=text) @@ -114,7 +124,14 @@ class ModLog:              embed.set_author(name=title, icon_url=icon_url)          embed.colour = colour -        embed.timestamp = datetime.datetime.utcnow() + +        if timestamp_override: +            embed.timestamp = timestamp_override +        else: +            embed.timestamp = datetime.datetime.utcnow() + +        if footer_override: +            embed.set_footer(text=footer_override)          if thumbnail is not None:              embed.set_thumbnail(url=thumbnail) @@ -676,14 +693,28 @@ class ModLog:                  f"{after.clean_content}"              ) +        if before.edited_at: +            # Message was previously edited, to assist with self-bot detection, use the edited_at +            # datetime as the baseline and create a human-readable delta between this edit event +            # and the last time the message was edited +            timestamp = before.edited_at +            delta = humanize_delta(relativedelta(after.edited_at, before.edited_at)) +            footer = f"Last edited {delta} ago" +        else: +            # Message was not previously edited, use the created_at datetime as the baseline, no +            # delta calculation needed +            timestamp = before.created_at +            footer = None + +        print(timestamp, footer)          await self.send_log_message( -            Icons.message_edit, Colour.blurple(), "Message edited (Before)", -            before_response, channel_id=Channels.message_log +            Icons.message_edit, Colour.blurple(), "Message edited (Before)", before_response, +            channel_id=Channels.message_log, timestamp_override=timestamp, footer_override=footer          )          await self.send_log_message( -            Icons.message_edit, Colour.blurple(), "Message edited (After)", -            after_response, channel_id=Channels.message_log +            Icons.message_edit, Colour.blurple(), "Message edited (After)", after_response, +            channel_id=Channels.message_log, timestamp_override=after.edited_at          )      async def on_raw_message_edit(self, event: RawMessageUpdateEvent):  |