11from logging import Logger
2- from typing import List , Optional , Union
2+ from typing import TYPE_CHECKING , List , Optional , Union
33
44from ..api .error import LibraryException
5- from ..api .http .client import HTTPClient
65from ..api .models .channel import Channel
76from ..api .models .flags import Permissions
87from ..api .models .guild import Guild
1817from .models .component import ActionRow , Button , Modal , SelectMenu , _build_components
1918from .models .misc import InteractionData
2019
20+ if TYPE_CHECKING :
21+ from .bot import Client , Extension
22+ from .models .command import Command
23+
2124log : Logger = get_logger ("context" )
2225
2326__all__ = (
@@ -43,7 +46,6 @@ class _Context(ClientSerializerMixin):
4346 :ivar Optional[Guild] guild: The guild data model.
4447 """
4548
46- client : HTTPClient = field (default = None )
4749 message : Optional [Message ] = field (converter = Message , default = None , add_client = True )
4850 author : Member = field (converter = Member , default = None , add_client = True )
4951 member : Member = field (converter = Member , add_client = True )
@@ -66,9 +68,6 @@ class _Context(ClientSerializerMixin):
6668 app_permissions : Permissions = field (converter = convert_int (Permissions ), default = None )
6769
6870 def __attrs_post_init__ (self ) -> None :
69- # backwards compatibility
70- self .client = self ._client
71-
7271 if self .member :
7372 if self .guild_id :
7473 self .member ._extras ["guild_id" ] = self .guild_id
@@ -372,10 +371,17 @@ class CommandContext(_Context):
372371 :ivar str locale?: The selected language of the user invoking the interaction.
373372 :ivar str guild_locale?: The guild's preferred language, if invoked in a guild.
374373 :ivar str app_permissions?: Bitwise set of permissions the bot has within the channel the interaction was sent from.
374+ :ivar Client client: The client instance that the command belongs to.
375+ :ivar Command command: The command object that is being invoked.
376+ :ivar Extension extension: The extension the command belongs to.
375377 """
376378
377379 target : Optional [Union [Message , Member , User ]] = field (default = None )
378380
381+ client : "Client" = field (default = None , init = False )
382+ command : "Command" = field (default = None , init = False )
383+ extension : "Extension" = field (default = None , init = False )
384+
379385 def __attrs_post_init__ (self ) -> None :
380386 super ().__attrs_post_init__ ()
381387
0 commit comments