-
Notifications
You must be signed in to change notification settings - Fork 0
/
bot-service.go
66 lines (56 loc) · 1.76 KB
/
bot-service.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main
import (
"bytes"
"fmt"
"github.com/fabien-chebel/pegass-cli/whatsapp"
log "github.com/sirupsen/logrus"
"go.mau.fi/whatsmeow/types"
"time"
)
type BotService struct {
pegassClient *PegassClient
chatClient *whatsapp.WhatsAppClient
}
func (b *BotService) SendActivitySummary(recipient types.JID, kind ActivityKind, dayCount int) {
var kindName string
if kind == SAMU {
kindName = "SAMU"
} else {
kindName = "BSPP"
}
err := b.chatClient.SendMessage(fmt.Sprintf("🤖 C'est reçu. Je génère l'état des postes %s sur %d jours.", kindName, dayCount), recipient)
if err != nil {
log.Errorf("failed to send whatsapp message: %s", err.Error())
return
}
for i := 0; i < dayCount; i++ {
var buf = new(bytes.Buffer)
day := time.Now().AddDate(0, 0, i).Format("2006-01-02")
log.Infof("fetching activity summary for day '%s' and kind '%#v'", day, kind)
summary, err := b.pegassClient.FindActivitiesOnDay(day, kind, false)
if err != nil {
log.Errorf("failed to generate activity summary for day '%s' and kind '%d'. error='%s'", day, kind, err.Error())
err := b.chatClient.SendMessage("Une erreur s'est produite lors de la génération de l'état du réseau. Veuillez réessayer plus tard", recipient)
if err != nil {
log.Errorf("failed to notify user that their request could not be processed. Error:'%s'", err.Error())
}
return
}
if summary == "" {
summary = "Aucune activité trouvée"
}
switch i {
case 0:
buf.WriteString(fmt.Sprintf("*Aujourd'hui* (%s) :\n", day))
case 1:
buf.WriteString(fmt.Sprintf("*Demain* (%s) :\n", day))
case 2:
buf.WriteString(fmt.Sprintf("*Après-demain* (%s) :\n", day))
}
buf.WriteString(summary + "\n")
err = b.chatClient.SendMessage(
buf.String(),
recipient,
)
}
}