register<T> method

void register<T>(
  1. Listenable constructor()
)

Implementation

void register<T>(Listenable Function() constructor) {
  final instance = constructor();

  return switch (instance) {
    final CommandContract command => _commands.addCommand(command.build()),
    final GlobalState state => _kernel.globalState.register<T>(state as T),
    final Provider provider => _kernel.providerManager.register(provider),
    final ListenableEvent event => _kernel.eventListener.listen(
        event: event.event,
        handle: (instance as dynamic).handle as Function,
        customId: event.customId),
    final InteractiveComponent component =>
      _kernel.interactiveComponent.register(component),
    _ => throw UnimplementedError(),
  };
}