add function dispatch

This commit is contained in:
stryan 2020-04-14 16:54:31 -04:00
parent da39ba7b18
commit f23162d49a
4 changed files with 25 additions and 12 deletions

5
testbot/action.go Normal file
View File

@ -0,0 +1,5 @@
package main
type Action func(inputs ...string) string
var ActionList map[string]Action

View File

@ -26,6 +26,7 @@ func main() {
Conf: c,
Jobs: make(chan *mautrix.Event, 100),
}
tb.InitActions()
syncer := botlib.NewCustomSyncer("@testbot:saintnet.tech", b.Client.Store)
syncer.OnEventType(mautrix.EventMessage, tb.QueueMessage)
syncer.OnEventType(mautrix.StateMember, b.DefaultHandleMember)

View File

@ -30,25 +30,24 @@ func (t *TestBot) HandleMessage(e *mautrix.Event) {
if len(body_s) < 2 {
return //nothing to parse
}
switch body_s[1] {
case "stop":
if body_s[1] == "stop" {
err := t.Message(e.RoomID, "Shutting down...")
if err != nil {
log.Fatal(err)
}
t.Shutdown()
return
case "echo":
err := t.Message(e.RoomID, body)
if err != nil {
log.Fatal(err)
}
case "version":
err := t.Message(e.RoomID, "0.0.1")
if err != nil {
log.Fatal(err)
}
}
response, found := ActionList[body_s[1]]
if !found {
response = func(inputs ...string) string { return "Command not found" }
}
msg := response(body_s[1:]...)
err := t.Message(e.RoomID, msg)
if err != nil {
log.Fatal(err)
}
return
}
func (t *TestBot) MessageHandler(cancelChan <-chan bool) {

View File

@ -39,3 +39,11 @@ func (t *TestBot) LoadState() {
}
t.Bot.ManagementRoomID = strings.Trim(string(dat), "")
}
func (t *TestBot) InitActions() {
ActionList = make(map[string]Action)
ActionList["version"] = func(inputs ...string) string { return "0.0.1" }
ActionList["echo"] = func(inputs ...string) string {
return strings.Join(inputs[:], "")
}
}