diff --git a/cmd/bot/command.go b/cmd/bot/command.go new file mode 100644 index 0000000..56ddb5c --- /dev/null +++ b/cmd/bot/command.go @@ -0,0 +1,41 @@ +package main + +import ( + "strings" + + "github.com/gempir/go-twitch-irc/v3" +) + +func (app *application) handleCommand(message twitch.PrivateMessage) { + app.logger.Info("[COMMAND HANDLER]", message) + + // commandName is the actual name of the command without the prefix. + // e.g. `()ping` would be `ping`. + commandName := strings.ToLower(strings.SplitN(message.Message, " ", 3)[0][2:]) + + // cmdParams are additional command parameters. + // e.g. `()weather san antonio` + // cmdParam[0] is `san` and cmdParam[1] = `antonio`. + // + // Since Twitch messages are at most 500 characters I use a + // maximum count of 500+10 just to be safe. + // https://discuss.dev.twitch.tv/t/missing-client-side-message-length-check/21316 + cmdParams := strings.SplitN(message.Message, " ", 510) + _ = cmdParams + + // msgLen is the amount of words in a message without the prefix. + // Useful to check if enough cmdParams are provided. + msgLen := len(strings.SplitN(message.Message, " ", -2)) + + // target is the channelname the message originated from and + // where we are responding. + target := message.Channel + + switch commandName { + case "": + if msgLen == 1 { + app.twitchClient.Say(target, "xd") + return + } + } +} diff --git a/cmd/bot/privatemessage.go b/cmd/bot/privatemessage.go index d9d8d18..9be2caa 100644 --- a/cmd/bot/privatemessage.go +++ b/cmd/bot/privatemessage.go @@ -16,7 +16,8 @@ func (app *application) handlePrivateMessage(message twitch.PrivateMessage) { if len(message.Message) >= 2 { if message.Message[:2] == "()" { // TODO: Command Handling - app.logger.Infof("[Command detected]: ", message.Message) + app.handleCommand(message) + // app.logger.Infof("[Command detected]: ", message.Message) return } }