Update to use nlopes-slack
This commit is contained in:
@@ -14,8 +14,8 @@ import (
|
||||
"time"
|
||||
|
||||
aoc "git.bullercodeworks.com/brian/go-adventofcode"
|
||||
slack "git.bullercodeworks.com/brian/go-slack"
|
||||
"git.bullercodeworks.com/brian/helperbot"
|
||||
"github.com/nlopes/slack"
|
||||
)
|
||||
|
||||
/* Plugin State */
|
||||
@@ -76,11 +76,7 @@ func (s *AoCState) ProcessMessage(m helperbot.Message) {
|
||||
case 'D':
|
||||
admin, err := s.model.GetSlackAdminDMId()
|
||||
if err != nil {
|
||||
s.model.SendMessage(s.Name(), "error", slack.Message{
|
||||
Type: "error",
|
||||
Text: "Error getting Admin DM Id",
|
||||
Time: time.Now(),
|
||||
})
|
||||
s.SendAdminIdError()
|
||||
return
|
||||
}
|
||||
if slackMsg.Channel == admin {
|
||||
@@ -129,11 +125,8 @@ func (s *AoCState) runLoop() {
|
||||
}
|
||||
time.Sleep(time.Minute)
|
||||
}
|
||||
s.model.SendMessage(s.Name(), "main", slack.Message{
|
||||
Type: "status",
|
||||
Text: "done",
|
||||
Time: time.Now(),
|
||||
})
|
||||
|
||||
s.model.SendMessage(s.Name(), "main", s.BuildMessage("status", "done", ""))
|
||||
}
|
||||
|
||||
func (s *AoCState) ProcessDirectMessage(slackMsg slack.Message) {
|
||||
@@ -183,30 +176,18 @@ func (s *AoCState) DoHelpCmd(slackMsg slack.Message) {
|
||||
txt := fmt.Sprint(":christmas_tree: AoC Help :christmas_tree:\n",
|
||||
"-- WiP --",
|
||||
)
|
||||
s.model.SendMessage(s.Name(), "slack", slack.Message{
|
||||
Type: "message",
|
||||
Channel: slackMsg.Channel,
|
||||
Text: txt,
|
||||
})
|
||||
s.SendSlackMessage(txt, slackMsg.Channel)
|
||||
}
|
||||
|
||||
func (s *AoCState) DoHelpAdminCmd(slackMsg slack.Message) {
|
||||
txt := fmt.Sprint(":christmas_tree: AoC Help :christmas_tree:\n",
|
||||
"-- WiP --",
|
||||
)
|
||||
s.model.SendMessage(s.Name(), "slack", slack.Message{
|
||||
Type: "message",
|
||||
Channel: slackMsg.Channel,
|
||||
Text: txt,
|
||||
})
|
||||
s.SendSlackMessage(txt, slackMsg.Channel)
|
||||
}
|
||||
|
||||
func (s *AoCState) DoPingCmd(slackMsg slack.Message) {
|
||||
s.model.SendMessage(s.Name(), "slack", slack.Message{
|
||||
Type: "message",
|
||||
Channel: slackMsg.Channel,
|
||||
Text: ":christmas_tree: PONG :christmas_tree:",
|
||||
})
|
||||
s.SendSlackMessage(":christmas_tree: PONG :christmas_tree:", slackMsg.Channel)
|
||||
}
|
||||
|
||||
func (s *AoCState) DoSessionCmd(slackMsg slack.Message) {
|
||||
@@ -215,39 +196,23 @@ func (s *AoCState) DoSessionCmd(slackMsg slack.Message) {
|
||||
// Set the session cookie
|
||||
admin, err := s.model.GetSlackAdminDMId()
|
||||
if err != nil {
|
||||
s.model.SendMessage(s.Name(), "error", slack.Message{
|
||||
Type: "error",
|
||||
Text: "Error getting Admin DM Id",
|
||||
Time: time.Now(),
|
||||
})
|
||||
s.SendAdminIdError()
|
||||
return
|
||||
}
|
||||
aocSession := msgPts[2]
|
||||
s.setAoCSessionCookie(strings.TrimSpace(aocSession))
|
||||
s.sessionCookie = aocSession
|
||||
s.sessionNeedsUpdate = false
|
||||
s.model.SendMessage(s.Name(), "slack", slack.Message{
|
||||
Type: "message",
|
||||
Channel: admin,
|
||||
Text: ":christmas_tree: New Session: " + s.sessionCookie,
|
||||
})
|
||||
s.SendSlackMessage(":christmas_tree: New Session: "+s.sessionCookie, admin)
|
||||
} else if len(msgPts) == 2 && msgPts[1] == "session" {
|
||||
// Print the session cookie
|
||||
admin, err := s.model.GetSlackAdminDMId()
|
||||
if err != nil {
|
||||
s.model.SendMessage(s.Name(), "error", slack.Message{
|
||||
Type: "error",
|
||||
Text: "Error getting Admin DM Id",
|
||||
Time: time.Now(),
|
||||
})
|
||||
s.SendAdminIdError()
|
||||
return
|
||||
}
|
||||
// We only send the session cookie to the admin
|
||||
s.model.SendMessage(s.Name(), "slack", slack.Message{
|
||||
Type: "message",
|
||||
Channel: admin,
|
||||
Text: ":christmas_tree: session: " + s.sessionCookie,
|
||||
})
|
||||
s.SendSlackMessage(":christmas_tree: session: "+s.sessionCookie, admin)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,11 +240,7 @@ func (s *AoCState) DoTopCmd(slackMsg slack.Message) {
|
||||
} else {
|
||||
txt = s.DoTopForYear(yr)
|
||||
}
|
||||
s.model.SendMessage(s.Name(), "slack", slack.Message{
|
||||
Type: "message",
|
||||
Channel: slackMsg.Channel,
|
||||
Text: txt,
|
||||
})
|
||||
s.SendSlackMessage(txt, slackMsg.Channel)
|
||||
}
|
||||
|
||||
func (s *AoCState) DoTopForAll() (string, error) {
|
||||
@@ -379,30 +340,18 @@ func (s *AoCState) AoCBoardCheckAndUpdate(yr int) {
|
||||
if err != nil {
|
||||
admin, adminErr := s.model.GetSlackAdminDMId()
|
||||
if adminErr != nil {
|
||||
s.model.SendMessage(s.Name(), "error", slack.Message{
|
||||
Type: "error",
|
||||
Text: "Error getting Admin DM Id",
|
||||
Time: time.Now(),
|
||||
})
|
||||
s.SendAdminIdError()
|
||||
return
|
||||
}
|
||||
if err.Error() == "Invalid Session Cookie" {
|
||||
s.sessionNeedsUpdate = true
|
||||
}
|
||||
s.model.SendMessage(s.Name(), "slack", slack.Message{
|
||||
Type: "message",
|
||||
Channel: admin,
|
||||
Text: fmt.Sprintf(":warning: AoC Error processing leaderboard (%d) - %s", yr, err.Error()),
|
||||
})
|
||||
s.SendSlackMessage(fmt.Sprintf(":warning: AoC Error processing leaderboard (%d) - %s", yr, err.Error()), admin)
|
||||
return
|
||||
}
|
||||
|
||||
msg := slack.Message{
|
||||
Type: "success",
|
||||
Text: fmt.Sprintf("Received leaderboard (%d)", yr),
|
||||
Time: time.Now(),
|
||||
}
|
||||
s.model.SendMessage(s.Name(), "main", msg)
|
||||
s.model.SendMessage(s.Name(), "main",
|
||||
s.BuildMessage("success", fmt.Sprintf("Received leaderboard (%d)", yr), ""))
|
||||
// Compare the new leaderboard to the saved one
|
||||
for _, v := range l.Members {
|
||||
mbr, err := s.getMember(l.Event, v.ID)
|
||||
@@ -410,11 +359,7 @@ func (s *AoCState) AoCBoardCheckAndUpdate(yr int) {
|
||||
continue
|
||||
}
|
||||
if mbr.Stars != v.Stars {
|
||||
s.model.SendMessage(s.Name(), "slack", slack.Message{
|
||||
Type: "message",
|
||||
Channel: channelId,
|
||||
Text: ":christmas_tree: " + v.Name + " now has " + strconv.Itoa(v.Stars) + " stars! :christmas_tree:",
|
||||
})
|
||||
s.SendSlackMessage(":christmas_tree: "+v.Name+" now has "+strconv.Itoa(v.Stars)+" stars! :christmas_tree:", channelId)
|
||||
}
|
||||
}
|
||||
// Save the leaderboard to the db
|
||||
@@ -499,11 +444,7 @@ func (s *AoCState) saveLeaderboard(l *aoc.Leaderboard) error {
|
||||
}
|
||||
for _, v := range l.Members {
|
||||
if err = s.saveMember(l.Event, &v); err != nil {
|
||||
s.model.SendMessage(s.Name(), "error", slack.Message{
|
||||
Type: "error",
|
||||
Text: fmt.Sprintf("Error Saving Member (%s)", v.Name),
|
||||
Time: time.Now(),
|
||||
})
|
||||
s.model.SendMessage(s.Name(), "error", s.BuildMessage("error", fmt.Sprintf("Error Saving Member (%s)", v.Name), ""))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@@ -579,3 +520,19 @@ func (s *AoCState) getMember(event string, memberId string) (*aoc.Member, error)
|
||||
mbr.GlobalScore, err = strconv.Atoi(wrk)
|
||||
return mbr, nil
|
||||
}
|
||||
|
||||
func (s *AoCState) SendAdminIdError() {
|
||||
s.model.SendMessage(s.Name(), "error", s.BuildMessage("error", "Error getting Admin DM Id", ""))
|
||||
}
|
||||
|
||||
func (s *AoCState) SendSlackMessage(text, dest string) {
|
||||
s.model.SendMessage(s.Name(), "slack", s.BuildMessage("message", text, dest))
|
||||
}
|
||||
|
||||
func (s *AoCState) BuildMessage(tp, text, ch string) slack.Message {
|
||||
ret := slack.Message{}
|
||||
ret.Type = tp
|
||||
ret.Text = text
|
||||
ret.Channel = ch
|
||||
return ret
|
||||
}
|
||||
|
Reference in New Issue
Block a user