aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/audit_logs.py40
-rw-r--r--discord/enums.py2
-rw-r--r--discord/guild.py9
-rw-r--r--discord/http.py2
-rw-r--r--docs/api.rst8
5 files changed, 40 insertions, 21 deletions
diff --git a/discord/audit_logs.py b/discord/audit_logs.py
index 09b1e526..2c8769e6 100644
--- a/discord/audit_logs.py
+++ b/discord/audit_logs.py
@@ -33,6 +33,9 @@ from .invite import Invite
def _transform_verification_level(entry, data):
return enums.try_enum(enums.VerificationLevel, data)
+def _transform_default_notifications(entry, data):
+ return enums.try_enum(enums.NotificationLevel, data)
+
def _transform_explicit_content_filter(entry, data):
return enums.try_enum(enums.ContentFilter, data)
@@ -94,24 +97,25 @@ class AuditLogDiff:
class AuditLogChanges:
TRANSFORMERS = {
- 'verification_level': (None, _transform_verification_level),
- 'explicit_content_filter': (None, _transform_explicit_content_filter),
- 'allow': (None, _transform_permissions),
- 'deny': (None, _transform_permissions),
- 'permissions': (None, _transform_permissions),
- 'id': (None, _transform_snowflake),
- 'color': ('colour', _transform_color),
- 'owner_id': ('owner', _transform_owner_id),
- 'inviter_id': ('inviter', _transform_inviter_id),
- 'channel_id': ('channel', _transform_channel),
- 'afk_channel_id': ('afk_channel', _transform_channel),
- 'system_channel_id': ('system_channel', _transform_channel),
- 'widget_channel_id': ('widget_channel', _transform_channel),
- 'permission_overwrites': ('overwrites', _transform_overwrites),
- 'splash_hash': ('splash', None),
- 'icon_hash': ('icon', None),
- 'avatar_hash': ('avatar', None),
- 'rate_limit_per_user': ('slowmode_delay', None),
+ 'verification_level': (None, _transform_verification_level),
+ 'explicit_content_filter': (None, _transform_explicit_content_filter),
+ 'allow': (None, _transform_permissions),
+ 'deny': (None, _transform_permissions),
+ 'permissions': (None, _transform_permissions),
+ 'id': (None, _transform_snowflake),
+ 'color': ('colour', _transform_color),
+ 'owner_id': ('owner', _transform_owner_id),
+ 'inviter_id': ('inviter', _transform_inviter_id),
+ 'channel_id': ('channel', _transform_channel),
+ 'afk_channel_id': ('afk_channel', _transform_channel),
+ 'system_channel_id': ('system_channel', _transform_channel),
+ 'widget_channel_id': ('widget_channel', _transform_channel),
+ 'permission_overwrites': ('overwrites', _transform_overwrites),
+ 'splash_hash': ('splash', None),
+ 'icon_hash': ('icon', None),
+ 'avatar_hash': ('avatar', None),
+ 'rate_limit_per_user': ('slowmode_delay', None),
+ 'default_message_notifications': ('default_notifications', _transform_default_notifications),
}
def __init__(self, entry, data):
diff --git a/discord/enums.py b/discord/enums.py
index 55d1c73c..a1ebab8b 100644
--- a/discord/enums.py
+++ b/discord/enums.py
@@ -123,7 +123,7 @@ class RelationshipType(Enum):
incoming_request = 3
outgoing_request = 4
-class NotificationLevel(Enum):
+class NotificationLevel(IntEnum):
all_messages = 0
only_mentions = 1
diff --git a/discord/guild.py b/discord/guild.py
index 5d99aa06..0e4c3099 100644
--- a/discord/guild.py
+++ b/discord/guild.py
@@ -748,6 +748,8 @@ class Guild(Hashable):
be owner of the guild to do this.
verification_level: :class:`VerificationLevel`
The new verification level for the guild.
+ default_notifications: :class:`NotificationLevel`
+ The new default notification level for the guild.
vanity_code: str
The new vanity code for the guild.
system_channel: Optional[:class:`TextChannel`]
@@ -799,6 +801,13 @@ class Guild(Hashable):
fields['splash'] = splash
try:
+ default_message_notifications = int(fields.pop('default_notifications'))
+ except (TypeError, KeyError):
+ pass
+ else:
+ fields['default_message_notifications'] = default_message_notifications
+
+ try:
afk_channel = fields.pop('afk_channel')
except KeyError:
pass
diff --git a/discord/http.py b/discord/http.py
index a0784e49..e4c0e55c 100644
--- a/discord/http.py
+++ b/discord/http.py
@@ -565,7 +565,7 @@ class HTTPClient:
def edit_guild(self, guild_id, *, reason=None, **fields):
valid_keys = ('name', 'region', 'icon', 'afk_timeout', 'owner_id',
'afk_channel_id', 'splash', 'verification_level',
- 'system_channel_id')
+ 'system_channel_id', 'default_message_notifications')
payload = {
k: v for k, v in fields.items() if k in valid_keys
diff --git a/docs/api.rst b/docs/api.rst
index ef6cabaf..345fd913 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -855,7 +855,7 @@ All enumerations are subclasses of `enum`_.
.. class:: NotificationLevel
Specifies whether a :class:`Guild` has notifications on for all messages or mentions only by default.
-
+
..attribute:: all_messages
Members receive notifications for every message regardless of them being mentioned.
@@ -1595,6 +1595,12 @@ this goal, it must make use of a couple of data classes that aid in this goal.
See also :attr:`Guild.verification_level`.
+ .. attribute:: default_notifications
+
+ :class:`NotificationLevel` – The guild's default notification level.
+
+ See also :attr:`Guild.default_notifications`.
+
.. attribute:: explicit_content_filter
:class:`ContentFilter` – The guild's content filter.