]> git.giacomolli.uk - onechat/blobdiff - whatsapp_send.go
Log image and message sends
[onechat] / whatsapp_send.go
index b95a82eb6d53a594df8be45dbd2dee181738ac95..d3d3cbce1e362dd99dd75e01fafa4d6b4eb3c05d 100644 (file)
@@ -6,6 +6,7 @@ import (
        "encoding/hex"
        "errors"
        "fmt"
+       "log/slog"
        "slices"
        "strings"
        "time"
@@ -39,11 +40,11 @@ const (
 // during the send gives an answer that the result is unknown, and not a second
 // send. A disconnected WhatsApp sends nothing and makes no record. link gives
 // the device, the client, and the own IDs, groups the names of the groups, and
-// state the send records. The clock gives the times of the records and the time
+// state the send records, and logger gets one line for each send. The clock gives the times of the records and the time
 // zone of the answer. Image names are checked before the record is written, and
 // uploads start only after the record is durable. Text-only records keep their
 // text digest.
-func whatsappSend(ctx context.Context, link WhatsAppLink, groups *WhatsAppGroups, state *WhatsAppState, images *ImageStore, clock func() time.Time, id, chat, text, image string) (string, error) {
+func whatsappSend(ctx context.Context, link WhatsAppLink, groups *WhatsAppGroups, state *WhatsAppState, images *ImageStore, logger *slog.Logger, clock func() time.Time, id, chat, text, image string) (string, error) {
        if !link.linked {
                return whatsappNotLinked, nil
        }
@@ -113,7 +114,10 @@ func whatsappSend(ctx context.Context, link WhatsAppLink, groups *WhatsAppGroups
        if err != nil {
                record.State = whatsappFailed
                record.Answer = "The send failed: " + whatsappRedact(link.own, err.Error()) + "."
+               logger.Warn("message send failed", "chat", whatsappChatHash(jid), "image", image != "", "err", whatsappRedact(append(slices.Clone(link.own), jid.User), err.Error()))
        } else {
+               logger.Info("message sent", "chat", whatsappChatHash(jid), "image", image != "")
+
                name := groups.name(ctx, link, jid.String())
                if jid.Server != types.GroupServer {
                        name = whatsappContactName(ctx, link.device, jid, "")