Skip to content

Commit 0d1b6a7

Browse files
authored
Supports registering initialized addon (#2)
* Supports registering initialized addon * Fixes type hinting * passes correct value
1 parent 8d60802 commit 0d1b6a7

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

dico_command/bot.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -205,28 +205,30 @@ async def handle_command_error(self, context, ex):
205205
self.dispatch("command_error", context, ex)
206206

207207
def load_addons(self, *addons: typing.Type["Addon"]):
208-
for x in addons:
209-
if x.name in self.addon_names:
210-
raise AddonAlreadyLoaded(name=x.name)
211-
self.addon_names.append(x.name)
212-
loaded = x(self)
213-
self.addons.append(loaded)
214-
for c in loaded.commands:
215-
c.register_addon(loaded)
216-
self.add_command(c)
217-
for e in loaded.listeners:
218-
e.register_addon(loaded)
219-
self.on_(e.event, e.func)
208+
self.register_addons(*[addon(self) for addon in addons])
209+
210+
def register_addons(self, *addons: "Addon"):
211+
for addon in addons:
212+
if addon.name in self.addon_names:
213+
raise AddonAlreadyLoaded(name=addon.name)
214+
self.addon_names.append(addon.name)
215+
self.addons.append(addon)
216+
for command in addon.commands:
217+
command.register_addon(addon)
218+
self.add_command(command)
219+
for event in addon.listeners:
220+
event.register_addon(addon)
221+
self.on_(event.event, event.func)
220222
if hasattr(self, "interaction"):
221-
for t in loaded.interactions:
222-
t.register_self_or_cls(loaded)
223-
self.interaction.add_command(t)
224-
for cc in loaded.callbacks:
225-
cc.register_self_or_cls(loaded)
226-
self.interaction.add_callback(cc)
227-
for ac in loaded.autocompletes:
228-
ac.register_self_or_cls(loaded)
229-
self.interaction.add_autocomplete(ac)
223+
for interaction in addon.interactions:
224+
interaction.register_self_or_cls(addon)
225+
self.interaction.add_command(interaction)
226+
for callback in addon.callbacks:
227+
callback.register_self_or_cls(addon)
228+
self.interaction.add_callback(callback)
229+
for autocomplete in addon.autocompletes:
230+
autocomplete.register_self_or_cls(addon)
231+
self.interaction.add_autocomplete(autocomplete)
230232

231233
def unload_addons(self, *addons: typing.Union[str, typing.Type["Addon"]]):
232234
for x in addons:

0 commit comments

Comments
 (0)