添加群成员查找功能 (#145)

This commit is contained in:
多吃点苹果 2022-12-10 16:07:32 +08:00 committed by GitHub
parent 94743ec582
commit 967e85ad9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 16 deletions

View File

@ -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 获取消息的接收者

View File

@ -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 获取群组数量