From f7f5b1e20edab9ff57790420198c2aafea3f87ab Mon Sep 17 00:00:00 2001 From: Sean Hinchee Date: Sun, 28 Oct 2018 19:46:03 +0000 Subject: [PATCH] fix bugs in dump and reminders --- mux.go | 4 +++- x/mux/commits.go | 2 +- x/mux/config.go | 5 ++++- x/mux/misc.go | 24 +++++++++++++++++++++--- x/mux/remind.go | 24 +++++++++++++----------- 5 files changed, 42 insertions(+), 17 deletions(-) diff --git a/mux.go b/mux.go index 64ded040299ac2acbb6c1c54ce2fb104f323cffa..8c59f08975db4c5372d591468285dff0f17ad5b1 100644 --- a/mux.go +++ b/mux.go @@ -20,7 +20,7 @@ func init() { Router.Route("fortune", "Display fortunes. Bonus files are (theo troll rsc terry rob ken).", Router.Fortunes) - Router.Route("add", "Subscribe to an RSS feed.", Router.Add) + Router.Route("add", "Track an RSS feed.", Router.Add) Router.Route("list", "List RSS feeds Glenda is subscribed to by id.", Router.List) @@ -49,4 +49,6 @@ func init() { Router.Route("remindme", "Set a reminder for a given time interval ([int][hmsd] [reminder]).", Router.RemindMe) Router.Route("bullshit", "Print logical statements with sound grounding.", Router.Bullshit) + + Router.Route("remove", "Remove a tracked RSS feed by ID.", Router.Remove) } diff --git a/x/mux/commits.go b/x/mux/commits.go index 1525b69e4196f88eda96759fe54c135271041742..1d9894baa9955f80752e8f026a777c73c5a0918a 100644 --- a/x/mux/commits.go +++ b/x/mux/commits.go @@ -52,7 +52,7 @@ func Listener() { } time.Sleep(10 * time.Minute) // Dump config to file regularly - Config.Write() + //fmt.Println("", dump()) } } diff --git a/x/mux/config.go b/x/mux/config.go index 12e37e6423cb4184d2cca89818cbed911cb35a95..f6935e468304c90bae01b706a3e36d1072eea193 100644 --- a/x/mux/config.go +++ b/x/mux/config.go @@ -43,7 +43,6 @@ type Configuration struct { // Initializes current config (called once at start) ­ just .Read()? func (c *Configuration) Init(s *discordgo.Session) { - Rems = list.New() c.Read() Session = s for id, _ := range Feeds.Feeds { @@ -56,6 +55,9 @@ func (c *Configuration) Init(s *discordgo.Session) { fmt.Println("Failed to fetch feed: ", id) } } + if Rems == nil { + Rems = list.New() + } go Listener() } @@ -216,6 +218,7 @@ func (c *Configuration) Read() (rerr error) { fmt.Println("Error reading reminders config, see: config.go") fmt.Printf("%s\n", err) rerr = err + Rems = list.New() RemindersWrite() } } diff --git a/x/mux/misc.go b/x/mux/misc.go index 2e926968c46f9026be0e1248696f4cf78cfd07cf..ed92dcfd98283bcd7854a8505a45747f876a8bd6 100644 --- a/x/mux/misc.go +++ b/x/mux/misc.go @@ -31,18 +31,36 @@ func CommMux() { } } -// Dump config to file -func (m *Mux) Dump(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) { +// Dump configs to file +func dump() string { resp := "" err := Config.Write() if err != nil { - resp += "Dump failed. Check logs." + resp += "Dump config failed. Check logs.\n" + } else { + resp += "Ok." + } + err = Feeds.Write() + if err != nil { + resp += "Dump feeds failed. Check logs.\n" + } else { + resp += "Ok." + } + err = RemindersWrite() + if err != nil { + resp += "Dump reminders failed. Check logs.\n" } else { resp += "Ok." } resp += "\n" + return resp +} + +// Dump config to file +func (m *Mux) Dump(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) { + resp := dump() ds.ChannelMessageSend(dm.ChannelID, resp) diff --git a/x/mux/remind.go b/x/mux/remind.go index b701211651888d8db0042b963803f36f7b7536b4..43036d8a9090491c41514fc7eab2dd1dac8b5874 100644 --- a/x/mux/remind.go +++ b/x/mux/remind.go @@ -37,17 +37,19 @@ func Reminders() { default: // Check for any due reminders - for e := Rems.Front(); ; e = e.Next() { - if e == nil { - break - } - - r, _ := e.Value.(Reminder) - if time.Now().After(r.NotifyAfter) { - // If we have passed the time of desired notification - r.Session.ChannelMessageSend(r.ChannelID, r.User.Mention() + " -- " + r.Reason) - Rems.Remove(e) - //write() + if Rems.Front() != nil { + for e := Rems.Front(); ; e = e.Next() { + if e == nil { + break + } + + r, _ := e.Value.(Reminder) + if time.Now().After(r.NotifyAfter) { + // If we have passed the time of desired notification + r.Session.ChannelMessageSend(r.ChannelID, r.User.Mention() + " -- " + r.Reason) + Rems.Remove(e) + //write() + } } }