parent
1cc082083c
commit
266ccb5f98
34
main.go
34
main.go
|
|
@ -88,38 +88,52 @@ func matrixrecv() error {
|
||||||
}()
|
}()
|
||||||
func() {
|
func() {
|
||||||
log.Printf("looking for states")
|
log.Printf("looking for states")
|
||||||
|
db := config.Get().DB()
|
||||||
states := map[string]map[config.State]struct{}{}
|
states := map[string]map[config.State]struct{}{}
|
||||||
for _, msg := range messages {
|
for _, msg := range messages {
|
||||||
|
key := fmt.Sprintf("states_%d", msg.Timestamp.Unix())
|
||||||
if !strings.HasPrefix(msg.Content, "!state") {
|
if !strings.HasPrefix(msg.Content, "!state") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if _, ok := states[msg.Sender]; ok {
|
if _, ok := states[msg.Sender]; ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
states[msg.Sender] = map[config.State]struct{}{}
|
if _, err := db.Get(key); err == storage.ErrNotFound {
|
||||||
for _, state := range parseOutStates([]byte(msg.Content)) {
|
states[msg.Sender] = map[config.State]struct{}{}
|
||||||
states[msg.Sender][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)
|
setNewStates(states)
|
||||||
}()
|
}()
|
||||||
func() {
|
func() {
|
||||||
log.Printf("looking for pauses")
|
log.Printf("looking for pauses")
|
||||||
|
db := config.Get().DB()
|
||||||
pauses := map[string]time.Time{}
|
pauses := map[string]time.Time{}
|
||||||
for _, msg := range messages {
|
for _, msg := range messages {
|
||||||
|
key := fmt.Sprintf("pauses_%d", msg.Timestamp.Unix())
|
||||||
if !strings.HasPrefix(msg.Content, "!available ") {
|
if !strings.HasPrefix(msg.Content, "!available ") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if _, ok := pauses[msg.Sender]; ok {
|
if _, ok := pauses[msg.Sender]; ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
t, err := time.ParseInLocation(
|
if _, err := db.Get(key); err == storage.ErrNotFound {
|
||||||
"2006-01-02",
|
t, err := time.ParseInLocation(
|
||||||
strings.TrimSpace(strings.TrimPrefix(msg.Content, "!available ")),
|
"2006-01-02",
|
||||||
time.Local,
|
strings.TrimSpace(strings.TrimPrefix(msg.Content, "!available ")),
|
||||||
)
|
time.Local,
|
||||||
if err == nil {
|
)
|
||||||
pauses[msg.Sender] = t
|
if err == nil {
|
||||||
|
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)
|
setNewPauses(pauses)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue