mirror of
https://github.com/cjdenio/jia.git
synced 2024-11-22 07:33:39 +00:00
Persist last sender ID and valid number
This commit is contained in:
parent
3385ce07bb
commit
567cb76f96
2 changed files with 22 additions and 9 deletions
|
@ -18,12 +18,6 @@ func HandleInnerEvent(slackClient *slack.Client, innerEvent *slackevents.EventsA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Persist to Redis
|
|
||||||
var (
|
|
||||||
lastValidNumber = 0
|
|
||||||
lastSender = ""
|
|
||||||
)
|
|
||||||
|
|
||||||
func onMessage(slackClient *slack.Client, event *slackevents.MessageEvent) {
|
func onMessage(slackClient *slack.Client, event *slackevents.MessageEvent) {
|
||||||
// Ignore messages that aren't in the target channel, or are non-user messages
|
// Ignore messages that aren't in the target channel, or are non-user messages
|
||||||
if event.Channel != jiaConfig.ChannelID || event.User == "USLACKBOT" || event.User == "" {
|
if event.Channel != jiaConfig.ChannelID || event.User == "USLACKBOT" || event.User == "" {
|
||||||
|
@ -42,7 +36,12 @@ func onMessage(slackClient *slack.Client, event *slackevents.MessageEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reject if sender also sent the previous number.
|
// Reject if sender also sent the previous number.
|
||||||
if event.User == lastSender {
|
lastSenderID, err := redisClient.Get("last_sender_id").Result()
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Failed to retrieve the last sender")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if event.User == lastSenderID {
|
||||||
slackClient.AddReaction("bangbang", slack.ItemRef{
|
slackClient.AddReaction("bangbang", slack.ItemRef{
|
||||||
Channel: event.Channel,
|
Channel: event.Channel,
|
||||||
Timestamp: event.TimeStamp,
|
Timestamp: event.TimeStamp,
|
||||||
|
@ -53,6 +52,16 @@ func onMessage(slackClient *slack.Client, event *slackevents.MessageEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ignore numbers that aren't in order.
|
// Ignore numbers that aren't in order.
|
||||||
|
lastValidNumberStr, err := redisClient.Get("last_valid_number").Result()
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Failed to retrieve the last valid number")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
lastValidNumber, err := strconv.Atoi(lastValidNumberStr)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Failed to convert the last valid number to an integer")
|
||||||
|
return
|
||||||
|
}
|
||||||
if matchedNumber != lastValidNumber+1 {
|
if matchedNumber != lastValidNumber+1 {
|
||||||
slackClient.AddReaction("bangbang", slack.ItemRef{
|
slackClient.AddReaction("bangbang", slack.ItemRef{
|
||||||
Channel: event.Channel,
|
Channel: event.Channel,
|
||||||
|
@ -64,6 +73,6 @@ func onMessage(slackClient *slack.Client, event *slackevents.MessageEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finally!
|
// Finally!
|
||||||
lastValidNumber = matchedNumber
|
redisClient.Set("last_valid_number", matchedNumber, 0)
|
||||||
lastSender = event.User
|
redisClient.Set("last_sender_id", event.User, 0)
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,10 @@ func StartServer(config *Config) {
|
||||||
}
|
}
|
||||||
redisClient = redis.NewClient(options)
|
redisClient = redis.NewClient(options)
|
||||||
|
|
||||||
|
// Initialize default values
|
||||||
|
redisClient.SetNX("last_sender_id", "", 0)
|
||||||
|
redisClient.SetNX("last_valid_number", 0, 0)
|
||||||
|
|
||||||
// Initialize Slack app
|
// Initialize Slack app
|
||||||
slackClient = slack.New(config.BotToken)
|
slackClient = slack.New(config.BotToken)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue