~kris/9p

glenda

f7f5b1e20edab9ff57790420198c2aafea3f87ab — Sean Hinchee 7 years ago f9959eb
fix bugs in dump and reminders
5 files changed, 42 insertions(+), 17 deletions(-)

M mux.go
M x/mux/commits.go
M x/mux/config.go
M x/mux/misc.go
M x/mux/remind.go
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()
					}
				}
			}