I think things are pretty good

This commit is contained in:
2023-12-01 10:57:15 -06:00
parent ff58d1ddf4
commit 0fc78d4b4c
8 changed files with 65 additions and 69 deletions

View File

@@ -21,6 +21,7 @@ type AoCState struct {
boardId string
sessionCookie string
sessionNeedsUpdate bool
lastUpdate time.Time
aoc *aoc.AoC
lastYear int
@@ -112,41 +113,28 @@ func (s *AoCState) runLoop() {
if err != nil {
return
}
// Don't do anything until we've done an initial update of all earlier years
for _, yr := range s.GetListOfAoCYears() {
if yr == s.GetLatestYear() {
continue
}
if !s.sessionNeedsUpdate {
fmt.Printf("Startup: Checking if board needs update (%d)\n", yr)
s.AoCSilentBoardCheckAndUpdate(yr)
}
}
for {
for s.model.Running {
_, err := s.getChannelId()
// This plugin fails without a channel id
if err != nil {
return
}
for _, yr := range s.GetListOfAoCYears() {
if !s.sessionNeedsUpdate {
if s.GetLatestYear() != s.lastYear {
// Latest year changed. Grab that board first.
s.lastYear = s.GetLatestYear()
admin := s.model.GetSlackAdminDMId()
if admin == "" {
s.SendAdminIdError()
return
}
s.SendSlackMessage(fmt.Sprintf(":christmas_tree: AoC Set latest leaderboard to %d", s.lastYear), admin)
s.AoCBoardCheckAndUpdate(s.lastYear)
time.Sleep(time.Minute)
if !s.sessionNeedsUpdate {
if s.GetLatestYear() != s.lastYear {
// Latest year changed. Update it.
s.lastYear = s.GetLatestYear()
admin := s.model.GetSlackAdminDMId()
if admin == "" {
s.SendAdminIdError()
return
}
s.AoCBoardCheckAndUpdate(yr)
time.Sleep(time.Minute)
s.SendSlackMessage(fmt.Sprintf(":christmas_tree: AoC Set latest leaderboard to %d", s.lastYear), admin)
}
s.AoCBoardCheckAndUpdate(s.lastYear)
s.lastUpdate = time.Now()
}
time.Sleep(time.Minute)
time.Sleep(time.Minute * 15)
}
s.model.SendMessage(models.NewBotMessage(s.Name(), models.MsgSrcApp, "status", "done", ""))
@@ -186,6 +174,9 @@ func (s *AoCState) ProcessAdminDirectMessage(m models.BotMessage) bool {
case "session":
s.DoSessionCmd(m)
return true
case "status":
s.DoStatusCmd(m)
return true
}
return false
}
@@ -204,7 +195,11 @@ func (s *AoCState) ProcessChannelMessage(m models.BotMessage) bool {
func (s *AoCState) DoHelpCmd(m models.BotMessage) bool {
txt := fmt.Sprint(":christmas_tree: AoC Help :christmas_tree:\n",
"-- WiP --",
"• help - Print this message\n",
"• ping - PONG! Check if the service is running\n",
"• top [year] - Print the top 5 users for the passed year\n",
" If no year is passed, the current year is used\n",
" Passing 'all' considers all years\n",
)
s.SendSlackMessage(txt, m.Target)
return true
@@ -212,7 +207,13 @@ func (s *AoCState) DoHelpCmd(m models.BotMessage) bool {
func (s *AoCState) DoHelpAdminCmd(m models.BotMessage) bool {
txt := fmt.Sprint(":christmas_tree: AoC Help :christmas_tree:\n",
"-- WiP --",
"• help - Print this message\n",
"• ping - PONG! Check if the service is running\n",
"• top [year] - Print the top 5 users for the passed year\n",
" If no year is passed, the current year is used\n",
" Passing 'all' considers all years\n",
"• session [token] - Print or set the session cookie\n",
"• status - Print the status of the service\n",
)
s.SendSlackMessage(txt, m.Target)
return true
@@ -250,6 +251,23 @@ func (s *AoCState) DoSessionCmd(m models.BotMessage) bool {
return true
}
func (s *AoCState) DoStatusCmd(m models.BotMessage) bool {
admin := s.model.GetSlackAdminDMId()
if admin == "" {
s.SendAdminIdError()
return true
}
txt := ":christmas_tree: Advent of Code Status :christmas_tree:"
txt = fmt.Sprintf(
"%s\nLast Update: %s\nNext Update In: %s", txt,
s.lastUpdate.Format(time.RFC3339),
s.lastUpdate.Add(time.Minute*15).Sub(time.Now()).Round(time.Second),
)
s.SendSlackMessage(txt, m.Target)
return false
}
func (s *AoCState) DoTopCmd(m models.BotMessage) bool {
msgPts := strings.Fields(m.Text)
var err error