添加群成员查找功能 (#145)
This commit is contained in:
parent
94743ec582
commit
967e85ad9d
21
message.go
21
message.go
@ -91,26 +91,15 @@ func (m *Message) SenderInGroup() (*User, error) {
|
||||
}
|
||||
return nil, errors.New("can not found sender from system message")
|
||||
}
|
||||
group, err := m.Sender()
|
||||
user, err := m.Sender()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if group.IsFriend() {
|
||||
return group, nil
|
||||
if user.IsFriend() {
|
||||
return user, nil
|
||||
}
|
||||
// 如果群聊的群成员是空的, 则从服务器获取
|
||||
if group.MemberList.Count() == 0 {
|
||||
// 更新群详情
|
||||
if err = group.Detail(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
users := group.MemberList.SearchByUserName(1, m.senderInGroupUserName)
|
||||
if users == nil {
|
||||
return nil, ErrNoSuchUserFoundError
|
||||
}
|
||||
users.init(m.Bot.self)
|
||||
return users.First(), nil
|
||||
group := &Group{user}
|
||||
return group.SearchMemberByUsername(m.senderInGroupUserName)
|
||||
}
|
||||
|
||||
// Receiver 获取消息的接收者
|
||||
|
22
relations.go
22
relations.go
@ -195,6 +195,28 @@ func (g *Group) Rename(name string) error {
|
||||
return g.Self.RenameGroup(g, name)
|
||||
}
|
||||
|
||||
// SearchMemberByUsername 根据用户名查找群成员
|
||||
func (g *Group) SearchMemberByUsername(username string) (*User, error) {
|
||||
if g.MemberList.Count() == 0 {
|
||||
if _, err := g.Members(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
members := g.MemberList.SearchByUserName(1, username)
|
||||
// 如果此时本地查不到, 那么该成员可能是新加入的
|
||||
if members.Count() == 0 {
|
||||
if _, err := g.Members(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
// 再次尝试获取
|
||||
members = g.MemberList.SearchByUserName(1, username)
|
||||
if members.Count() == 0 {
|
||||
return nil, ErrNoSuchUserFoundError
|
||||
}
|
||||
return members.First(), nil
|
||||
}
|
||||
|
||||
type Groups []*Group
|
||||
|
||||
// Count 获取群组数量
|
||||
|
Loading…
x
Reference in New Issue
Block a user