ソースを参照

Improve logging when phone is seen again

Tulir Asokan 3 年 前
コミット
625e110aab
2 ファイル変更11 行追加3 行削除
  1. 4 0
      commands.go
  2. 7 3
      user.go

+ 4 - 0
commands.go

@@ -26,6 +26,7 @@ import (
 	"sort"
 	"strconv"
 	"strings"
+	"time"
 
 	"github.com/skip2/go-qrcode"
 	"github.com/tidwall/gjson"
@@ -710,6 +711,9 @@ func (handler *CommandHandler) CommandPing(ce *CommandEvent) {
 		ce.Reply("You're logged in as +%s (device #%d), but you don't have a WhatsApp connection.", ce.User.JID.User, ce.User.JID.Device)
 	} else {
 		ce.Reply("Logged in as +%s (device #%d), connection to WhatsApp OK (probably)", ce.User.JID.User, ce.User.JID.Device)
+		if !ce.User.PhoneRecentlySeen(false) {
+			ce.Reply("Phone hasn't been seen in %s", formatDisconnectTime(time.Now().Sub(ce.User.PhoneLastSeen)))
+		}
 	}
 }
 

+ 7 - 3
user.go

@@ -536,9 +536,13 @@ func (user *User) phoneSeen(ts time.Time) {
 		// The last seen timestamp isn't going to be perfectly accurate in any case,
 		// so don't spam the database with an update every time there's an event.
 		return
-	} else if !user.PhoneRecentlySeen(false) && user.GetPrevBridgeState().Error == WAPhoneOffline && user.IsConnected() {
-		user.log.Debugfln("Saw phone after current bridge state said it has been offline, switching state back to connected")
-		go user.sendBridgeState(BridgeState{StateEvent: StateConnected})
+	} else if !user.PhoneRecentlySeen(false) {
+		if user.GetPrevBridgeState().Error == WAPhoneOffline && user.IsConnected() {
+			user.log.Debugfln("Saw phone after current bridge state said it has been offline, switching state back to connected")
+			go user.sendBridgeState(BridgeState{StateEvent: StateConnected})
+		} else {
+			user.log.Debugfln("Saw phone after current bridge state said it has been offline, not sending new bridge state (prev: %s, connected: %t)", user.GetPrevBridgeState().Error, user.IsConnected())
+		}
 	}
 	user.PhoneLastSeen = ts
 	go user.Update()