Files

37 lines
794 B
Go

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))
}
}