diff options
Diffstat (limited to 'wat/bot.go')
| -rw-r--r-- | wat/bot.go | 28 | 
1 files changed, 25 insertions, 3 deletions
@@ -58,25 +58,47 @@ func (w *WatBot) AllowedChannel(c string) bool {  }  func (w *WatBot) Msg(m *irc.Message) { -	if !strings.Contains(m.Prefix.Host, "tripsit") || (!w.AllowedChannel(m.Params[0]) && !w.Admin(m)) { +	// bail out if you're not yves, if you're not tripsit or if you're not in an allowed channel +	// but if you're an admin you can do whatever +	if m.Prefix.Host == "tripsit/user/Yves" || !strings.Contains(m.Prefix.Host, "tripsit") || (!w.AllowedChannel(m.Params[0]) && !w.Admin(m)) {  		return  	} +	if len(m.Params[1]) == 0 { +		return +	} + +  	args := strings.FieldsFunc(m.Params[1], func(c rune) bool {return c == ' '}) +	if len(args) == 0 { +		return +	} +  	if w.Admin(m) {  		// Do a special admin command and return, or continue -		if args[0] == "imp" { +		if args[0] == "imp" && len(args) > 2 {  			w.write(args[1], args[2:]...) +			return  		}  	} -	if len(args) < 1 || (args[0] != "wat" && args[0][0] != '#') { +	// strip offline message prefix from znc for handling offline buffer +	if args[0][0] == '[' && len(args) > 1 { +		args = args[1:] +	} + +	// check if command char (or something weird) is present +	if args[0] != "wat" && args[0][0] != '#' {  		return  	} + + +	// clean input  	if args[0][0] == '#' {  		args[0] = args[0][1:]  	} +  	user := strings.ToLower(m.Prefix.Name)  	player := w.Db.User(user, m.Prefix.Host, true)  	w.game.Msg(m, &player, args)  | 
