diff options
| author | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-02-12 00:21:09 +0300 |
|---|---|---|
| committer | MHSanaei <ho3ein.sanaei@gmail.com> | 2026-02-12 00:21:09 +0300 |
| commit | e5c0fe3edf3bc8ee44c13503cc39d4caba735ae9 (patch) | |
| tree | 87d72b513ebf0a34774b95e11d0598047c71fa95 /web/service/tgbot.go | |
| parent | f4057989f520daaef30b9d1cc0b0b0f12dbd7edc (diff) | |
bug fix #3785
Diffstat (limited to 'web/service/tgbot.go')
| -rw-r--r-- | web/service/tgbot.go | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/web/service/tgbot.go b/web/service/tgbot.go index cb84142c..52df9092 100644 --- a/web/service/tgbot.go +++ b/web/service/tgbot.go @@ -5,6 +5,7 @@ import ( "crypto/rand" "embed" "encoding/base64" + "encoding/json" "errors" "fmt" "io" @@ -3083,9 +3084,41 @@ func (t *Tgbot) searchClientIps(chatId int64, email string, messageID ...int) { ips = t.I18nBot("tgbot.noIpRecord") } + formattedIps := ips + if err == nil && len(ips) > 0 { + type ipWithTimestamp struct { + IP string `json:"ip"` + Timestamp int64 `json:"timestamp"` + } + + var ipsWithTime []ipWithTimestamp + if json.Unmarshal([]byte(ips), &ipsWithTime) == nil && len(ipsWithTime) > 0 { + lines := make([]string, 0, len(ipsWithTime)) + for _, item := range ipsWithTime { + if item.IP == "" { + continue + } + if item.Timestamp > 0 { + ts := time.Unix(item.Timestamp, 0).Format("2006-01-02 15:04:05") + lines = append(lines, fmt.Sprintf("%s (%s)", item.IP, ts)) + continue + } + lines = append(lines, item.IP) + } + if len(lines) > 0 { + formattedIps = strings.Join(lines, "\n") + } + } else { + var oldIps []string + if json.Unmarshal([]byte(ips), &oldIps) == nil && len(oldIps) > 0 { + formattedIps = strings.Join(oldIps, "\n") + } + } + } + output := "" output += t.I18nBot("tgbot.messages.email", "Email=="+email) - output += t.I18nBot("tgbot.messages.ips", "IPs=="+ips) + output += t.I18nBot("tgbot.messages.ips", "IPs=="+formattedIps) output += t.I18nBot("tgbot.messages.refreshedOn", "Time=="+time.Now().Format("2006-01-02 15:04:05")) inlineKeyboard := tu.InlineKeyboard( |
