@@ -99,11 +99,18 @@ def load_addons(self, *addons: typing.Type["Addon"]):
9999 for e in loaded .listeners :
100100 e .register_addon (loaded )
101101 self .on_ (e .event , e .func )
102+ if hasattr (self , "interaction" ):
103+ for t in loaded .interactions :
104+ t .register_self_or_cls (loaded )
105+ self .interaction .add_command (t )
106+ for cc in loaded .callbacks :
107+ cc .register_self_or_cls (loaded )
108+ self .interaction .add_callback (cc )
102109
103110 def unload_addons (self , * addons : typing .Union [str , typing .Type ["Addon" ]]):
104111 for x in addons :
112+ tgt = x if isinstance (x , str ) else x .name
105113 for i , n in enumerate (self .addon_names ):
106- tgt = x if isinstance (x , str ) else x .name
107114 if n == tgt :
108115 del self .addon_names [i ]
109116 addon = self .addons .pop (i )
@@ -113,6 +120,11 @@ def unload_addons(self, *addons: typing.Union[str, typing.Type["Addon"]]):
113120 event_name = e .event .upper ().lstrip ("ON_" )
114121 if self .events .get (event_name ):
115122 self .events .remove (event_name , e .func )
123+ if hasattr (self , "interaction" ):
124+ for t in addon .interactions :
125+ self .interaction .remove_command (t )
126+ for cc in addon .callbacks :
127+ self .interaction .remove_callback (cc )
116128
117129 def load_module (self , import_path : str ):
118130 try :
@@ -129,7 +141,6 @@ def load_module(self, import_path: str):
129141 def unload_module (self , import_path : str ):
130142 try :
131143 module = importlib .import_module (import_path )
132- importlib .reload (module )
133144 if module .__name__ in self .modules :
134145 if hasattr (module , "unload" ):
135146 module .unload (self )
0 commit comments