commit
4feda379ce
121
relations.go
121
relations.go
@ -82,28 +82,25 @@ func (f Friends) SearchByRemarkName(limit int, remarkName string) (results Frien
|
||||
}
|
||||
|
||||
// Search 根据自定义条件查找好友
|
||||
func (f Friends) Search(limit int, condFuncList ...func(friend *Friend) bool) (results Friends) {
|
||||
if condFuncList == nil {
|
||||
return f
|
||||
}
|
||||
if limit <= 0 {
|
||||
limit = f.Count()
|
||||
}
|
||||
for _, member := range f {
|
||||
if results.Count() == limit {
|
||||
break
|
||||
}
|
||||
var passCount int
|
||||
for _, condFunc := range condFuncList {
|
||||
if condFunc(member) {
|
||||
passCount++
|
||||
func (f Friends) Search(limit int, searchFuncList ...func(friend *Friend) bool) (results Friends) {
|
||||
return f.AsMembers().Search(limit, func(user *User) bool {
|
||||
var friend = &Friend{user}
|
||||
for _, searchFunc := range searchFuncList {
|
||||
if !searchFunc(friend) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
if passCount == len(condFuncList) {
|
||||
results = append(results, member)
|
||||
}
|
||||
return true
|
||||
}).Friends()
|
||||
}
|
||||
|
||||
// AsMembers 将群组转换为用户列表
|
||||
func (f Friends) AsMembers() Members {
|
||||
var members = make(Members, 0, f.Count())
|
||||
for _, friend := range f {
|
||||
members = append(members, friend.User)
|
||||
}
|
||||
return
|
||||
return members
|
||||
}
|
||||
|
||||
// SendText 向slice的好友依次发送文本消息
|
||||
@ -308,28 +305,25 @@ func (g Groups) SearchByRemarkName(limit int, remarkName string) (results Groups
|
||||
}
|
||||
|
||||
// Search 根据自定义条件查找群组
|
||||
func (g Groups) Search(limit int, condFuncList ...func(group *Group) bool) (results Groups) {
|
||||
if condFuncList == nil {
|
||||
return g
|
||||
}
|
||||
if limit <= 0 {
|
||||
limit = g.Count()
|
||||
}
|
||||
for _, member := range g {
|
||||
if results.Count() == limit {
|
||||
break
|
||||
}
|
||||
var passCount int
|
||||
for _, condFunc := range condFuncList {
|
||||
if condFunc(member) {
|
||||
passCount++
|
||||
func (g Groups) Search(limit int, searchFuncList ...func(group *Group) bool) (results Groups) {
|
||||
return g.AsMembers().Search(limit, func(user *User) bool {
|
||||
var group = &Group{user}
|
||||
for _, searchFunc := range searchFuncList {
|
||||
if !searchFunc(group) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
if passCount == len(condFuncList) {
|
||||
results = append(results, member)
|
||||
}
|
||||
return true
|
||||
}).Groups()
|
||||
}
|
||||
|
||||
// AsMembers 将群组列表转换为用户列表
|
||||
func (g Groups) AsMembers() Members {
|
||||
var members = make(Members, 0, g.Count())
|
||||
for _, group := range g {
|
||||
members = append(members, group.User)
|
||||
}
|
||||
return
|
||||
return members
|
||||
}
|
||||
|
||||
// Mp 公众号对象
|
||||
@ -364,28 +358,25 @@ func (m Mps) Last() *Mp {
|
||||
}
|
||||
|
||||
// Search 根据自定义条件查找
|
||||
func (m Mps) Search(limit int, condFuncList ...func(group *Mp) bool) (results Mps) {
|
||||
if condFuncList == nil {
|
||||
return m
|
||||
}
|
||||
if limit <= 0 {
|
||||
limit = m.Count()
|
||||
}
|
||||
for _, member := range m {
|
||||
if results.Count() == limit {
|
||||
break
|
||||
}
|
||||
var passCount int
|
||||
for _, condFunc := range condFuncList {
|
||||
if condFunc(member) {
|
||||
passCount++
|
||||
func (m Mps) Search(limit int, searchFuncList ...func(group *Mp) bool) (results Mps) {
|
||||
return m.AsMembers().Search(limit, func(user *User) bool {
|
||||
var mp = &Mp{user}
|
||||
for _, searchFunc := range searchFuncList {
|
||||
if !searchFunc(mp) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
if passCount == len(condFuncList) {
|
||||
results = append(results, member)
|
||||
}
|
||||
return true
|
||||
}).MPs()
|
||||
}
|
||||
|
||||
// AsMembers 将公众号列表转换为用户列表
|
||||
func (m Mps) AsMembers() Members {
|
||||
var members = make(Members, 0, m.Count())
|
||||
for _, mp := range m {
|
||||
members = append(members, mp.User)
|
||||
}
|
||||
return
|
||||
return members
|
||||
}
|
||||
|
||||
// SearchByUserName 根据用户名查找
|
||||
@ -452,3 +443,19 @@ func (m Mps) GetByNickName(nickname string) *Mp {
|
||||
func (m Mps) GetByUserName(username string) *Mp {
|
||||
return m.SearchByUserName(1, username).First()
|
||||
}
|
||||
|
||||
// search 根据自定义条件查找
|
||||
func search(searchList Members, limit int, searchFunc func(group *User) bool) (results Members) {
|
||||
if limit <= 0 {
|
||||
limit = searchList.Count()
|
||||
}
|
||||
for _, member := range searchList {
|
||||
if results.Count() == limit {
|
||||
break
|
||||
}
|
||||
if searchFunc(member) {
|
||||
results = append(results, member)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
44
user.go
44
user.go
@ -186,7 +186,8 @@ func (s *Self) updateMembers() error {
|
||||
}
|
||||
|
||||
// FileHelper 获取文件传输助手对象,封装成Friend返回
|
||||
// fh, err := self.FileHelper() // or fh := openwechat.NewFriendHelper(self)
|
||||
//
|
||||
// fh, err := self.FileHelper() // or fh := openwechat.NewFriendHelper(self)
|
||||
func (s *Self) FileHelper() (*Friend, error) {
|
||||
// 如果缓存里有,直接返回,否则去联系人里面找
|
||||
if s.fileHelper != nil {
|
||||
@ -300,7 +301,8 @@ func (s *Self) SendFileToFriend(friend *Friend, file *os.File) (*SentMessage, er
|
||||
}
|
||||
|
||||
// SetRemarkNameToFriend 设置好友备注
|
||||
// self.SetRemarkNameToFriend(friend, "remark") // or friend.SetRemarkName("remark")
|
||||
//
|
||||
// self.SetRemarkNameToFriend(friend, "remark") // or friend.SetRemarkName("remark")
|
||||
func (s *Self) SetRemarkNameToFriend(friend *Friend, remarkName string) error {
|
||||
req := s.Bot.Storage.Request
|
||||
return s.Bot.Caller.WebWxOplog(req, remarkName, friend.UserName)
|
||||
@ -418,10 +420,11 @@ func (s *Self) SendFileToGroup(group *Group, file *os.File) (*SentMessage, error
|
||||
}
|
||||
|
||||
// RevokeMessage 撤回消息
|
||||
// sentMessage, err := friend.SendText("message")
|
||||
// if err == nil {
|
||||
// self.RevokeMessage(sentMessage) // or sentMessage.Revoke()
|
||||
// }
|
||||
//
|
||||
// sentMessage, err := friend.SendText("message")
|
||||
// if err == nil {
|
||||
// self.RevokeMessage(sentMessage) // or sentMessage.Revoke()
|
||||
// }
|
||||
func (s *Self) RevokeMessage(msg *SentMessage) error {
|
||||
return s.Bot.Caller.WebWxRevokeMsg(msg, s.Bot.Storage.Request)
|
||||
}
|
||||
@ -516,30 +519,15 @@ func (m Members) SearchByRemarkName(limit int, remarkName string) (results Membe
|
||||
}
|
||||
|
||||
// Search 根据自定义条件查找
|
||||
func (m Members) Search(limit int, condFuncList ...func(user *User) bool) (results Members) {
|
||||
if condFuncList == nil {
|
||||
return m
|
||||
}
|
||||
if limit <= 0 {
|
||||
limit = m.Count()
|
||||
}
|
||||
for _, member := range m {
|
||||
if count := len(results); count == limit {
|
||||
break
|
||||
}
|
||||
var passCount int
|
||||
for _, condFunc := range condFuncList {
|
||||
if condFunc(member) {
|
||||
passCount++
|
||||
} else {
|
||||
break
|
||||
func (m Members) Search(limit int, searchFuncList ...func(user *User) bool) (results Members) {
|
||||
return search(m, limit, func(group *User) bool {
|
||||
for _, searchFunc := range searchFuncList {
|
||||
if !searchFunc(group) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
if passCount == len(condFuncList) {
|
||||
results = append(results, member)
|
||||
}
|
||||
}
|
||||
return
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
// GetByUserName 根据username查找用户
|
||||
|
Loading…
x
Reference in New Issue
Block a user