@@ -3,8 +3,10 @@ package bot
33import (
44 "context"
55 "strings"
6+ "sync"
67 "time"
78
9+ "first.fm/internal/emojis"
810 "first.fm/internal/lastfm"
911 "first.fm/internal/logger"
1012 "github.com/disgoorg/disgo/discord"
@@ -23,9 +25,15 @@ type CommandHandler func(*CommandContext) error
2325var (
2426 allCommands []discord.ApplicationCommandCreate
2527 registry = map [string ]CommandHandler {}
28+ initOnce sync.Once
2629)
2730
2831func Register (meta discord.ApplicationCommandCreate , handler CommandHandler ) {
32+ initOnce .Do (func () {
33+ allCommands = []discord.ApplicationCommandCreate {}
34+ registry = map [string ]CommandHandler {}
35+ })
36+
2937 logger .Infow ("registered command" , logger.F {"name" : meta .CommandName ()})
3038 allCommands = append (allCommands , meta )
3139 registry [meta .CommandName ()] = handler
@@ -58,9 +66,9 @@ func Dispatcher(bot *Bot) func(*events.ApplicationCommandInteractionCreate) {
5866 }
5967
6068 if err := handler (ctx ); err != nil {
61- logger .Errorw ("command failed" , logger.F {"name" : data .CommandName (), "err" : err .Error ()})
62- _ = event .CreateMessage (discord .NewMessageCreateBuilder ().
63- SetContent ( "error: " + err . Error () ).
69+ logger .Warnw ("command failed" , logger.F {"name" : data .CommandName (), "err" : err .Error ()})
70+ _ = ctx .CreateMessage (discord .NewMessageCreateBuilder ().
71+ SetContentf ( "%s %v" , emojis . EmojiCross , err ).
6472 SetEphemeral (true ).
6573 Build ())
6674 }
0 commit comments