2121from packaging .version import parse , Version
2222from psycopg .rows import dict_row
2323from typing import cast , TYPE_CHECKING , Iterable , Any , Callable
24+ from typing_extensions import deprecated
2425
2526from .helper import get_all_players , is_ucid , format_string , cache_with_expiration
2627
5758 "print_ruler" ,
5859 "match" ,
5960 "find_similar_names" ,
60- "get_interaction_param" ,
6161 "get_all_linked_members" ,
6262 "NodeTransformer" ,
6363 "InstanceTransformer" ,
@@ -406,6 +406,7 @@ def check_roles(roles: Iterable[str | int], member: discord.Member | None = None
406406 return False
407407
408408
409+ @deprecated ("Use app_has_role instead" )
409410def has_role (role : str ):
410411 """
411412 Decorator for non-application commands to check if the user has a specific role.
@@ -440,6 +441,7 @@ def predicate(interaction: Interaction) -> bool:
440441 return app_commands .check (predicate )
441442
442443
444+ @deprecated ("Use app_has_roles instead" )
443445def has_roles (roles : list [str ]):
444446 """
445447 Decorator for non-application commands to check if the user has one of the provided roles.
@@ -493,9 +495,11 @@ def is_restricted(interaction: discord.Interaction) -> bool:
493495 return True
494496 return False
495497
498+
496499def restricted_check (interaction : discord .Interaction ) -> bool :
497500 return not is_restricted (interaction )
498501
502+
499503def get_role_ids (plugin : Plugin , role_names ) -> list [int ]:
500504 role_ids = []
501505 if not isinstance (role_names , list ):
@@ -884,29 +888,6 @@ def find_similar_names(list1: list[str], list2: list[str], threshold: int = 90)
884888 return similar_names
885889
886890
887- def get_interaction_param (interaction : discord .Interaction , name : str ) -> Any | None :
888- """
889- Returns the value of a specific parameter in a Discord interaction.
890-
891- :param interaction: The Discord interaction object.
892- :param name: The name of the parameter to retrieve.
893- :return: The value of the parameter, or None if not found.
894- """
895- def inner (root : dict | list ) -> Any | None :
896- if isinstance (root , dict ):
897- if root .get ('name' ) == name :
898- return root .get ('value' )
899- elif isinstance (root , list ):
900- for param in root :
901- if 'options' in param :
902- return inner (param ['options' ])
903- if param ['name' ] == name :
904- return param ['value' ]
905- return None
906-
907- return inner (interaction .data .get ('options' , {}))
908-
909-
910891def get_all_linked_members (interaction : discord .Interaction ) -> list [discord .Member ]:
911892 """
912893 :param interaction: the discord Interaction
@@ -1048,7 +1029,7 @@ def __init__(self, *, unused: bool = False):
10481029
10491030 async def transform (self , interaction : discord .Interaction , value : str | None ) -> Instance | None :
10501031 if value :
1051- node : Node = await NodeTransformer ().transform (interaction , get_interaction_param ( interaction , ' node' ) )
1032+ node : Node = await NodeTransformer ().transform (interaction , interaction . namespace . node )
10521033 if not node :
10531034 return None
10541035 return node .instances .get (value )
@@ -1061,7 +1042,7 @@ async def autocomplete(self, interaction: discord.Interaction, current: str) ->
10611042 if not await interaction .command ._check_can_run (interaction ):
10621043 return []
10631044 try :
1064- node : Node = await NodeTransformer ().transform (interaction , get_interaction_param ( interaction , ' node' ) )
1045+ node : Node = await NodeTransformer ().transform (interaction , interaction . namespace . node )
10651046 if not node :
10661047 return []
10671048 if self .unused :
@@ -1088,7 +1069,7 @@ async def airbase_autocomplete(interaction: discord.Interaction, current: str) -
10881069 if not await interaction .command ._check_can_run (interaction ):
10891070 return []
10901071 try :
1091- server : Server = await ServerTransformer ().transform (interaction , get_interaction_param ( interaction , ' server' ) )
1072+ server : Server = await ServerTransformer ().transform (interaction , interaction . namespace . server )
10921073 if not server or not server .current_mission :
10931074 return []
10941075 choices : list [app_commands .Choice [int ]] = [
@@ -1143,8 +1124,7 @@ async def group_autocomplete(interaction: discord.Interaction, current: str) ->
11431124 # is a user is not allowed to run the interaction, they are not allowed to see the autocompletions also
11441125 if not await interaction .command ._check_can_run (interaction ):
11451126 return []
1146- server : Server = await ServerTransformer ().transform (interaction ,
1147- get_interaction_param (interaction , 'server' ))
1127+ server : Server = await ServerTransformer ().transform (interaction , interaction .namespace .server )
11481128 return [
11491129 app_commands .Choice (name = group_name , value = group_name )
11501130 for group_name in set (player .group_name for player in server .get_active_players () if player .group_id != 0 )
@@ -1227,16 +1207,15 @@ def __init__(self, *, active: bool | None = None, watchlist: bool | None = None,
12271207 self .vip = vip
12281208
12291209 async def transform (self , interaction : discord .Interaction , value : str ) -> Player :
1230- server : Server = await ServerTransformer ().transform (interaction , get_interaction_param ( interaction , ' server' ) )
1210+ server : Server = await ServerTransformer ().transform (interaction , interaction . namespace . server )
12311211 return server .get_player (ucid = value , active = self .active )
12321212
12331213 async def autocomplete (self , interaction : Interaction , current : str ) -> list [app_commands .Choice [str ]]:
12341214 if not await interaction .command ._check_can_run (interaction ):
12351215 return []
12361216 try :
12371217 if self .active :
1238- server : Server = await ServerTransformer ().transform (interaction ,
1239- get_interaction_param (interaction , 'server' ))
1218+ server : Server = await ServerTransformer ().transform (interaction , interaction .namespace .server )
12401219 if not server :
12411220 return []
12421221 choices : list [app_commands .Choice [str ]] = [
0 commit comments