Skip to content

Commit

Permalink
refactor!: Improve DX with allowing the usage of the actual object ad…
Browse files Browse the repository at this point in the history
…ditionally to the ID (#828)

* refactor!: guild model

* ci: check

* allow message object without importing it

* ci: correct from checks.

* refactor!: channel model

* refactor!: member model

* refactor!: Emoji model

* refactor!: Emoji model

* refactor!: role model

* ci: check

* fix: Add missing `_`

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
EdVraz and pre-commit-ci[bot] committed Jun 12, 2022
1 parent 06f4924 commit 0ce7736
Show file tree
Hide file tree
Showing 10 changed files with 310 additions and 215 deletions.
59 changes: 42 additions & 17 deletions interactions/api/models/channel.py
Expand Up @@ -595,7 +595,7 @@ async def lock(

async def add_member(
self,
member_id: int,
member_id: Union[int, Snowflake, "Member"], # noqa
) -> None:
"""
This adds a member to the channel, if the channel is a thread.
Expand All @@ -609,54 +609,71 @@ async def add_member(
raise TypeError(
"The Channel you specified is not a thread!"
) # TODO: Move to new error formatter.
await self._client.add_member_to_thread(thread_id=int(self.id), user_id=member_id)

_member_id = (
int(member_id) if isinstance(member_id, (int, Snowflake)) else int(member_id.id)
)

await self._client.add_member_to_thread(thread_id=int(self.id), user_id=_member_id)

async def pin_message(
self,
message_id: int,
message_id: Union[int, Snowflake, "Message"], # noqa
) -> None:
"""
Pins a message to the channel.
:param message_id: The id of the message to pin
:type message_id: int
:type message_id: Union[int, Snowflake, "Message"]
"""
if not self._client:
raise AttributeError("HTTPClient not found!")

await self._client.pin_message(channel_id=int(self.id), message_id=message_id)
_message_id = (
int(message_id) if isinstance(message_id, (int, Snowflake)) else int(message_id.id)
)

await self._client.pin_message(channel_id=int(self.id), message_id=_message_id)

async def unpin_message(
self,
message_id: int,
message_id: Union[int, Snowflake, "Message"], # noqa
) -> None:
"""
Unpins a message from the channel.
:param message_id: The id of the message to unpin
:type message_id: int
:type message_id: Union[int, Snowflake, "Message"]
"""
if not self._client:
raise AttributeError("HTTPClient not found!")

await self._client.unpin_message(channel_id=int(self.id), message_id=message_id)
_message_id = (
int(message_id) if isinstance(message_id, (int, Snowflake)) else int(message_id.id)
)

await self._client.unpin_message(channel_id=int(self.id), message_id=_message_id)

async def publish_message(
self,
message_id: int,
message_id: Union[int, Snowflake, "Message"], # noqa
) -> "Message": # noqa
"""Publishes (API calls it crossposts) a message in the channel to any that is followed by.
:param message_id: The id of the message to publish
:type message_id: int
:type message_id: Union[int, Snowflake, "Message"]
:return: The message published
:rtype: Message
"""
if not self._client:
raise AttributeError("HTTPClient not found!")
from .message import Message

res = await self._client.publish_message(channel_id=int(self.id), message_id=message_id)
_message_id = (
int(message_id) if isinstance(message_id, (int, Snowflake)) else int(message_id.id)
)

res = await self._client.publish_message(channel_id=int(self.id), message_id=_message_id)

return Message(**res, _client=self._client)

Expand All @@ -676,17 +693,19 @@ async def get_pinned_messages(self) -> List["Message"]: # noqa

async def get_message(
self,
message_id: int,
message_id: Union[int, Snowflake],
) -> "Message": # noqa
"""
Gets a message sent in that channel.
:param message_id: The ID of the message to get
:type message_id: Union[int, Snowflake]
:return: The message as object
:rtype: Message
"""
res = await self._client.get_message(
channel_id=int(self.id),
message_id=message_id,
message_id=int(message_id),
)
from .message import Message

Expand All @@ -695,7 +714,7 @@ async def get_message(
async def purge(
self,
amount: int,
check: Callable = MISSING,
check: Callable[[...], bool] = MISSING,
before: Optional[int] = MISSING,
reason: Optional[str] = None,
bulk: Optional[bool] = True,
Expand Down Expand Up @@ -900,7 +919,7 @@ async def create_thread(
type: Optional[ChannelType] = ChannelType.GUILD_PUBLIC_THREAD,
auto_archive_duration: Optional[int] = MISSING,
invitable: Optional[bool] = MISSING,
message_id: Optional[int] = MISSING,
message_id: Optional[Union[int, Snowflake, "Message"]] = MISSING, # noqa
reason: Optional[str] = None,
) -> "Channel":
"""
Expand All @@ -916,7 +935,7 @@ async def create_thread(
:param invitable?: Boolean to display if the Thread is open to join or private.
:type invitable: Optional[bool]
:param message_id?: An optional message to create a thread from.
:type message_id: Optional[int]
:type message_id: Optional[Union[int, Snowflake, "Message"]]
:param reason?: An optional reason for the audit log
:type reason: Optional[str]
:return: The created thread
Expand All @@ -933,7 +952,13 @@ async def create_thread(

_auto_archive_duration = None if auto_archive_duration is MISSING else auto_archive_duration
_invitable = None if invitable is MISSING else invitable
_message_id = None if message_id is MISSING else message_id
_message_id = (
None
if message_id is MISSING
else (
int(message_id) if isinstance(message_id, (int, Snowflake)) else int(message_id.id)
)
)
res = await self._client.create_thread(
channel_id=int(self.id),
thread_type=type.value,
Expand Down
14 changes: 7 additions & 7 deletions interactions/api/models/channel.pyi
Expand Up @@ -122,16 +122,16 @@ class Channel(ClientSerializerMixin):
self, auto_archive_duration: int, *, reason: Optional[str] = ...
) -> Channel: ...
async def lock(self, locked: bool = ..., *, reason: Optional[str] = ...) -> Channel: ...
async def add_member(self, member_id: int) -> None: ...
async def pin_message(self, message_id: int) -> None: ...
async def unpin_message(self, message_id: int) -> None: ...
async def publish_message(self, message_id: int) -> Message: ...
async def add_member(self, member_id: Union[int, Snowflake, "Member"]) -> None: ... # noqa
async def pin_message(self, message_id: Union[int, Snowflake, "Message"]) -> None: ... # noqa
async def unpin_message(self, message_id: Union[int, Snowflake, "Message"]) -> None: ... # noqa
async def publish_message(self, message_id: Union[int, Snowflake, "Message"]) -> Message: ... # noqa
async def get_pinned_messages(self) -> List[Message]: ...
async def get_message(self, message_id: int) -> Message: ...
async def get_message(self, message_id: Union[int, Snowflake]) -> Message: ...
async def purge(
self,
amount: int,
check: Callable = ...,
check: Callable[[...], bool] = ...,
before: Optional[int] = ...,
reason: Optional[str] = ...,
bulk: Optional[bool] = ...,
Expand All @@ -142,7 +142,7 @@ class Channel(ClientSerializerMixin):
type: Optional[ChannelType] = ...,
auto_archive_duration: Optional[int] = ...,
invitable: Optional[bool] = ...,
message_id: Optional[int] = ...,
message_id: Optional[Union[int, Snowflake, "Message"]] = ..., # noqa
reason: Optional[str] = ...,
) -> Channel: ...
@property
Expand Down

0 comments on commit 0ce7736

Please sign in to comment.