From 3148efdb073c0cd5c75dda36a071d3dac6aba08f Mon Sep 17 00:00:00 2001 From: EdVraz <88881326+EdVraz@users.noreply.github.com> Date: Thu, 24 Feb 2022 16:29:48 +0100 Subject: [PATCH 1/6] fix!: make context not required --- interactions/api/gateway.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interactions/api/gateway.py b/interactions/api/gateway.py index a2e40c8d6..3b1c9b3ab 100644 --- a/interactions/api/gateway.py +++ b/interactions/api/gateway.py @@ -399,7 +399,7 @@ def __contextualize(self, data: dict) -> object: return context(**data) def __sub_command_context( - self, data: Union[dict, Option], context: object + self, data: Union[dict, Option], context: object = MISSING ) -> Union[Tuple[str], dict]: """ Checks if an application command schema has sub commands From 190be54b2d8ae27ae2b9080b7174401ecfb3a2ad Mon Sep 17 00:00:00 2001 From: EdVraz <88881326+EdVraz@users.noreply.github.com> Date: Thu, 24 Feb 2022 21:22:25 +0100 Subject: [PATCH 2/6] fix!: remove requirement of reason in helper methods --- interactions/api/models/guild.py | 24 ++++++++++++------------ interactions/api/models/guild.pyi | 30 +++++++++++++++--------------- interactions/api/models/member.py | 4 ++-- interactions/api/models/member.pyi | 4 ++-- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/interactions/api/models/guild.py b/interactions/api/models/guild.py index 20af32a96..52a9ed666 100644 --- a/interactions/api/models/guild.py +++ b/interactions/api/models/guild.py @@ -1046,7 +1046,7 @@ async def set_name( self, name: str, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the name of the guild. @@ -1062,7 +1062,7 @@ async def set_verification_level( self, verification_level: VerificationLevel, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the verification level of the guild. @@ -1078,7 +1078,7 @@ async def set_default_message_notifications( self, default_message_notifications: DefaultMessageNotificationLevel, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the default message notifications level of the guild. @@ -1096,7 +1096,7 @@ async def set_explicit_content_filter( self, explicit_content_filter: ExplicitContentFilterLevel, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the explicit content filter level of the guild. @@ -1112,7 +1112,7 @@ async def set_afk_channel( self, afk_channel_id: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the afk channel of the guild. @@ -1128,7 +1128,7 @@ async def set_afk_timeout( self, afk_timeout: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the afk timeout of the guild. @@ -1144,7 +1144,7 @@ async def set_system_channel( self, system_channel_id: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the system channel of the guild. @@ -1160,7 +1160,7 @@ async def set_rules_channel( self, rules_channel_id: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the rules channel of the guild. @@ -1176,7 +1176,7 @@ async def set_public_updates_channel( self, public_updates_channel_id: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the public updates channel of the guild. @@ -1192,7 +1192,7 @@ async def set_preferred_locale( self, preferred_locale: str, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the preferred locale of the guild. @@ -1208,7 +1208,7 @@ async def set_description( self, description: str, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the description of the guild. @@ -1224,7 +1224,7 @@ async def set_premium_progress_bar_enabled( self, premium_progress_bar_enabled: bool, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": """ Sets the visibility of the premium progress bar of the guild. diff --git a/interactions/api/models/guild.pyi b/interactions/api/models/guild.pyi index 4e21ed5b8..03d2b15da 100644 --- a/interactions/api/models/guild.pyi +++ b/interactions/api/models/guild.pyi @@ -151,13 +151,13 @@ class Guild(DictSerializerMixin): self, role: Union[Role, int], member_id: int, - reason: Optional[str], + reason: Optional[str] = None, ) -> None: ... async def remove_member_role( self, role: Union[Role, int], member_id: int, - reason: Optional[str], + reason: Optional[str] = None, ) -> None: ... async def create_role( self, @@ -181,7 +181,7 @@ class Guild(DictSerializerMixin): async def delete_role( self, role_id: int, - reason: Optional[str], + reason: Optional[str] = None, ) -> None: ... async def modify_role( self, @@ -275,73 +275,73 @@ class Guild(DictSerializerMixin): self, name: str, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_verification_level( self, verification_level: VerificationLevel, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_default_message_notifications( self, default_message_notifications: DefaultMessageNotificationLevel, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_explicit_content_filter( self, explicit_content_filter: ExplicitContentFilterLevel, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_afk_channel( self, afk_channel_id: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_afk_timeout( self, afk_timeout: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_system_channel( self, system_channel_id: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_rules_channel( self, rules_channel_id: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_public_updates_channel( self, public_updates_channel_id: int, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_preferred_locale( self, preferred_locale: str, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_description( self, description: str, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def set_premium_progress_bar_enabled( self, premium_progress_bar_enabled: bool, *, - reason: Optional[str], + reason: Optional[str] = None, ) -> "Guild": ... async def create_scheduled_event( diff --git a/interactions/api/models/member.py b/interactions/api/models/member.py index 9a5d07811..4ff2667a0 100644 --- a/interactions/api/models/member.py +++ b/interactions/api/models/member.py @@ -147,7 +147,7 @@ async def add_role( self, role: Union[Role, int], guild_id: int, - reason: Optional[str], + reason: Optional[str] = None, ) -> None: """ This method adds a role to a member. @@ -180,7 +180,7 @@ async def remove_role( self, role: Union[Role, int], guild_id: int, - reason: Optional[str], + reason: Optional[str] = None, ) -> None: """ This method removes a role from a member. diff --git a/interactions/api/models/member.pyi b/interactions/api/models/member.pyi index 503beab31..2421a89e8 100644 --- a/interactions/api/models/member.pyi +++ b/interactions/api/models/member.pyi @@ -45,13 +45,13 @@ class Member(DictSerializerMixin): self, role: Union[Role, int], guild_id: int, - reason: Optional[str], + reason: Optional[str] = None, ) -> None: ... async def remove_role( self, role: Union[Role, int], guild_id: int, - reason: Optional[str], + reason: Optional[str] = None, ) -> None: ... async def send( self, From 6af4370d6a52d2be66f279741110d559905062c3 Mon Sep 17 00:00:00 2001 From: EdVraz <88881326+EdVraz@users.noreply.github.com> Date: Thu, 24 Feb 2022 22:56:15 +0100 Subject: [PATCH 3/6] Update gateway.py --- interactions/api/gateway.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interactions/api/gateway.py b/interactions/api/gateway.py index 3b1c9b3ab..3778a3b87 100644 --- a/interactions/api/gateway.py +++ b/interactions/api/gateway.py @@ -342,7 +342,7 @@ def _dispatch_event(self, event: str, data: dict) -> None: if _context.data._json.get("options"): for option in _context.data.options: - __name, _value = self.__sub_command_context(option) + __name, _value = self.__sub_command_context(option, _context) _name += f"_{__name}" if __name else "" if _value: @@ -399,7 +399,7 @@ def __contextualize(self, data: dict) -> object: return context(**data) def __sub_command_context( - self, data: Union[dict, Option], context: object = MISSING + self, data: Union[dict, Option], context: object ) -> Union[Tuple[str], dict]: """ Checks if an application command schema has sub commands From e83c425db0a55f69f0a2ceb676132bb5b0b8fcc1 Mon Sep 17 00:00:00 2001 From: EdVraz <88881326+EdVraz@users.noreply.github.com> Date: Fri, 25 Feb 2022 08:16:11 +0100 Subject: [PATCH 4/6] Update client.py --- interactions/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interactions/client.py b/interactions/client.py index 61df97c8c..146c619d6 100644 --- a/interactions/client.py +++ b/interactions/client.py @@ -399,7 +399,7 @@ def __check_sub_command(_sub_command: Option, _sub_group: Option = MISSING): raise InteractionException( 11, message="Descriptions must be less than 100 characters." ) - if _sub_command.options is not MISSING: + if _sub_command.options is not MISSING and _sub_command.options: if len(_sub_command.options) > 25: raise InteractionException( 11, message="Your sub command must have less than 25 options." From 5428b4c1fe20a8d8c970886e4bc492e475fcf89b Mon Sep 17 00:00:00 2001 From: EdVraz <88881326+EdVraz@users.noreply.github.com> Date: Fri, 25 Feb 2022 13:42:10 +0100 Subject: [PATCH 5/6] fix!: remove requirement of reason in helper methods --- interactions/api/gateway.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/interactions/api/gateway.py b/interactions/api/gateway.py index 8f6bade37..5f73550b7 100644 --- a/interactions/api/gateway.py +++ b/interactions/api/gateway.py @@ -489,6 +489,11 @@ def _check_auto(option: dict) -> Optional[Tuple[str]]: return _check __kwargs[sub_option["name"]] = sub_option["value"] + + elif _data.get("type") and _data["type"] == OptionType.SUB_COMMAND: + # sub_command_groups must have options so there is no extra check needed for those + __kwargs["sub_command"] = _data["name"] + elif _data.get("value") and _data.get("name"): __kwargs[_data["name"]] = _data["value"] From 58140fd0bc173fc1818b2d5efedf91c6ed3aa36d Mon Sep 17 00:00:00 2001 From: EdVraz <88881326+EdVraz@users.noreply.github.com> Date: Fri, 25 Feb 2022 20:57:02 +0100 Subject: [PATCH 6/6] fix!: add _client to Attachement class --- interactions/api/models/message.py | 1 + 1 file changed, 1 insertion(+) diff --git a/interactions/api/models/message.py b/interactions/api/models/message.py index 6ba3a766d..5c0bba76a 100644 --- a/interactions/api/models/message.py +++ b/interactions/api/models/message.py @@ -105,6 +105,7 @@ class Attachment(DictSerializerMixin): """ __slots__ = ( + "_client", "_json", "id", "filename",