aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2017-05-04 04:26:11 -0400
committerRapptz <[email protected]>2017-05-04 04:35:02 -0400
commit86bfcdd1292882fc29346c71edd7177f2cf7b736 (patch)
treea16cd0971ea6ef4e524554bbf371cc3323e69d7c
parentExplicitly close UDP sockets when re-creating them. (diff)
downloaddiscord.py-86bfcdd1292882fc29346c71edd7177f2cf7b736.tar.xz
discord.py-86bfcdd1292882fc29346c71edd7177f2cf7b736.zip
Add support for message delete audit log action type.
-rw-r--r--discord/audit_logs.py10
-rw-r--r--discord/enums.py5
-rw-r--r--docs/api.rst15
3 files changed, 29 insertions, 1 deletions
diff --git a/discord/audit_logs.py b/discord/audit_logs.py
index cbd3d3ac..8ac5722b 100644
--- a/discord/audit_logs.py
+++ b/discord/audit_logs.py
@@ -213,6 +213,13 @@ class AuditLogEntry:
if self.action is enums.AuditLogAction.member_prune:
# member prune has two keys with useful information
self.extra = type('_AuditLogProxy', (), {k: int(v) for k, v in self.extra.items()})()
+ elif self.action is enums.AuditLogAction.message_delete:
+ channel_id = int(self.extra['channel_id'])
+ elems = {
+ 'count': int(self.extra['count']),
+ 'channel': self.guild.get_channel(channel_id) or discord.Object(id=channel_id)
+ }
+ self.extra = type('_AuditLogProxy', (), elems)()
elif self.action.name.startswith('overwrite_'):
# the overwrite_ actions have a dict with some information
instance_id = int(self.extra['id'])
@@ -317,3 +324,6 @@ class AuditLogEntry:
def _convert_target_emoji(self, target_id):
return self._state.get_emoji(target_id) or Object(id=target_id)
+
+ def _convert_target_message(self, target_id):
+ return self._get_member(target_id)
diff --git a/discord/enums.py b/discord/enums.py
index d089b799..962de1dc 100644
--- a/discord/enums.py
+++ b/discord/enums.py
@@ -146,6 +146,7 @@ class AuditLogAction(Enum):
emoji_create = 60
emoji_update = 61
emoji_delete = 62
+ message_delete = 72
@property
def category(self):
@@ -175,6 +176,7 @@ class AuditLogAction(Enum):
AuditLogAction.emoji_create: AuditLogActionCategory.create,
AuditLogAction.emoji_update: AuditLogActionCategory.update,
AuditLogAction.emoji_delete: AuditLogActionCategory.delete,
+ AuditLogAction.message_delete: AuditLogActionCategory.delete,
}
return lookup[self]
@@ -197,7 +199,8 @@ class AuditLogAction(Enum):
return 'webhook'
elif v < 70:
return 'emoji'
-
+ elif v < 80:
+ return 'message'
def try_enum(cls, val):
"""A function that tries to turn the value into enum ``cls``.
diff --git a/docs/api.rst b/docs/api.rst
index 509c10df..ae8ba412 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -1082,6 +1082,21 @@ All enumerations are subclasses of `enum`_.
- :attr:`~AuditLogDiff.name`
+ .. attribute:: message_delete
+
+ A message was deleted by a moderator. Note that this
+ only triggers if the message was deleted by either bulk delete
+ or deletion by someone other than the author.
+
+ When this is the action, the type of :attr:`~AuditLogEntry.target` is
+ the :class:`Member` or :class:`User` who had their message deleted.
+
+ When this is the action, the type of :attr:`~AuditLogEntry.extra` is
+ set to an unspecified proxy object with two attributes:
+
+ - ``count``: An integer specifying how many messages were deleted.
+ - ``channel``: A :class:`TextChannel` or :class:`Object` with the channel ID where the message got deleted.
+
.. class:: AuditLogActionCategory