Skip to content

Commit 8bc94e7

Browse files
authored
feat: update Discord enums and flags (#1801)
* feat: add and update new Discord enums * refactor: emojis_and_stickers -> expressions
1 parent 5e53cc2 commit 8bc94e7

File tree

3 files changed

+59
-17
lines changed

3 files changed

+59
-17
lines changed

interactions/client/client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,9 @@
158158
events.BanCreate: [Intents.GUILD_MODERATION],
159159
events.BanRemove: [Intents.GUILD_MODERATION],
160160
events.GuildAuditLogEntryCreate: [Intents.GUILD_MODERATION],
161-
# Intents.GUILD_EMOJIS_AND_STICKERS
162-
events.GuildEmojisUpdate: [Intents.GUILD_EMOJIS_AND_STICKERS],
163-
events.GuildStickersUpdate: [Intents.GUILD_EMOJIS_AND_STICKERS],
161+
# Intents.GUILD_EXPRESSIONS
162+
events.GuildEmojisUpdate: [Intents.GUILD_EXPRESSIONS],
163+
events.GuildStickersUpdate: [Intents.GUILD_EXPRESSIONS],
164164
# Intents.GUILD_INTEGRATIONS
165165
events.IntegrationCreate: [Intents.GUILD_INTEGRATIONS],
166166
events.IntegrationDelete: [Intents.GUILD_INTEGRATIONS],
@@ -1843,7 +1843,7 @@ async def get_context(self, data: dict) -> InteractionContext[Self]:
18431843
cls = self.component_context.from_dict(self, data)
18441844
case InteractionType.AUTOCOMPLETE:
18451845
cls = self.autocomplete_context.from_dict(self, data)
1846-
case InteractionType.MODAL_RESPONSE:
1846+
case InteractionType.MODAL_SUBMIT:
18471847
cls = self.modal_context.from_dict(self, data)
18481848
case InteractionType.APPLICATION_COMMAND:
18491849
if data["data"].get("target_id"):
@@ -1988,7 +1988,7 @@ async def _dispatch_interaction(self, event: RawGatewayEvent) -> None: # noqa:
19881988
if component_type == ComponentType.STRING_SELECT:
19891989
self.dispatch(events.Select(ctx))
19901990

1991-
elif interaction_data["type"] == InteractionType.MODAL_RESPONSE:
1991+
elif interaction_data["type"] == InteractionType.MODAL_SUBMIT:
19921992
ctx = await self.get_context(interaction_data)
19931993
self.dispatch(events.ModalCompletion(ctx=ctx))
19941994

interactions/models/discord/enums.py

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ class Intents(DiscordIntFlag): # type: ignore
191191
GUILDS = 1 << 0
192192
GUILD_MEMBERS = 1 << 1
193193
GUILD_MODERATION = 1 << 2
194-
GUILD_EMOJIS_AND_STICKERS = 1 << 3
194+
GUILD_EXPRESSIONS = 1 << 3
195195
GUILD_INTEGRATIONS = 1 << 4
196196
GUILD_WEBHOOKS = 1 << 5
197197
GUILD_INVITES = 1 << 6
@@ -211,6 +211,8 @@ class Intents(DiscordIntFlag): # type: ignore
211211
DIRECT_MESSAGE_POLLS = 1 << 25
212212

213213
# Shortcuts/grouping/aliases
214+
GUILD_EMOJIS_AND_STICKERS = GUILD_EXPRESSIONS
215+
214216
MESSAGES = GUILD_MESSAGES | DIRECT_MESSAGES
215217
REACTIONS = GUILD_MESSAGE_REACTIONS | DIRECT_MESSAGE_REACTIONS
216218
TYPING = GUILD_MESSAGE_TYPING | DIRECT_MESSAGE_TYPING
@@ -321,7 +323,7 @@ class UserFlags(DiscordIntFlag): # type: ignore
321323

322324

323325
class ApplicationFlags(DiscordIntFlag): # type: ignore
324-
"""Flags an application can have."""
326+
"""Flags an application (bot) can have."""
325327

326328
# Flags defined by the Discord API
327329
GATEWAY_PRESENCE = 1 << 12
@@ -333,9 +335,15 @@ class ApplicationFlags(DiscordIntFlag): # type: ignore
333335
GATEWAY_GUILD_MEMBERS_LIMITED = 1 << 15
334336
"""Using members intent, without verification"""
335337
VERIFICATION_PENDING_GUILD_LIMIT = 1 << 16
336-
"""Bot has hit guild limit, and has not been successfully verified"""
338+
"""Application has hit guild limit, and has not been successfully verified"""
337339
EMBEDDED = 1 << 17
338340
"""Application is a voice channel activity (ie YouTube Together)"""
341+
GATEWAY_MESSAGE_CONTENT = 1 << 18
342+
"""Verified to use message content intent"""
343+
GATEWAY_MESSAGE_CONTENT_LIMITED = 1 << 19
344+
"""Using message content intent, without verification"""
345+
APPLICATION_COMMAND_BADGE = 1 << 23
346+
"""Application has registered global application commands (interaction commands)"""
339347

340348

341349
class TeamMembershipState(CursedIntEnum):
@@ -610,6 +618,8 @@ class Permissions(DiscordIntFlag): # type: ignore
610618
"""Allows user-installed applications to send public responses"""
611619
PIN_MESSAGES = 1 << 51
612620
"""Allows for pinning messages"""
621+
BYPASS_SLOWMODE = 1 << 52
622+
"""Allows for bypassing slowmode restrictions (applications are not affected by slowmode)"""
613623

614624
# Shortcuts/grouping/aliases
615625
REQUIRES_MFA = (
@@ -765,6 +775,8 @@ class CommandType(CursedIntEnum):
765775
"""A UI-based command that shows up when you right click or tap on a user"""
766776
MESSAGE = 3
767777
"""A UI-based command that shows up when you right click or tap on a message"""
778+
PRIMARY_ENTRY_POINT = 4
779+
"""A UI-based command that represents the primary way to invoke an app's Activity"""
768780

769781

770782
class InteractionType(CursedIntEnum):
@@ -774,7 +786,10 @@ class InteractionType(CursedIntEnum):
774786
APPLICATION_COMMAND = 2
775787
MESSAGE_COMPONENT = 3
776788
AUTOCOMPLETE = 4
777-
MODAL_RESPONSE = 5
789+
MODAL_SUBMIT = 5
790+
791+
MODAL_RESPONSE = MODAL_SUBMIT
792+
"""Alias for :attr:`MODAL_SUBMIT`"""
778793

779794

780795
class InteractionPermissionTypes(CursedIntEnum):
@@ -913,6 +928,10 @@ class SystemChannelFlags(DiscordIntFlag):
913928
"""Suppress server setup tips"""
914929
SUPPRESS_JOIN_NOTIFICATION_REPLIES = 1 << 3
915930
"""Hide member join sticker reply buttons"""
931+
SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATIONS = 1 << 4
932+
"""Suppress role subscription purchase and renewal notifications"""
933+
SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATION_REPLIES = 1 << 5
934+
"""Hide role subscription sticker reply buttons"""
916935

917936
# Special members
918937
NONE = 0
@@ -1096,33 +1115,45 @@ class AuditLogEventType(CursedIntEnum):
10961115
THREAD_UPDATE = 111
10971116
THREAD_DELETE = 112
10981117
APPLICATION_COMMAND_PERMISSION_UPDATE = 121
1118+
SOUNDBOARD_SOUND_CREATE = 130
1119+
SOUNDBOARD_SOUND_UPDATE = 131
1120+
SOUNDBOARD_SOUND_DELETE = 132
10991121
AUTO_MODERATION_RULE_CREATE = 140
11001122
AUTO_MODERATION_RULE_UPDATE = 141
11011123
AUTO_MODERATION_RULE_DELETE = 142
11021124
AUTO_MODERATION_BLOCK_MESSAGE = 143
11031125
AUTO_MODERATION_FLAG_TO_CHANNEL = 144
11041126
AUTO_MODERATION_USER_COMMUNICATION_DISABLED = 145
1105-
AUTO_MODERATION_QUARANTINE = 146
1127+
AUTO_MODERATION_QUARANTINE_USER = 146
11061128
CREATOR_MONETIZATION_REQUEST_CREATED = 150
11071129
CREATOR_MONETIZATION_TERMS_ACCEPTED = 151
11081130
ROLE_PROMPT_CREATE = 160
11091131
ROLE_PROMPT_UPDATE = 161
11101132
ROLE_PROMPT_DELETE = 162
1111-
ON_BOARDING_QUESTION_CREATE = 163
1112-
ON_BOARDING_QUESTION_UPDATE = 164
1133+
ONBOARDING_PROMPT_CREATE = 163
1134+
ONBOARDING_PROMPT_UPDATE = 164
1135+
ONBOARDING_PROMPT_DELETE = 165
1136+
ONBOARDING_CREATE = 166
11131137
ONBOARDING_UPDATE = 167
11141138
GUILD_HOME_FEATURE_ITEM = 171
11151139
GUILD_HOME_FEATURE_ITEM_UPDATE = 172
11161140
BLOCKED_PHISHING_LINK = 180
1117-
SERVER_GUIDE_CREATE = 190
1118-
SERVER_GUIDE_UPDATE = 191
1141+
HOME_SETTINGS_CREATE = 190
1142+
HOME_SETTINGS_UPDATE = 191
11191143
VOICE_CHANNEL_STATUS_CREATE = 192
11201144
VOICE_CHANNEL_STATUS_DELETE = 193
11211145
CLYDE_AI_PROFILE_UPDATE = 194
11221146
GUILD_SCHEDULED_EVENT_EXCEPTION_CREATE = 200
11231147
GUILD_SCHEDULED_EVENT_EXCEPTION_UPDATE = 201
11241148
GUILD_SCHEDULED_EVENT_EXCEPTION_DELETE = 202
11251149

1150+
AUTO_MODERATION_QUARANTINE = AUTO_MODERATION_QUARANTINE_USER
1151+
ON_BOARDING_QUESTION_CREATE = ONBOARDING_PROMPT_CREATE
1152+
ON_BOARDING_QUESTION_UPDATE = ONBOARDING_PROMPT_UPDATE
1153+
ON_BOARDING_QUESTION_DELETE = ONBOARDING_PROMPT_DELETE
1154+
SERVER_GUIDE_CREATE = HOME_SETTINGS_CREATE
1155+
SERVER_GUIDE_UPDATE = HOME_SETTINGS_UPDATE
1156+
11261157

11271158
class AutoModTriggerType(CursedIntEnum):
11281159
KEYWORD = 1
@@ -1156,6 +1187,12 @@ class MemberFlags(DiscordIntFlag):
11561187
COMPLETED_ONBOARDING = 1 << 1
11571188
BYPASSES_VERIFICATION = 1 << 2
11581189
STARTED_ONBOARDING = 1 << 3
1190+
IS_GUEST = 1 << 4
1191+
STARTED_HOME_ACTIONS = 1 << 5
1192+
COMPLETED_HOME_ACTIONS = 1 << 6
1193+
AUTOMOD_QUARANTINED_USERNAME = 1 << 7
1194+
DM_SETTINGS_UPSELL_ACKNOWLEDGED = 1 << 9
1195+
AUTOMOD_QUARANTINED_GUILD_TAG = 1 << 10
11591196

11601197

11611198
class StickerTypes(CursedIntEnum):
@@ -1180,8 +1217,11 @@ class ForumLayoutType(CursedIntEnum):
11801217
"""The layout of a forum channel."""
11811218

11821219
NOT_SET = 0
1183-
LIST = 1
1184-
GALLERY = 2
1220+
LIST_VIEW = 1
1221+
GALLERY_VIEW = 2
1222+
1223+
LIST = LIST_VIEW
1224+
GALLERY = GALLERY_VIEW
11851225

11861226

11871227
class ForumSortOrder(CursedIntEnum):

interactions/models/internal/application_commands.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,10 +386,12 @@ def _type_validator(self, attribute: str, value: int) -> None:
386386
if not isinstance(value, CommandType):
387387
if value not in CommandType.__members__.values():
388388
raise ValueError("Context Menu type not recognised, please consult the docs.")
389-
elif value == CommandType.CHAT_INPUT:
389+
if value == CommandType.CHAT_INPUT:
390390
raise ValueError(
391391
"The CHAT_INPUT type is basically slash commands. Please use the @slash_command() " "decorator instead."
392392
)
393+
if value == CommandType.PRIMARY_ENTRY_POINT:
394+
raise ValueError("Context Menu does not support PRIMARY_ENTRY_POINT, which is an Activity entry point.")
393395

394396
def to_dict(self) -> dict:
395397
data = super().to_dict()

0 commit comments

Comments
 (0)