From 2a8ce915346526da2f2ae22540e7f974ff5056f4 Mon Sep 17 00:00:00 2001 From: eatmoreapple Date: Sun, 27 Nov 2022 13:15:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E5=94=AF?= =?UTF-8?q?=E4=B8=80=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- user.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/user.go b/user.go index e57da6c..f36b56e 100644 --- a/user.go +++ b/user.go @@ -5,7 +5,9 @@ import ( "fmt" "io" "net/http" + "net/url" "os" + "strconv" "strings" "time" ) @@ -144,6 +146,29 @@ func (u *User) IsPin() bool { return u.ContactFlag == 2051 } +// ID 获取用户的唯一标识 只对当前登录的用户有效 +// ID 和 UserName 的区别是 ID 多次登录不会变化,而 UserName 只针对当前登录会话有效 +func (u *User) ID() string { + // 首先尝试获取uid + if u.Uin != 0 { + return strconv.FormatInt(u.Uin, 10) + } + // 如果uid不存在,尝试从头像url中获取 + if u.HeadImgUrl != "" { + index := strings.Index(u.HeadImgUrl, "?") + 1 + if len(u.HeadImgUrl) > index { + query := u.HeadImgUrl[index:] + params, err := url.ParseQuery(query) + if err != nil { + return "" + } + return params.Get("seq") + + } + } + return "" +} + // 格式化emoji表情 func (u *User) formatEmoji() { u.NickName = FormatEmoji(u.NickName)