@@ -595,7 +595,7 @@ async def lock(
595595
596596 async def add_member (
597597 self ,
598- member_id : int ,
598+ member_id : Union [ int , Snowflake , "Member" ], # noqa
599599 ) -> None :
600600 """
601601 This adds a member to the channel, if the channel is a thread.
@@ -609,54 +609,71 @@ async def add_member(
609609 raise TypeError (
610610 "The Channel you specified is not a thread!"
611611 ) # TODO: Move to new error formatter.
612- await self ._client .add_member_to_thread (thread_id = int (self .id ), user_id = member_id )
612+
613+ _member_id = (
614+ int (member_id ) if isinstance (member_id , (int , Snowflake )) else int (member_id .id )
615+ )
616+
617+ await self ._client .add_member_to_thread (thread_id = int (self .id ), user_id = _member_id )
613618
614619 async def pin_message (
615620 self ,
616- message_id : int ,
621+ message_id : Union [ int , Snowflake , "Message" ], # noqa
617622 ) -> None :
618623 """
619624 Pins a message to the channel.
620625
621626 :param message_id: The id of the message to pin
622- :type message_id: int
627+ :type message_id: Union[ int, Snowflake, "Message"]
623628 """
624629 if not self ._client :
625630 raise AttributeError ("HTTPClient not found!" )
626631
627- await self ._client .pin_message (channel_id = int (self .id ), message_id = message_id )
632+ _message_id = (
633+ int (message_id ) if isinstance (message_id , (int , Snowflake )) else int (message_id .id )
634+ )
635+
636+ await self ._client .pin_message (channel_id = int (self .id ), message_id = _message_id )
628637
629638 async def unpin_message (
630639 self ,
631- message_id : int ,
640+ message_id : Union [ int , Snowflake , "Message" ], # noqa
632641 ) -> None :
633642 """
634643 Unpins a message from the channel.
635644
636645 :param message_id: The id of the message to unpin
637- :type message_id: int
646+ :type message_id: Union[ int, Snowflake, "Message"]
638647 """
639648 if not self ._client :
640649 raise AttributeError ("HTTPClient not found!" )
641650
642- await self ._client .unpin_message (channel_id = int (self .id ), message_id = message_id )
651+ _message_id = (
652+ int (message_id ) if isinstance (message_id , (int , Snowflake )) else int (message_id .id )
653+ )
654+
655+ await self ._client .unpin_message (channel_id = int (self .id ), message_id = _message_id )
643656
644657 async def publish_message (
645658 self ,
646- message_id : int ,
659+ message_id : Union [ int , Snowflake , "Message" ], # noqa
647660 ) -> "Message" : # noqa
648661 """Publishes (API calls it crossposts) a message in the channel to any that is followed by.
649662
650663 :param message_id: The id of the message to publish
651- :type message_id: int
664+ :type message_id: Union[ int, Snowflake, "Message"]
652665 :return: The message published
653666 :rtype: Message
654667 """
655668 if not self ._client :
656669 raise AttributeError ("HTTPClient not found!" )
657670 from .message import Message
658671
659- res = await self ._client .publish_message (channel_id = int (self .id ), message_id = message_id )
672+ _message_id = (
673+ int (message_id ) if isinstance (message_id , (int , Snowflake )) else int (message_id .id )
674+ )
675+
676+ res = await self ._client .publish_message (channel_id = int (self .id ), message_id = _message_id )
660677
661678 return Message (** res , _client = self ._client )
662679
@@ -676,17 +693,19 @@ async def get_pinned_messages(self) -> List["Message"]: # noqa
676693
677694 async def get_message (
678695 self ,
679- message_id : int ,
696+ message_id : Union [ int , Snowflake ] ,
680697 ) -> "Message" : # noqa
681698 """
682699 Gets a message sent in that channel.
683700
701+ :param message_id: The ID of the message to get
702+ :type message_id: Union[int, Snowflake]
684703 :return: The message as object
685704 :rtype: Message
686705 """
687706 res = await self ._client .get_message (
688707 channel_id = int (self .id ),
689- message_id = message_id ,
708+ message_id = int ( message_id ) ,
690709 )
691710 from .message import Message
692711
@@ -695,7 +714,7 @@ async def get_message(
695714 async def purge (
696715 self ,
697716 amount : int ,
698- check : Callable = MISSING ,
717+ check : Callable [[...], bool ] = MISSING ,
699718 before : Optional [int ] = MISSING ,
700719 reason : Optional [str ] = None ,
701720 bulk : Optional [bool ] = True ,
@@ -900,7 +919,7 @@ async def create_thread(
900919 type : Optional [ChannelType ] = ChannelType .GUILD_PUBLIC_THREAD ,
901920 auto_archive_duration : Optional [int ] = MISSING ,
902921 invitable : Optional [bool ] = MISSING ,
903- message_id : Optional [int ] = MISSING ,
922+ message_id : Optional [Union [ int , Snowflake , "Message" ]] = MISSING , # noqa
904923 reason : Optional [str ] = None ,
905924 ) -> "Channel" :
906925 """
@@ -916,7 +935,7 @@ async def create_thread(
916935 :param invitable?: Boolean to display if the Thread is open to join or private.
917936 :type invitable: Optional[bool]
918937 :param message_id?: An optional message to create a thread from.
919- :type message_id: Optional[int]
938+ :type message_id: Optional[Union[ int, Snowflake, "Message"] ]
920939 :param reason?: An optional reason for the audit log
921940 :type reason: Optional[str]
922941 :return: The created thread
@@ -933,7 +952,13 @@ async def create_thread(
933952
934953 _auto_archive_duration = None if auto_archive_duration is MISSING else auto_archive_duration
935954 _invitable = None if invitable is MISSING else invitable
936- _message_id = None if message_id is MISSING else message_id
955+ _message_id = (
956+ None
957+ if message_id is MISSING
958+ else (
959+ int (message_id ) if isinstance (message_id , (int , Snowflake )) else int (message_id .id )
960+ )
961+ )
937962 res = await self ._client .create_thread (
938963 channel_id = int (self .id ),
939964 thread_type = type .value ,
0 commit comments