From 2e5dd384de5f9b520965f24f703d0333b2334bd4 Mon Sep 17 00:00:00 2001 From: Mifuyu Date: Thu, 11 Dec 2025 01:32:45 +0700 Subject: [PATCH 1/2] feat: add and update new Discord enums --- interactions/client/client.py | 4 +- interactions/models/discord/enums.py | 58 +++++++++++++++---- .../models/internal/application_commands.py | 4 +- 3 files changed, 53 insertions(+), 13 deletions(-) diff --git a/interactions/client/client.py b/interactions/client/client.py index 0f2ede684..d72b82a58 100644 --- a/interactions/client/client.py +++ b/interactions/client/client.py @@ -1843,7 +1843,7 @@ async def get_context(self, data: dict) -> InteractionContext[Self]: cls = self.component_context.from_dict(self, data) case InteractionType.AUTOCOMPLETE: cls = self.autocomplete_context.from_dict(self, data) - case InteractionType.MODAL_RESPONSE: + case InteractionType.MODAL_SUBMIT: cls = self.modal_context.from_dict(self, data) case InteractionType.APPLICATION_COMMAND: if data["data"].get("target_id"): @@ -1988,7 +1988,7 @@ async def _dispatch_interaction(self, event: RawGatewayEvent) -> None: # noqa: if component_type == ComponentType.STRING_SELECT: self.dispatch(events.Select(ctx)) - elif interaction_data["type"] == InteractionType.MODAL_RESPONSE: + elif interaction_data["type"] == InteractionType.MODAL_SUBMIT: ctx = await self.get_context(interaction_data) self.dispatch(events.ModalCompletion(ctx=ctx)) diff --git a/interactions/models/discord/enums.py b/interactions/models/discord/enums.py index 574fb1573..721ae5b21 100644 --- a/interactions/models/discord/enums.py +++ b/interactions/models/discord/enums.py @@ -321,7 +321,7 @@ class UserFlags(DiscordIntFlag): # type: ignore class ApplicationFlags(DiscordIntFlag): # type: ignore - """Flags an application can have.""" + """Flags an application (bot) can have.""" # Flags defined by the Discord API GATEWAY_PRESENCE = 1 << 12 @@ -333,9 +333,15 @@ class ApplicationFlags(DiscordIntFlag): # type: ignore GATEWAY_GUILD_MEMBERS_LIMITED = 1 << 15 """Using members intent, without verification""" VERIFICATION_PENDING_GUILD_LIMIT = 1 << 16 - """Bot has hit guild limit, and has not been successfully verified""" + """Application has hit guild limit, and has not been successfully verified""" EMBEDDED = 1 << 17 """Application is a voice channel activity (ie YouTube Together)""" + GATEWAY_MESSAGE_CONTENT = 1 << 18 + """Verified to use message content intent""" + GATEWAY_MESSAGE_CONTENT_LIMITED = 1 << 19 + """Using message content intent, without verification""" + APPLICATION_COMMAND_BADGE = 1 << 23 + """Application has registered global application commands (interaction commands)""" class TeamMembershipState(CursedIntEnum): @@ -610,6 +616,8 @@ class Permissions(DiscordIntFlag): # type: ignore """Allows user-installed applications to send public responses""" PIN_MESSAGES = 1 << 51 """Allows for pinning messages""" + BYPASS_SLOWMODE = 1 << 52 + """Allows for bypassing slowmode restrictions (applications are not affected by slowmode)""" # Shortcuts/grouping/aliases REQUIRES_MFA = ( @@ -765,6 +773,8 @@ class CommandType(CursedIntEnum): """A UI-based command that shows up when you right click or tap on a user""" MESSAGE = 3 """A UI-based command that shows up when you right click or tap on a message""" + PRIMARY_ENTRY_POINT = 4 + """A UI-based command that represents the primary way to invoke an app's Activity""" class InteractionType(CursedIntEnum): @@ -774,7 +784,10 @@ class InteractionType(CursedIntEnum): APPLICATION_COMMAND = 2 MESSAGE_COMPONENT = 3 AUTOCOMPLETE = 4 - MODAL_RESPONSE = 5 + MODAL_SUBMIT = 5 + + MODAL_RESPONSE = MODAL_SUBMIT + """Alias for :attr:`MODAL_SUBMIT`""" class InteractionPermissionTypes(CursedIntEnum): @@ -913,6 +926,10 @@ class SystemChannelFlags(DiscordIntFlag): """Suppress server setup tips""" SUPPRESS_JOIN_NOTIFICATION_REPLIES = 1 << 3 """Hide member join sticker reply buttons""" + SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATIONS = 1 << 4 + """Suppress role subscription purchase and renewal notifications""" + SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATION_REPLIES = 1 << 5 + """Hide role subscription sticker reply buttons""" # Special members NONE = 0 @@ -1096,26 +1113,31 @@ class AuditLogEventType(CursedIntEnum): THREAD_UPDATE = 111 THREAD_DELETE = 112 APPLICATION_COMMAND_PERMISSION_UPDATE = 121 + SOUNDBOARD_SOUND_CREATE = 130 + SOUNDBOARD_SOUND_UPDATE = 131 + SOUNDBOARD_SOUND_DELETE = 132 AUTO_MODERATION_RULE_CREATE = 140 AUTO_MODERATION_RULE_UPDATE = 141 AUTO_MODERATION_RULE_DELETE = 142 AUTO_MODERATION_BLOCK_MESSAGE = 143 AUTO_MODERATION_FLAG_TO_CHANNEL = 144 AUTO_MODERATION_USER_COMMUNICATION_DISABLED = 145 - AUTO_MODERATION_QUARANTINE = 146 + AUTO_MODERATION_QUARANTINE_USER = 146 CREATOR_MONETIZATION_REQUEST_CREATED = 150 CREATOR_MONETIZATION_TERMS_ACCEPTED = 151 ROLE_PROMPT_CREATE = 160 ROLE_PROMPT_UPDATE = 161 ROLE_PROMPT_DELETE = 162 - ON_BOARDING_QUESTION_CREATE = 163 - ON_BOARDING_QUESTION_UPDATE = 164 + ONBOARDING_PROMPT_CREATE = 163 + ONBOARDING_PROMPT_UPDATE = 164 + ONBOARDING_PROMPT_DELETE = 165 + ONBOARDING_CREATE = 166 ONBOARDING_UPDATE = 167 GUILD_HOME_FEATURE_ITEM = 171 GUILD_HOME_FEATURE_ITEM_UPDATE = 172 BLOCKED_PHISHING_LINK = 180 - SERVER_GUIDE_CREATE = 190 - SERVER_GUIDE_UPDATE = 191 + HOME_SETTINGS_CREATE = 190 + HOME_SETTINGS_UPDATE = 191 VOICE_CHANNEL_STATUS_CREATE = 192 VOICE_CHANNEL_STATUS_DELETE = 193 CLYDE_AI_PROFILE_UPDATE = 194 @@ -1123,6 +1145,13 @@ class AuditLogEventType(CursedIntEnum): GUILD_SCHEDULED_EVENT_EXCEPTION_UPDATE = 201 GUILD_SCHEDULED_EVENT_EXCEPTION_DELETE = 202 + AUTO_MODERATION_QUARANTINE = AUTO_MODERATION_QUARANTINE_USER + ON_BOARDING_QUESTION_CREATE = ONBOARDING_PROMPT_CREATE + ON_BOARDING_QUESTION_UPDATE = ONBOARDING_PROMPT_UPDATE + ON_BOARDING_QUESTION_DELETE = ONBOARDING_PROMPT_DELETE + SERVER_GUIDE_CREATE = HOME_SETTINGS_CREATE + SERVER_GUIDE_UPDATE = HOME_SETTINGS_UPDATE + class AutoModTriggerType(CursedIntEnum): KEYWORD = 1 @@ -1156,6 +1185,12 @@ class MemberFlags(DiscordIntFlag): COMPLETED_ONBOARDING = 1 << 1 BYPASSES_VERIFICATION = 1 << 2 STARTED_ONBOARDING = 1 << 3 + IS_GUEST = 1 << 4 + STARTED_HOME_ACTIONS = 1 << 5 + COMPLETED_HOME_ACTIONS = 1 << 6 + AUTOMOD_QUARANTINED_USERNAME = 1 << 7 + DM_SETTINGS_UPSELL_ACKNOWLEDGED = 1 << 9 + AUTOMOD_QUARANTINED_GUILD_TAG = 1 << 10 class StickerTypes(CursedIntEnum): @@ -1180,8 +1215,11 @@ class ForumLayoutType(CursedIntEnum): """The layout of a forum channel.""" NOT_SET = 0 - LIST = 1 - GALLERY = 2 + LIST_VIEW = 1 + GALLERY_VIEW = 2 + + LIST = LIST_VIEW + GALLERY = GALLERY_VIEW class ForumSortOrder(CursedIntEnum): diff --git a/interactions/models/internal/application_commands.py b/interactions/models/internal/application_commands.py index 2f9b591d0..8ab73b9ff 100644 --- a/interactions/models/internal/application_commands.py +++ b/interactions/models/internal/application_commands.py @@ -386,10 +386,12 @@ def _type_validator(self, attribute: str, value: int) -> None: if not isinstance(value, CommandType): if value not in CommandType.__members__.values(): raise ValueError("Context Menu type not recognised, please consult the docs.") - elif value == CommandType.CHAT_INPUT: + if value == CommandType.CHAT_INPUT: raise ValueError( "The CHAT_INPUT type is basically slash commands. Please use the @slash_command() " "decorator instead." ) + if value == CommandType.PRIMARY_ENTRY_POINT: + raise ValueError("Context Menu does not support PRIMARY_ENTRY_POINT, which is an Activity entry point.") def to_dict(self) -> dict: data = super().to_dict() From bf1598e468db9fd621eee1320c880dfb023419cf Mon Sep 17 00:00:00 2001 From: Mifuyu Date: Thu, 11 Dec 2025 02:04:19 +0700 Subject: [PATCH 2/2] refactor: emojis_and_stickers -> expressions --- interactions/client/client.py | 6 +++--- interactions/models/discord/enums.py | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/interactions/client/client.py b/interactions/client/client.py index d72b82a58..a86e596a0 100644 --- a/interactions/client/client.py +++ b/interactions/client/client.py @@ -158,9 +158,9 @@ events.BanCreate: [Intents.GUILD_MODERATION], events.BanRemove: [Intents.GUILD_MODERATION], events.GuildAuditLogEntryCreate: [Intents.GUILD_MODERATION], - # Intents.GUILD_EMOJIS_AND_STICKERS - events.GuildEmojisUpdate: [Intents.GUILD_EMOJIS_AND_STICKERS], - events.GuildStickersUpdate: [Intents.GUILD_EMOJIS_AND_STICKERS], + # Intents.GUILD_EXPRESSIONS + events.GuildEmojisUpdate: [Intents.GUILD_EXPRESSIONS], + events.GuildStickersUpdate: [Intents.GUILD_EXPRESSIONS], # Intents.GUILD_INTEGRATIONS events.IntegrationCreate: [Intents.GUILD_INTEGRATIONS], events.IntegrationDelete: [Intents.GUILD_INTEGRATIONS], diff --git a/interactions/models/discord/enums.py b/interactions/models/discord/enums.py index 721ae5b21..edbb6e408 100644 --- a/interactions/models/discord/enums.py +++ b/interactions/models/discord/enums.py @@ -191,7 +191,7 @@ class Intents(DiscordIntFlag): # type: ignore GUILDS = 1 << 0 GUILD_MEMBERS = 1 << 1 GUILD_MODERATION = 1 << 2 - GUILD_EMOJIS_AND_STICKERS = 1 << 3 + GUILD_EXPRESSIONS = 1 << 3 GUILD_INTEGRATIONS = 1 << 4 GUILD_WEBHOOKS = 1 << 5 GUILD_INVITES = 1 << 6 @@ -211,6 +211,8 @@ class Intents(DiscordIntFlag): # type: ignore DIRECT_MESSAGE_POLLS = 1 << 25 # Shortcuts/grouping/aliases + GUILD_EMOJIS_AND_STICKERS = GUILD_EXPRESSIONS + MESSAGES = GUILD_MESSAGES | DIRECT_MESSAGES REACTIONS = GUILD_MESSAGE_REACTIONS | DIRECT_MESSAGE_REACTIONS TYPING = GUILD_MESSAGE_TYPING | DIRECT_MESSAGE_TYPING