add Friend.SearchByRemarkName func and fix a problem with get user detail
This commit is contained in:
parent
5c0c7e1f5b
commit
dfae882390
24
bot_test.go
24
bot_test.go
@ -74,3 +74,27 @@ func TestBotMessageSender(t *testing.T) {
|
|||||||
}
|
}
|
||||||
bot.Block()
|
bot.Block()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFriends_SearchByRemarkName(t *testing.T) {
|
||||||
|
messageHandler := func(message *Message) {
|
||||||
|
fmt.Println(message)
|
||||||
|
}
|
||||||
|
bot := DefaultBot()
|
||||||
|
bot.RegisterMessageHandler(messageHandler)
|
||||||
|
bot.UUIDCallback = PrintlnQrcodeUrl
|
||||||
|
if err := bot.Login(); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
self, _ := bot.GetCurrentUser()
|
||||||
|
friends, err := self.Friends()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
d, err := friends[0].Detail()
|
||||||
|
fmt.Println(d, err)
|
||||||
|
firends2, err := friends.SearchByRemarkName("66")
|
||||||
|
fmt.Println(firends2)
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
2
items.go
2
items.go
@ -102,7 +102,7 @@ type UserDetailItem struct {
|
|||||||
type UserDetailItemList []UserDetailItem
|
type UserDetailItemList []UserDetailItem
|
||||||
|
|
||||||
func NewUserDetailItemList(members Members) UserDetailItemList {
|
func NewUserDetailItemList(members Members) UserDetailItemList {
|
||||||
list := make(UserDetailItemList, members.Count()-1)
|
list := make(UserDetailItemList, 0)
|
||||||
for _, member := range members {
|
for _, member := range members {
|
||||||
item := UserDetailItem{UserName: member.UserName, EncryChatRoomId: member.EncryChatRoomId}
|
item := UserDetailItem{UserName: member.UserName, EncryChatRoomId: member.EncryChatRoomId}
|
||||||
list = append(list, item)
|
list = append(list, item)
|
||||||
|
20
relations.go
20
relations.go
@ -35,6 +35,26 @@ func (f Friends) Count() int {
|
|||||||
return len(f)
|
return len(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f Friends) SearchByRemarkName(name string) (Friends, error) {
|
||||||
|
if f.Count() == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
self := f[0].Self
|
||||||
|
members, err := searchByRemarkName(name, self)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var newFriends Friends
|
||||||
|
for _, member := range members {
|
||||||
|
friend := &Friend{member}
|
||||||
|
if newFriends == nil {
|
||||||
|
newFriends = make(Friends, 0)
|
||||||
|
}
|
||||||
|
newFriends = append(newFriends, friend)
|
||||||
|
}
|
||||||
|
return newFriends, nil
|
||||||
|
}
|
||||||
|
|
||||||
type Group struct{ *User }
|
type Group struct{ *User }
|
||||||
|
|
||||||
// implement fmt.Stringer
|
// implement fmt.Stringer
|
||||||
|
43
user.go
43
user.go
@ -172,7 +172,7 @@ func (s *Self) FileHelper() (*Friend, error) {
|
|||||||
// 获取所有的好友
|
// 获取所有的好友
|
||||||
func (s *Self) Friends(update ...bool) (Friends, error) {
|
func (s *Self) Friends(update ...bool) (Friends, error) {
|
||||||
if s.friends == nil {
|
if s.friends == nil {
|
||||||
if err := s.updateFriends(update...); err != nil {
|
if err := s.updateFriends(true); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,6 +204,7 @@ func (s *Self) updateFriends(update ...bool) error {
|
|||||||
for _, member := range s.members {
|
for _, member := range s.members {
|
||||||
if isFriend(*member) {
|
if isFriend(*member) {
|
||||||
friend := &Friend{member}
|
friend := &Friend{member}
|
||||||
|
friend.Self = s
|
||||||
friends = append(friends, friend)
|
friends = append(friends, friend)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -252,16 +253,16 @@ func (s *Self) UpdateMembersDetail() error {
|
|||||||
times = count / 50
|
times = count / 50
|
||||||
}
|
}
|
||||||
newMembers := make(Members, 0)
|
newMembers := make(Members, 0)
|
||||||
request := s.Self.Bot.storage.GetBaseRequest()
|
request := s.Bot.storage.GetBaseRequest()
|
||||||
var pMembers Members
|
var pMembers Members
|
||||||
// 分情况依次更新
|
// 分情况依次更新
|
||||||
for i := 0; i < times; i++ {
|
for i := 1; i <= times; i++ {
|
||||||
if times == 1 {
|
if times == 1 {
|
||||||
pMembers = members
|
pMembers = members
|
||||||
} else {
|
} else {
|
||||||
pMembers = members[i*50 : (i+1)*times]
|
pMembers = members[(i-1)*50 : i*50]
|
||||||
}
|
}
|
||||||
nMembers, err := s.Self.Bot.Caller.WebWxBatchGetContact(pMembers, request)
|
nMembers, err := s.Bot.Caller.WebWxBatchGetContact(pMembers, request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -271,9 +272,9 @@ func (s *Self) UpdateMembersDetail() error {
|
|||||||
total := times * 50
|
total := times * 50
|
||||||
if total < count {
|
if total < count {
|
||||||
// 将全部剩余的更新完毕
|
// 将全部剩余的更新完毕
|
||||||
left := total - count
|
left := count - total
|
||||||
pMembers = members[total : total+left]
|
pMembers = members[total : total+left]
|
||||||
nMembers, err := s.Self.Bot.Caller.WebWxBatchGetContact(pMembers, request)
|
nMembers, err := s.Bot.Caller.WebWxBatchGetContact(pMembers, request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -304,3 +305,31 @@ func (m Members) SearchByUserName(username string) (*User, error) {
|
|||||||
}
|
}
|
||||||
return nil, errors.New("no such user found")
|
return nil, errors.New("no such user found")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m Members) SearchByRemarkName(name string) (Members, error) {
|
||||||
|
if m.Count() == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
self := m[0].Self
|
||||||
|
return searchByRemarkName(name, self)
|
||||||
|
}
|
||||||
|
|
||||||
|
func searchByRemarkName(name string, self *Self) (Members, error) {
|
||||||
|
if err := self.UpdateMembersDetail(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
members, err := self.Members()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var newMembers Members
|
||||||
|
for _, member := range members {
|
||||||
|
if member.RemarkName == name {
|
||||||
|
if newMembers == nil {
|
||||||
|
newMembers = make(Members, 0)
|
||||||
|
}
|
||||||
|
newMembers = append(newMembers, member)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newMembers, nil
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user