diff options
| -rw-r--r-- | bot/cogs/moderation/modlog.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/bot/cogs/moderation/modlog.py b/bot/cogs/moderation/modlog.py index 98d9c546f..8dea44efe 100644 --- a/bot/cogs/moderation/modlog.py +++ b/bot/cogs/moderation/modlog.py @@ -782,15 +782,32 @@ class ModLog(Cog, name="ModLog"): # "overwrite" values_changed; in practice there will never even be anything to overwrite. diff_values = {**diff.get("values_changed", {}), **diff.get("type_changes", {})} + icon = Icons.voice_state_blue + colour = Colour.blurple() changes = [] + for attr, values in diff_values.items(): - if not attr: # Not sure why, but it happens + if not attr: # Not sure why, but it happens. continue - attr = attr[5:] # Remove "root." prefix + old = values["old_value"] + new = values["new_value"] + + attr = attr[5:] # Remove "root." prefix. attr = VOICE_STATE_ATTRIBUTES.get(attr, attr.replace("_", " ").capitalize()) - changes.append(f"**{attr}:** `{values['old_value']}` **→** `{values['new_value']}`") + changes.append(f"**{attr}:** `{old}` **→** `{new}`") + + # Set the embed icon and colour depending on which attribute changed. + if any(name in attr for name in ("Channel", "deaf", "mute")): + if new is None or new is True: + # Left a channel or was muted/deafened. + icon = Icons.voice_state_red + colour = Colours.soft_red + elif old is None or old is True: + # Joined a channel or was unmuted/undeafened. + icon = Icons.voice_state_green + colour = Colours.soft_green if not changes: return @@ -799,8 +816,8 @@ class ModLog(Cog, name="ModLog"): message = f"**{member}** (`{member.id}`)\n{message}" await self.send_log_message( - icon_url=Icons.user_update, - colour=Colour.blurple(), + icon_url=icon, + colour=colour, title="Voice state updated", text=message, thumbnail=member.avatar_url_as(static_format="png"), |