4444from . import utils
4545from .context_managers import Typing
4646from .enums import ChannelType
47- from .errors import ClientException , InvalidArgument
47+ from .errors import ClientException
4848from .file import File , VoiceMessage
4949from .flags import ChannelFlags , MessageFlags
5050from .invite import Invite
@@ -357,7 +357,7 @@ async def _move(
357357 reason : str | None ,
358358 ) -> None :
359359 if position < 0 :
360- raise InvalidArgument ("Channel position cannot be less than 0." )
360+ raise ValueError ("Channel position cannot be less than 0." )
361361
362362 http = self ._state .http
363363 bucket = self ._sorting_bucket
@@ -460,7 +460,7 @@ async def _edit(self, options: dict[str, Any], reason: str | None) -> ChannelPay
460460 perms = []
461461 for target , perm in overwrites .items ():
462462 if not isinstance (perm , PermissionOverwrite ):
463- raise InvalidArgument (f"Expected PermissionOverwrite received { perm .__class__ .__name__ } " )
463+ raise TypeError (f"Expected PermissionOverwrite received { perm .__class__ .__name__ } " )
464464
465465 allow , deny = perm .pair ()
466466 payload = {
@@ -479,7 +479,7 @@ async def _edit(self, options: dict[str, Any], reason: str | None) -> ChannelPay
479479 pass
480480 else :
481481 if not isinstance (ch_type , ChannelType ):
482- raise InvalidArgument ("type field must be of type ChannelType" )
482+ raise TypeError ("type field must be of type ChannelType" )
483483 options ["type" ] = ch_type .value
484484
485485 try :
@@ -496,7 +496,7 @@ async def _edit(self, options: dict[str, Any], reason: str | None) -> ChannelPay
496496 elif default_reaction_emoji is None :
497497 pass
498498 else :
499- raise InvalidArgument ("default_reaction_emoji must be of type: GuildEmoji | int | str | None" )
499+ raise TypeError ("default_reaction_emoji must be of type: GuildEmoji | int | str | None" )
500500
501501 options ["default_reaction_emoji" ] = (
502502 default_reaction_emoji ._to_forum_reaction_payload () if default_reaction_emoji else None
@@ -893,7 +893,7 @@ async def set_permissions(self, target, *, overwrite=MISSING, reason=None, **per
893893 Editing channel specific permissions failed.
894894 ~discord.NotFound
895895 The role or member being edited is not part of the guild.
896- ~discord.InvalidArgument
896+ TypeError or ValueError
897897 The overwrite parameter invalid or the target type was not
898898 :class:`~discord.Role` or :class:`~discord.Member`.
899899 """
@@ -905,17 +905,17 @@ async def set_permissions(self, target, *, overwrite=MISSING, reason=None, **per
905905 elif isinstance (target , Role ):
906906 perm_type = _Overwrites .ROLE
907907 else :
908- raise InvalidArgument ("target parameter must be either Member or Role" )
908+ raise TypeError ("target parameter must be either Member or Role" )
909909
910910 if overwrite is MISSING :
911911 if len (permissions ) == 0 :
912- raise InvalidArgument ("No overwrite provided." )
912+ raise ValueError ("No overwrite provided." )
913913 try :
914914 overwrite = PermissionOverwrite (** permissions )
915915 except (ValueError , TypeError ) as e :
916- raise InvalidArgument ("Invalid permissions given to keyword arguments." ) from e
916+ raise ValueError ("Invalid permissions given to keyword arguments." ) from e
917917 elif len (permissions ) > 0 :
918- raise InvalidArgument ("Cannot mix overwrite and keyword arguments." )
918+ raise ValueError ("Cannot mix overwrite and keyword arguments." )
919919
920920 # TODO: wait for event
921921
@@ -925,7 +925,7 @@ async def set_permissions(self, target, *, overwrite=MISSING, reason=None, **per
925925 (allow , deny ) = overwrite .pair ()
926926 await http .edit_channel_permissions (self .id , target .id , allow .value , deny .value , perm_type , reason = reason )
927927 else :
928- raise InvalidArgument ("Invalid overwrite type provided." )
928+ raise ValueError ("Invalid overwrite type provided." )
929929
930930 async def _clone_impl (
931931 self : GCH ,
@@ -1074,7 +1074,7 @@ async def move(self, **kwargs) -> None:
10741074
10751075 Raises
10761076 ------
1077- InvalidArgument
1077+ ValueError
10781078 An invalid position was given or a bad mix of arguments was passed.
10791079 Forbidden
10801080 You do not have permissions to move the channel.
@@ -1089,7 +1089,7 @@ async def move(self, **kwargs) -> None:
10891089 before , after = kwargs .get ("before" ), kwargs .get ("after" )
10901090 offset = kwargs .get ("offset" , 0 )
10911091 if sum (bool (a ) for a in (beginning , end , before , after )) > 1 :
1092- raise InvalidArgument ("Only one of [before, after, end, beginning] can be used." )
1092+ raise ValueError ("Only one of [before, after, end, beginning] can be used." )
10931093
10941094 bucket = self ._sorting_bucket
10951095 parent_id = kwargs .get ("category" , MISSING )
@@ -1124,7 +1124,7 @@ async def move(self, **kwargs) -> None:
11241124 index = next ((i + 1 for i , c in enumerate (channels ) if c .id == after .id ), None )
11251125
11261126 if index is None :
1127- raise InvalidArgument ("Could not resolve appropriate move position" )
1127+ raise ValueError ("Could not resolve appropriate move position" )
11281128
11291129 channels .insert (max ((index + offset ), 0 ), self )
11301130 payload = []
@@ -1481,7 +1481,7 @@ async def send(
14811481 Sending the message failed.
14821482 ~discord.Forbidden
14831483 You do not have the proper permissions to send the message.
1484- ~discord.InvalidArgument
1484+ TypeError or ValueError
14851485 The ``files`` list is not of the appropriate size,
14861486 you specified both ``file`` and ``files``,
14871487 or you specified both ``embed`` and ``embeds``,
@@ -1494,14 +1494,14 @@ async def send(
14941494 content = str (content ) if content is not None else None
14951495
14961496 if embed is not None and embeds is not None :
1497- raise InvalidArgument ("cannot pass both embed and embeds parameter to send()" )
1497+ raise ValueError ("cannot pass both embed and embeds parameter to send()" )
14981498
14991499 if embed is not None :
15001500 embed = embed .to_dict ()
15011501
15021502 elif embeds is not None :
15031503 if len (embeds ) > 10 :
1504- raise InvalidArgument ("embeds parameter must be a list of up to 10 elements" )
1504+ raise ValueError ("embeds parameter must be a list of up to 10 elements" )
15051505 embeds = [embed .to_dict () for embed in embeds ]
15061506
15071507 flags = MessageFlags (
@@ -1537,13 +1537,13 @@ async def send(
15371537 "3.0" ,
15381538 )
15391539 except AttributeError :
1540- raise InvalidArgument (
1540+ raise ValueError (
15411541 "reference parameter must be Message, MessageReference, or PartialMessage"
15421542 ) from None
15431543
15441544 if view :
15451545 if not hasattr (view , "__discord_ui_view__" ):
1546- raise InvalidArgument (f"view parameter must be View not { view .__class__ !r} " )
1546+ raise TypeError (f"view parameter must be View not { view .__class__ !r} " )
15471547
15481548 components = view .to_components ()
15491549 if view .is_components_v2 ():
@@ -1557,17 +1557,17 @@ async def send(
15571557 poll = poll .to_dict ()
15581558
15591559 if file is not None and files is not None :
1560- raise InvalidArgument ("cannot pass both file and files parameter to send()" )
1560+ raise ValueError ("cannot pass both file and files parameter to send()" )
15611561
15621562 if file is not None :
15631563 if not isinstance (file , File ):
1564- raise InvalidArgument ("file parameter must be File" )
1564+ raise TypeError ("file parameter must be File" )
15651565 files = [file ]
15661566 elif files is not None :
15671567 if len (files ) > 10 :
1568- raise InvalidArgument ("files parameter must be a list of up to 10 elements" )
1568+ raise ValueError ("files parameter must be a list of up to 10 elements" )
15691569 elif not all (isinstance (file , File ) for file in files ):
1570- raise InvalidArgument ("files parameter must be a list of File" )
1570+ raise TypeError ("files parameter must be a list of File" )
15711571
15721572 if files is not None :
15731573 flags = flags + MessageFlags (is_voice_message = any (isinstance (f , VoiceMessage ) for f in files ))
0 commit comments