From 7f6d764821e403771acee22a146c162d672ad91f Mon Sep 17 00:00:00 2001 From: Matthieu Grieger Date: Mon, 15 Dec 2014 16:40:05 -0800 Subject: [PATCH] Now uses config, response messages added --- commands.go | 114 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 94 insertions(+), 20 deletions(-) diff --git a/commands.go b/commands.go index 0f34d9b..f6795e5 100644 --- a/commands.go +++ b/commands.go @@ -9,10 +9,12 @@ package main import ( "fmt" + "github.com/layeh/gumble/gumble" + "regexp" "strings" ) -func parseCommand(username, command string) { +func parseCommand(user *gumble.User, username, command string) { var com, argument string if strings.Contains(command, " ") { parsedCommand := strings.Split(command, " ") @@ -21,48 +23,120 @@ func parseCommand(username, command string) { com = command argument = "" } - + switch com { - case dj.conf.Aliases.AddAlias: - success := add(username, argument) - if success { - fmt.Println("Add successful!") + case dj.conf.Aliases.AddAlias: + if dj.HasPermission(username, dj.conf.Permissions.AdminAdd) { + if argument == "" { + user.Send(NO_ARGUMENT_MSG) + } else { + success := add(username, argument) + if success { + fmt.Println("Add successful!") + dj.client.Me().Channel().Send(fmt.Sprintf("%s has added a song to the queue.", username)) + } } - case dj.conf.Aliases.SkipAlias: + } else { + user.Send(NO_PERMISSION_MSG) + } + case dj.conf.Aliases.SkipAlias: + if dj.HasPermission(username, dj.conf.Permissions.AdminSkip) { success := skip(username, false) if success { fmt.Println("Skip successful!") } - case dj.conf.Aliases.AdminSkipAlias: + } else { + user.Send(NO_PERMISSION_MSG) + } + case dj.conf.Aliases.AdminSkipAlias: + if dj.HasPermission(username, dj.conf.Permissions.AdminSkip) { success := skip(username, true) if success { fmt.Println("Forceskip successful!") } - case dj.conf.Aliases.VolumeAlias: - success := volume(username, argument) - if success { - fmt.Println("Volume change successful!") + } else { + user.Send(NO_PERMISSION_MSG) + } + case dj.conf.Aliases.VolumeAlias: + if dj.HasPermission(username, dj.conf.Permissions.AdminVolume) { + if argument == "" { + dj.client.Self().Channel().Send(fmt.Sprintf(CUR_VOLUME_HTML, dj.conf.Volume.DefaultVolume), false) + } else { + success := volume(username, argument) + if success { + fmt.Println("Skip successful!") + } } - case dj.conf.Aliases.MoveAlias: - success := move(username, argument) - if success { - fmt.Println("Move successful!") + } else { + user.Send(NO_PERMISSION_MSG) + } + case dj.conf.Aliases.MoveAlias: + if dj.HasPermission(username, dj.conf.Permissions.AdminMove) { + if argument == "" { + user.Send(NO_ARGUMENT_MSG) + } else { + success := move(username, argument) + if success { + fmt.Printf("%s has been moved to %s.", dj.client.Self().Name(), argument) + } } - case dj.conf.Aliases.ReloadAlias: + } else { + user.Send(NO_PERMISSION_MSG) + } + case dj.conf.Aliases.ReloadAlias: + if dj.HasPermission(username, dj.conf.Permissions.AdminReload) { err := loadConfiguration() if err == nil { - fmt.Println("Reload successful!") + user.Send(CONFIG_RELOAD_SUCCESS_MSG) + } else { + panic(err) } - case dj.conf.Aliases.KillAlias: + } else { + user.Send(NO_PERMISSION_MSG) + } + case dj.conf.Aliases.KillAlias: + if dj.HasPermission(username, dj.conf.Permissions.AdminKill) { success := kill(username) if success { fmt.Println("Kill successful!") } + } else { + user.Send(NO_PERMISSION_MSG) + } + default: + user.Send(COMMAND_DOESNT_EXIST_MSG) } } func add(user, url string) bool { - return true + youtubePatterns := []string{ + `https?:\/\/www\.youtube\.com\/watch\?v=([\w-]+)`, + `https?:\/\/youtube\.com\/watch\?v=([\w-]+)`, + `https?:\/\/youtu.be\/([\w-]+)`, + `https?:\/\/youtube.com\/v\/([\w-]+)`, + `https?:\/\/www.youtube.com\/v\/([\w-]+)`, + } + matchFound := false + + for _, pattern := range youtubePatterns { + re, err := regexp.Compile(pattern) + if err == nil { + if re.MatchString(url) { + matchFound = true + break + } + } + } + + if matchFound { + if dj.queue.AddSong(NewSong(user, url)) { + return true + } else { + return false + } + } else { + return false + } } func skip(user string, admin bool) bool {