package discord import ( "context" "log/slog" "github.com/disgoorg/disgo/events" "discord-music-bot/internal/commands" ) type Router struct { registry *commands.Registry logger *slog.Logger } func NewRouter(registry *commands.Registry, logger *slog.Logger) *Router { return &Router{ registry: registry, logger: logger, } } func (r *Router) OnApplicationCommand(event *events.ApplicationCommandInteractionCreate) { name := event.SlashCommandInteractionData().CommandName() cmd, ok := r.registry.Get(name) if !ok { r.logger.Warn("received unknown command", slog.String("command", name)) return } if err := cmd.Execute(context.Background(), event); err != nil { r.logger.Error("command execution failed", slog.String("command", name), slog.Any("err", err)) } }