55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package bot
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"dev.sum7.eu/genofire/logmania/database"
|
|
)
|
|
|
|
type Bot struct {
|
|
db *database.DB
|
|
commandsMap map[string]commandFunc
|
|
commands []string
|
|
}
|
|
|
|
func NewBot(db *database.DB) *Bot {
|
|
b := &Bot{
|
|
db: db,
|
|
}
|
|
b.commandsMap = map[string]commandFunc{
|
|
"help": b.help,
|
|
"send-add": b.addSend,
|
|
"send-list": b.listSend,
|
|
"send-del": b.delSend,
|
|
"hostname-set": b.addHostname,
|
|
"hostname-list": b.listHostname,
|
|
"hostname-del": b.delHostname,
|
|
"filter-set": b.setMaxfilter,
|
|
"filter-list": b.listMaxfilter,
|
|
"regex-add": b.addRegex,
|
|
"regex-list": b.listRegex,
|
|
"regex-del": b.delRegex,
|
|
"replace-add": b.addRegexReplace,
|
|
"replace-list": b.listRegexReplace,
|
|
"replace-del": b.delRegexReplace,
|
|
}
|
|
for k := range b.commandsMap {
|
|
b.commands = append(b.commands, k)
|
|
}
|
|
return b
|
|
}
|
|
|
|
func (b *Bot) Handle(answer func(string), from, msg string) {
|
|
msgParts := strings.Split(msg, " ")
|
|
if len(msgParts[0]) <= 0 || msgParts[0][0] != '!' {
|
|
return
|
|
}
|
|
cmdName := msgParts[0][1:]
|
|
if cmd, ok := b.commandsMap[cmdName]; ok {
|
|
cmd(answer, from, msgParts[1:])
|
|
} else {
|
|
answer(fmt.Sprintf("not found command: !%s", cmdName))
|
|
}
|
|
}
|