Skip to content

Commit

Permalink
Fix locale bugs and regressions
Browse files Browse the repository at this point in the history
  • Loading branch information
davfsa committed Mar 25, 2022
1 parent bac38fe commit ce52f3b
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 34 deletions.
8 changes: 4 additions & 4 deletions hikari/impl/entity_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -1993,7 +1993,7 @@ def deserialize_command_interaction(
id=snowflakes.Snowflake(payload["id"]),
type=base_interactions.InteractionType(payload["type"]),
guild_id=guild_id,
guild_locale=locales.Locale(payload.get("guild_locale", "en-US")),
guild_locale=locales.Locale(payload["guild_locale"]) if "guild_locale" in payload else None,
locale=locales.Locale(payload["locale"]),
channel_id=snowflakes.Snowflake(payload["channel_id"]),
member=member,
Expand Down Expand Up @@ -2051,7 +2051,7 @@ def deserialize_autocomplete_interaction(
options=options,
resolved=resolved,
locale=locales.Locale(payload["locale"]),
guild_locale=locales.Locale(payload.get("guild_locale")),
guild_locale=locales.Locale(payload["guild_locale"]) if "guild_locale" in payload else None,
)

def deserialize_interaction(self, payload: data_binding.JSONObject) -> base_interactions.PartialInteraction:
Expand Down Expand Up @@ -2126,7 +2126,7 @@ def deserialize_component_interaction(
component_type=message_models.ComponentType(data_payload["component_type"]),
message=self.deserialize_message(payload["message"]),
locale=locales.Locale(payload["locale"]),
guild_locale=locales.Locale(payload.get("guild_locale")),
guild_locale=locales.Locale(payload["guild_locale"]) if "guild_locale" in payload else None,
)

##################
Expand Down Expand Up @@ -2921,7 +2921,7 @@ def deserialize_my_user(self, payload: data_binding.JSONObject) -> user_models.O
is_bot=user_fields.is_bot,
is_system=user_fields.is_system,
is_mfa_enabled=payload["mfa_enabled"],
locale=locales.Locale(payload["locale"]),
locale=locales.Locale(payload["locale"]) if "locale" in payload else None,
is_verified=payload.get("verified"),
email=payload.get("email"),
flags=user_models.UserFlag(payload["flags"]),
Expand Down
5 changes: 1 addition & 4 deletions hikari/interactions/command_interactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,10 +171,7 @@ class AutocompleteInteractionOption(CommandInteractionOption):
@attr_extensions.with_copy
@attr.define(hash=True, kw_only=True, weakref_slot=False)
class BaseCommandInteraction(base_interactions.PartialInteraction):
"""Represents a base command interaction on Discord.
May be a command interaction or an autocomplete interaction.
"""
"""Represents a base command interaction on Discord."""

channel_id: snowflakes.Snowflake = attr.field(eq=False, hash=False, repr=True)
"""ID of the channel this command interaction event was triggered in."""
Expand Down
5 changes: 4 additions & 1 deletion hikari/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -758,7 +758,10 @@ class OwnUser(UserImpl):
"""Whether the user's account has multi-factor authentication enabled."""

locale: typing.Optional[typing.Union[str, locales.Locale]] = attr.field(eq=False, hash=False, repr=False)
"""The user's set language. This is not provided by the `READY` event."""
"""The user's set locale.
This is not provided in the `READY` event.
"""

is_verified: typing.Optional[bool] = attr.field(eq=False, hash=False, repr=False)
"""Whether the email for this user's account has been verified.
Expand Down
37 changes: 12 additions & 25 deletions tests/hikari/impl/test_entity_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -3144,6 +3144,7 @@ def test_deserialize_command_interaction_with_null_attributes(
command_interaction_payload["user"] = user_payload
del command_interaction_payload["data"]["resolved"]
del command_interaction_payload["data"]["options"]
del command_interaction_payload["guild_locale"]

interaction = entity_factory_impl.deserialize_command_interaction(command_interaction_payload)

Expand All @@ -3152,6 +3153,7 @@ def test_deserialize_command_interaction_with_null_attributes(
assert interaction.user == entity_factory_impl.deserialize_user(user_payload)
assert interaction.options is None
assert interaction.resolved is None
assert interaction.guild_locale is None

@pytest.fixture()
def autocomplete_interaction_payload(self, user_payload, interaction_resolved_data_payload):
Expand Down Expand Up @@ -3232,35 +3234,20 @@ def test_deserialize_autocomplete_interaction(

assert isinstance(interaction, command_interactions.AutocompleteInteraction)

def test_deserialize_autocomplete_interaction_with_null_fields(self, entity_factory_impl, user_payload, mock_app):
interaction = entity_factory_impl.deserialize_autocomplete_interaction(
{
"id": "3490190239012093",
"type": 4,
"data": {
"id": "43123123",
"name": "okokokok",
"type": 1,
"options": [
{"name": "go ice", "type": 6, "value": "115590097100865541"},
{"name": "go fire", "type": 3, "value": "typing...", "focused": True},
{"name": "stuff", "type": 1, "value": {"name": "stuff", "type": 3, "value": "none"}},
],
},
"user": user_payload,
"channel_id": "49949494",
"token": "moe cat girls",
"locale": "es-ES",
"guild_locale": "en-US",
"version": 69420,
"application_id": "76234234",
}
)
def test_deserialize_autocomplete_interaction_with_null_fields(
self, entity_factory_impl, user_payload, mock_app, autocomplete_interaction_payload
):
del autocomplete_interaction_payload["data"]["resolved"]
del autocomplete_interaction_payload["guild_locale"]
del autocomplete_interaction_payload["guild_id"]

interaction = entity_factory_impl.deserialize_autocomplete_interaction(autocomplete_interaction_payload)

assert interaction.guild_id is None
assert interaction.member is None
assert interaction.user == entity_factory_impl.deserialize_user(user_payload)
assert interaction.resolved is None
assert interaction.guild_locale is None

def test_deserialize_interaction_returns_expected_type(
self, entity_factory_impl, command_interaction_payload, component_interaction_payload
Expand Down Expand Up @@ -5365,7 +5352,6 @@ def test_deserialize_my_user_with_unset_fields(self, entity_factory_impl, mock_a
"username": "qt pi",
"avatar": "820d0e50543216e812ad94e6ab7",
"discriminator": "2880",
"locale": "en-US",
"mfa_enabled": True,
"public_flags": int(user_models.UserFlag.EARLY_VERIFIED_DEVELOPER),
"flags": int(user_models.UserFlag.PARTNERED_SERVER_OWNER | user_models.UserFlag.DISCORD_EMPLOYEE),
Expand All @@ -5379,6 +5365,7 @@ def test_deserialize_my_user_with_unset_fields(self, entity_factory_impl, mock_a
assert my_user.is_system is False
assert my_user.is_verified is None
assert my_user.email is None
assert my_user.locale is None
assert isinstance(my_user, user_models.OwnUser)

################
Expand Down

0 comments on commit ce52f3b

Please sign in to comment.