From ea486916a18ecb83d88c4ae83c72b9a5b0b14dc5 Mon Sep 17 00:00:00 2001 From: Cadey Dodrill Date: Wed, 1 Jun 2016 11:57:58 -0700 Subject: [PATCH] persistence --- src/xeserv.us/cmd/tbotd/main.go | 32 +++++++++++++++++++++++++------- src/xeserv.us/cmd/tbotd/types.go | 6 +++++- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/xeserv.us/cmd/tbotd/main.go b/src/xeserv.us/cmd/tbotd/main.go index 60f96e2..c8a94c3 100644 --- a/src/xeserv.us/cmd/tbotd/main.go +++ b/src/xeserv.us/cmd/tbotd/main.go @@ -13,7 +13,6 @@ import ( "github.com/asdine/storm" - "gopkg.in/telegram-bot-api.v4" "xeserv.us/r1459" ) @@ -138,8 +137,7 @@ func handleClient(c *Client) { if c.DB == nil { db, err := storm.Open("var/" + c.Nick + ".db") if err != nil { - c.KillClient(err) - + log.Fatal(err) return } @@ -179,6 +177,14 @@ func handleClient(c *Client) { c.TGBot = bot + db, err := storm.Open("var/" + me.UserName + ".db") + if err != nil { + log.Fatal(err) + return + } + + c.DB = db + u := tgbotapi.NewUpdate(0) u.Timeout = 60 @@ -189,12 +195,24 @@ func handleClient(c *Client) { go func(c *Client) { for update := range updates { + if update.Message == nil { + continue + } + id := update.Message.Chat.ID r := &Room{} - c.DB.One("RoomID", id, r) - - r.client = c + err := c.DB.One("RoomID", id, r) + if err != nil { + c.SendLine(&r1459.RawLine{ + Source: "xeserv.us", + Verb: "PRIVMSG", + Args: []string{ + c.Nick, + fmt.Sprintf("Unknown room ID %v message %#v", update.Message.Chat.ID, update.Message.Chat), + }, + }) + } if update.Message.Text != "" { r.RecieveMessage(update) @@ -222,7 +240,7 @@ func handleClient(c *Client) { Verb: "NOTICE", Source: "xeserv.us", Args: []string{ - c.Nick, "JOIN ", + c.Nick, "ASSOCIATE ", }, }) diff --git a/src/xeserv.us/cmd/tbotd/types.go b/src/xeserv.us/cmd/tbotd/types.go index f636518..a72eaa4 100644 --- a/src/xeserv.us/cmd/tbotd/types.go +++ b/src/xeserv.us/cmd/tbotd/types.go @@ -126,6 +126,10 @@ func (r *Room) Burst() []*r1459.RawLine { func (r Room) RecieveMessage(update tgbotapi.Update) { c := r.client + if c == nil { + return + } + log.Printf("[#%v] %s %s", r.Shortname, update.Message.From.UserName, update.Message.Text) found := false @@ -151,7 +155,7 @@ func (r Room) RecieveMessage(update tgbotapi.Update) { }) } - for _, msgLine := range strings.Split(update.Message.Text, " ") { + for _, msgLine := range strings.Split(update.Message.Text, "\n") { c.SendLine(&r1459.RawLine{ Verb: "PRIVMSG", Source: Mask(update.Message.From.UserName),