mirror of https://github.com/velour/catbase.git
Added plugin ordering so that all queries are handled by the correct plugin
This commit is contained in:
parent
c50a908af5
commit
94063c3967
19
bot/bot.go
19
bot/bot.go
|
@ -9,7 +9,8 @@ import "strings"
|
||||||
type Bot struct {
|
type Bot struct {
|
||||||
// Each plugin must be registered in our plugins handler. To come: a map so that this
|
// Each plugin must be registered in our plugins handler. To come: a map so that this
|
||||||
// will allow plugins to respond to specific kinds of events
|
// will allow plugins to respond to specific kinds of events
|
||||||
Plugins map[string]Handler
|
Plugins map[string]Handler
|
||||||
|
PluginOrdering []string
|
||||||
|
|
||||||
// Users holds information about all of our friends
|
// Users holds information about all of our friends
|
||||||
Users []User
|
Users []User
|
||||||
|
@ -59,17 +60,19 @@ func NewBot(config *config.Config, c *irc.Conn) *Bot {
|
||||||
db := session.DB(config.DbName)
|
db := session.DB(config.DbName)
|
||||||
|
|
||||||
return &Bot{
|
return &Bot{
|
||||||
Config: config,
|
Config: config,
|
||||||
Plugins: make(map[string]Handler),
|
Plugins: make(map[string]Handler),
|
||||||
Users: make([]User, 1),
|
PluginOrdering: make([]string, 0),
|
||||||
Conn: c,
|
Users: make([]User, 0),
|
||||||
DbSession: session,
|
Conn: c,
|
||||||
Db: db,
|
DbSession: session,
|
||||||
Version: config.Version,
|
Db: db,
|
||||||
|
Version: config.Version,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds a constructed handler to the bots handlers list
|
// Adds a constructed handler to the bots handlers list
|
||||||
func (b *Bot) AddHandler(name string, h Handler) {
|
func (b *Bot) AddHandler(name string, h Handler) {
|
||||||
b.Plugins[strings.ToLower(name)] = h
|
b.Plugins[strings.ToLower(name)] = h
|
||||||
|
b.PluginOrdering = append(b.PluginOrdering, name)
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,7 +130,8 @@ func (b *Bot) MsgRecieved(conn *irc.Conn, line *irc.Line) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, p := range b.Plugins {
|
for _, name := range b.PluginOrdering {
|
||||||
|
p := b.Plugins[name]
|
||||||
if p.Message(msg) {
|
if p.Message(msg) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -163,7 +164,8 @@ func (b *Bot) Help(channel string, parts []string) {
|
||||||
|
|
||||||
func (b *Bot) UserJoined(conn *irc.Conn, line *irc.Line) {
|
func (b *Bot) UserJoined(conn *irc.Conn, line *irc.Line) {
|
||||||
msg := b.buildMessage(conn, line)
|
msg := b.buildMessage(conn, line)
|
||||||
for _, p := range b.Plugins {
|
for _, name := range b.PluginOrdering {
|
||||||
|
p := b.Plugins[name]
|
||||||
if p.Event(line.Cmd, msg) {
|
if p.Event(line.Cmd, msg) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue