添加群成员查找功能 (#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")
|
return nil, errors.New("can not found sender from system message")
|
||||||
}
|
}
|
||||||
group, err := m.Sender()
|
user, err := m.Sender()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if group.IsFriend() {
|
if user.IsFriend() {
|
||||||
return group, nil
|
return user, nil
|
||||||
}
|
}
|
||||||
// 如果群聊的群成员是空的, 则从服务器获取
|
group := &Group{user}
|
||||||
if group.MemberList.Count() == 0 {
|
return group.SearchMemberByUsername(m.senderInGroupUserName)
|
||||||
// 更新群详情
|
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Receiver 获取消息的接收者
|
// Receiver 获取消息的接收者
|
||||||
|
22
relations.go
22
relations.go
@ -195,6 +195,28 @@ func (g *Group) Rename(name string) error {
|
|||||||
return g.Self.RenameGroup(g, name)
|
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
|
type Groups []*Group
|
||||||
|
|
||||||
// Count 获取群组数量
|
// Count 获取群组数量
|
||||||
|
Loading…
x
Reference in New Issue
Block a user