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