catbase/bot/handlers.go

62 lines
1.3 KiB
Go

package bot
import (
"fmt"
)
import irc "github.com/fluffle/goirc/client"
// Interface used for compatibility with the Plugin interface
type Handler interface {
Message(user *User, channel, message string) bool
}
// Checks to see if our user exists and if any changes have occured to it
// This uses a linear scan for now, oh well.
func (b *Bot) checkuser(nick string) *User {
var user *User = nil
for _, usr := range b.Users {
if usr.Name == nick {
user = &usr
}
}
if user == nil {
fmt.Println("Making a new user")
user = &User{
Name: nick,
Alts: make([]string, 1),
MessageLog: make([]string, 50),
}
b.Users = append(b.Users, *user)
}
return user
}
// Handles incomming PRIVMSG requests
func (b *Bot) Msg_recieved(conn *irc.Conn, line *irc.Line) {
// Check for the user
user := b.checkuser(line.Nick)
channel := line.Args[0]
message := line.Args[1]
user.MessageLog = append(user.MessageLog, message)
fmt.Printf("In %s, %s said: '%s'\n", channel, line.Nick, message)
for _, p := range b.Plugins {
if p.Message(user, channel, message) {
break
}
}
}
// Take an input string and mutate it based on $vars in the string
func (b *Bot) filter(input string) string {
return input
}
// Sends message to channel
func (b *Bot) SendMessage(channel, message string) {
b.Conn.Privmsg(channel, message)
}