Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/migration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -232,3 +232,7 @@ your option name! Example:
~~~~~~~~~~~~~~~

The ``Color`` class was refactored into an enum. You may now access its contents via ``interactions.Color.COLOR``.
Due to `complaints <https://www.github.com/interactions-py/library/issues/1040>`_ on str and repr magic methods, we have
decided to `remove all implementations of them in the model classes <https://www.github.com/interactions.py/library/pulls/1050>`_.
This affects the way you can send emojis. You can no longer use ``str(emoji)`` or ``f"{emoji}"``.
Instead you will have to use ``emoji.format`` or ``f"{emoji.format}"`` to transform an emoji into a send-able form.
3 changes: 0 additions & 3 deletions interactions/api/models/channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -478,9 +478,6 @@ def __attrs_post_init__(self): # sourcery skip: last-if-guard
if not self.recipients:
self.recipients = channel.recipients

def __repr__(self) -> str:
return self.name

@property
def typing(self) -> Union[Awaitable, ContextManager]:
"""
Expand Down
11 changes: 9 additions & 2 deletions interactions/api/models/emoji.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
__all__ = ("Emoji",)


@define(repr=False)
@define()
class Emoji(ClientSerializerMixin):
"""
A class objecting representing an emoji.
Expand All @@ -36,10 +36,17 @@ class Emoji(ClientSerializerMixin):
animated: Optional[bool] = field(default=None)
available: Optional[bool] = field(default=None)

def __repr__(self):
@property
def format(self) -> str:
"""
Formats the emoji into a send-able form.
:rtype: str
"""
return (
f"<{'a' if self.animated else ''}:{self.name}:{self.id}>"
if self.id is not None
else f":{self.name}:"
if self.require_colons
else self.name
)

Expand Down
3 changes: 0 additions & 3 deletions interactions/api/models/guild.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,9 +482,6 @@ def __attrs_post_init__(self): # sourcery skip: last-if-guard
if not member._extras.get("guild_id"):
member._extras["guild_id"] = self.id

def __repr__(self) -> str:
return self.name

async def ban(
self,
member_id: Union[int, Member, Snowflake],
Expand Down
3 changes: 0 additions & 3 deletions interactions/api/models/member.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,6 @@ class Member(ClientSerializerMixin, IDMixin):
) # TODO: Investigate what this is for when documented by Discord.
flags: int = field(repr=False) # TODO: Investigate what this is for when documented by Discord.

def __str__(self) -> str:
return self.name or ""

def __getattr__(self, name):
# Forward any attributes the user has to make it easier for devs
try:
Expand Down
3 changes: 0 additions & 3 deletions interactions/api/models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,6 @@ class User(ClientSerializerMixin, IDMixin):
public_flags: Optional[UserFlags] = field(converter=UserFlags, default=None, repr=False)
bio: Optional[str] = field(default=None)

def __str__(self) -> str:
return self.username

def has_public_flag(self, flag: Union[UserFlags, int]) -> bool:
if self.public_flags == 0 or self.public_flags is None:
return False
Expand Down