mark state, pause msgs as processed

master v0.0.11
Bel LaPointe 2022-01-13 00:22:59 -05:00
parent 1cc082083c
commit 266ccb5f98
1 changed files with 24 additions and 10 deletions

14
main.go
View File

@ -88,31 +88,41 @@ func matrixrecv() error {
}()
func() {
log.Printf("looking for states")
db := config.Get().DB()
states := map[string]map[config.State]struct{}{}
for _, msg := range messages {
key := fmt.Sprintf("states_%d", msg.Timestamp.Unix())
if !strings.HasPrefix(msg.Content, "!state") {
continue
}
if _, ok := states[msg.Sender]; ok {
continue
}
if _, err := db.Get(key); err == storage.ErrNotFound {
states[msg.Sender] = map[config.State]struct{}{}
for _, state := range parseOutStates([]byte(msg.Content)) {
states[msg.Sender][state] = struct{}{}
}
}
if err := db.Set(key, []byte{'k'}); err != nil {
log.Printf("failed to mark state gathered @%s: %v", key, err)
}
}
setNewStates(states)
}()
func() {
log.Printf("looking for pauses")
db := config.Get().DB()
pauses := map[string]time.Time{}
for _, msg := range messages {
key := fmt.Sprintf("pauses_%d", msg.Timestamp.Unix())
if !strings.HasPrefix(msg.Content, "!available ") {
continue
}
if _, ok := pauses[msg.Sender]; ok {
continue
}
if _, err := db.Get(key); err == storage.ErrNotFound {
t, err := time.ParseInLocation(
"2006-01-02",
strings.TrimSpace(strings.TrimPrefix(msg.Content, "!available ")),
@ -122,6 +132,10 @@ func matrixrecv() error {
pauses[msg.Sender] = t
}
}
if err := db.Set(key, []byte{'k'}); err != nil {
log.Printf("failed to mark state gathered @%s: %v", key, err)
}
}
setNewPauses(pauses)
}()
return nil