M mux.go => mux.go +3 -1
@@ 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)
}
M x/mux/commits.go => x/mux/commits.go +1 -1
@@ 52,7 52,7 @@ func Listener() {
}
time.Sleep(10 * time.Minute)
// Dump config to file regularly
- Config.Write()
+ //fmt.Println("", dump())
}
}
M x/mux/config.go => x/mux/config.go +4 -1
@@ 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()
}
}
M x/mux/misc.go => x/mux/misc.go +21 -3
@@ 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)
M x/mux/remind.go => x/mux/remind.go +13 -11
@@ 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()
+ }
}
}