|
1 | 1 | package robot |
2 | 2 |
|
3 | | -import "time" |
| 3 | +import ( |
| 4 | + "strings" |
| 5 | + "time" |
| 6 | +) |
4 | 7 |
|
5 | 8 | // Friend 好友对象 |
6 | 9 | type Friend struct{ *User } |
@@ -83,6 +86,15 @@ func (f Friends) Count() int { |
83 | 86 | return len(f) |
84 | 87 | } |
85 | 88 |
|
| 89 | +// AsUsers 将好友列表转换为User列表 |
| 90 | +func (f Friends) AsUsers() []*User { |
| 91 | + var users []*User |
| 92 | + for _, friend := range f { |
| 93 | + users = append(users, friend.User) |
| 94 | + } |
| 95 | + return users |
| 96 | +} |
| 97 | + |
86 | 98 | // GetByWxId 根据微信ID获取好友 |
87 | 99 | func (f Friends) GetByWxId(wxId string) *Friend { |
88 | 100 | for _, friend := range f { |
@@ -188,6 +200,17 @@ func (f Friends) GetByRemarkOrNicks(remarkOrNicks []string) Friends { |
188 | 200 | return result |
189 | 201 | } |
190 | 202 |
|
| 203 | +// FuzzyGetByRemarkOrNick 根据备注或昵称模糊匹配好友列表 |
| 204 | +func (f Friends) FuzzyGetByRemarkOrNick(remarkOrNick string) Friends { |
| 205 | + var result Friends |
| 206 | + for _, friend := range f { |
| 207 | + if strings.Contains(friend.Remark, remarkOrNick) || strings.Contains(friend.Nick, remarkOrNick) { |
| 208 | + result = append(result, friend) |
| 209 | + } |
| 210 | + } |
| 211 | + return result |
| 212 | +} |
| 213 | + |
191 | 214 | // SendText 依次发送文本消息, delays为每个好友发送消息的间隔时间, 默认为1秒, 为0时不间隔 |
192 | 215 | func (f Friends) SendText(content string, delays ...time.Duration) error { |
193 | 216 | for _, friend := range f { |
@@ -464,6 +487,15 @@ func (g Groups) Count() int { |
464 | 487 | return len(g) |
465 | 488 | } |
466 | 489 |
|
| 490 | +// AsUsers 将群组列表转换为User列表 |
| 491 | +func (g Groups) AsUsers() []*User { |
| 492 | + users := make([]*User, len(g)) |
| 493 | + for i, group := range g { |
| 494 | + users[i] = group.AsUser() |
| 495 | + } |
| 496 | + return users |
| 497 | +} |
| 498 | + |
467 | 499 | // GetByWxId 根据微信ID获取群组 |
468 | 500 | func (g Groups) GetByWxId(wxId string) *Group { |
469 | 501 | for _, group := range g { |
@@ -569,6 +601,17 @@ func (g Groups) GetByRemarkOrNicks(remarkOrNicks []string) Groups { |
569 | 601 | return result |
570 | 602 | } |
571 | 603 |
|
| 604 | +// FuzzyGetByRemarkOrNick 根据备注或昵称模糊匹配好友列表 |
| 605 | +func (g Groups) FuzzyGetByRemarkOrNick(remarkOrNick string) Groups { |
| 606 | + var result Groups |
| 607 | + for _, group := range g { |
| 608 | + if strings.Contains(group.Remark, remarkOrNick) || strings.Contains(group.Nick, remarkOrNick) { |
| 609 | + result = append(result, group) |
| 610 | + } |
| 611 | + } |
| 612 | + return result |
| 613 | +} |
| 614 | + |
572 | 615 | // SendText 依次发送文本消息, delays为每个好友发送消息的间隔时间, 默认为1秒, 为0时不间隔 |
573 | 616 | func (g Groups) SendText(content string, delays ...time.Duration) error { |
574 | 617 | for _, group := range g { |
@@ -854,6 +897,15 @@ func (m MPs) Count() int { |
854 | 897 | return len(m) |
855 | 898 | } |
856 | 899 |
|
| 900 | +// AsUsers 将当前对象转换为User对象 |
| 901 | +func (m MPs) AsUsers() []*User { |
| 902 | + var users []*User |
| 903 | + for _, mp := range m { |
| 904 | + users = append(users, mp.AsUser()) |
| 905 | + } |
| 906 | + return users |
| 907 | +} |
| 908 | + |
857 | 909 | // GetByWxId 根据微信ID获取公众号 |
858 | 910 | func (m MPs) GetByWxId(wxId string) *MP { |
859 | 911 | for _, mp := range m { |
@@ -959,6 +1011,17 @@ func (m MPs) GetByRemarkOrNicks(remarkOrNicks []string) MPs { |
959 | 1011 | return result |
960 | 1012 | } |
961 | 1013 |
|
| 1014 | +// FuzzyGetByRemarkOrNick 根据备注或昵称模糊匹配好友列表 |
| 1015 | +func (m MPs) FuzzyGetByRemarkOrNick(remarkOrNick string) MPs { |
| 1016 | + var result MPs |
| 1017 | + for _, mp := range m { |
| 1018 | + if strings.Contains(mp.Remark, remarkOrNick) || strings.Contains(mp.Nick, remarkOrNick) { |
| 1019 | + result = append(result, mp) |
| 1020 | + } |
| 1021 | + } |
| 1022 | + return result |
| 1023 | +} |
| 1024 | + |
962 | 1025 | // SendText 依次发送文本消息, delays为每个好友发送消息的间隔时间, 默认为1秒, 为0时不间隔 |
963 | 1026 | func (m MPs) SendText(content string, delays ...time.Duration) error { |
964 | 1027 | for _, mp := range m { |
|
0 commit comments