change some fields to private
This commit is contained in:
parent
5f14a13c62
commit
326f200976
4
bot.go
4
bot.go
@ -223,9 +223,9 @@ func (b *Bot) WebInit() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// 设置当前的用户
|
// 设置当前的用户
|
||||||
b.self = &Self{Bot: b, User: &resp.User}
|
b.self = &Self{bot: b, User: &resp.User}
|
||||||
b.self.formatEmoji()
|
b.self.formatEmoji()
|
||||||
b.self.Self = b.self
|
b.self.self = b.self
|
||||||
b.Storage.Response = resp
|
b.Storage.Response = resp
|
||||||
|
|
||||||
// 通知手机客户端已经登录
|
// 通知手机客户端已经登录
|
||||||
|
@ -278,7 +278,7 @@ func (c *Client) WebWxGetHeadImg(user *User) (*http.Response, error) {
|
|||||||
} else {
|
} else {
|
||||||
params := url.Values{}
|
params := url.Values{}
|
||||||
params.Add("username", user.UserName)
|
params.Add("username", user.UserName)
|
||||||
params.Add("skey", user.Self.Bot.Storage.Request.Skey)
|
params.Add("skey", user.self.bot.Storage.Request.Skey)
|
||||||
params.Add("type", "big")
|
params.Add("type", "big")
|
||||||
params.Add("chatroomid", user.EncryChatRoomId)
|
params.Add("chatroomid", user.EncryChatRoomId)
|
||||||
params.Add("seq", "0")
|
params.Add("seq", "0")
|
||||||
|
10
message.go
10
message.go
@ -71,7 +71,7 @@ func (m *Message) Sender() (*User, error) {
|
|||||||
user, exist := members.GetByUserName(m.FromUserName)
|
user, exist := members.GetByUserName(m.FromUserName)
|
||||||
if !exist {
|
if !exist {
|
||||||
// 找不到, 从服务器获取
|
// 找不到, 从服务器获取
|
||||||
user = &User{Self: m.bot.self, UserName: m.FromUserName}
|
user = &User{self: m.bot.self, UserName: m.FromUserName}
|
||||||
err = user.Detail()
|
err = user.Detail()
|
||||||
}
|
}
|
||||||
if m.IsSendByGroup() && len(user.MemberList) == 0 {
|
if m.IsSendByGroup() && len(user.MemberList) == 0 {
|
||||||
@ -629,13 +629,13 @@ type RevokeMsg struct {
|
|||||||
// SentMessage 已发送的信息
|
// SentMessage 已发送的信息
|
||||||
type SentMessage struct {
|
type SentMessage struct {
|
||||||
*SendMessage
|
*SendMessage
|
||||||
Self *Self
|
self *Self
|
||||||
MsgId string
|
MsgId string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Revoke 撤回该消息
|
// Revoke 撤回该消息
|
||||||
func (s *SentMessage) Revoke() error {
|
func (s *SentMessage) Revoke() error {
|
||||||
return s.Self.RevokeMessage(s)
|
return s.self.RevokeMessage(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CanRevoke 是否可以撤回该消息
|
// CanRevoke 是否可以撤回该消息
|
||||||
@ -657,7 +657,7 @@ func (s *SentMessage) ForwardToFriends(friends ...*Friend) error {
|
|||||||
|
|
||||||
// ForwardToFriendsWithDelay 转发该消息给好友,延迟指定时间
|
// ForwardToFriendsWithDelay 转发该消息给好友,延迟指定时间
|
||||||
func (s *SentMessage) ForwardToFriendsWithDelay(delay time.Duration, friends ...*Friend) error {
|
func (s *SentMessage) ForwardToFriendsWithDelay(delay time.Duration, friends ...*Friend) error {
|
||||||
return s.Self.ForwardMessageToFriends(s, delay, friends...)
|
return s.self.ForwardMessageToFriends(s, delay, friends...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ForwardToGroups 转发该消息给群组
|
// ForwardToGroups 转发该消息给群组
|
||||||
@ -669,7 +669,7 @@ func (s *SentMessage) ForwardToGroups(groups ...*Group) error {
|
|||||||
|
|
||||||
// ForwardToGroupsWithDelay 转发该消息给群组, 延迟指定时间
|
// ForwardToGroupsWithDelay 转发该消息给群组, 延迟指定时间
|
||||||
func (s *SentMessage) ForwardToGroupsWithDelay(delay time.Duration, groups ...*Group) error {
|
func (s *SentMessage) ForwardToGroupsWithDelay(delay time.Duration, groups ...*Group) error {
|
||||||
return s.Self.ForwardMessageToGroups(s, delay, groups...)
|
return s.self.ForwardMessageToGroups(s, delay, groups...)
|
||||||
}
|
}
|
||||||
|
|
||||||
type appmsg struct {
|
type appmsg struct {
|
||||||
|
46
relations.go
46
relations.go
@ -15,32 +15,32 @@ func (f Friend) String() string {
|
|||||||
|
|
||||||
// SetRemarkName 重命名当前好友
|
// SetRemarkName 重命名当前好友
|
||||||
func (f *Friend) SetRemarkName(name string) error {
|
func (f *Friend) SetRemarkName(name string) error {
|
||||||
return f.Self.SetRemarkNameToFriend(f, name)
|
return f.self.SetRemarkNameToFriend(f, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendText 发送文本消息
|
// SendText 发送文本消息
|
||||||
func (f *Friend) SendText(content string) (*SentMessage, error) {
|
func (f *Friend) SendText(content string) (*SentMessage, error) {
|
||||||
return f.Self.SendTextToFriend(f, content)
|
return f.self.SendTextToFriend(f, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendImage 发送图片消息
|
// SendImage 发送图片消息
|
||||||
func (f *Friend) SendImage(file *os.File) (*SentMessage, error) {
|
func (f *Friend) SendImage(file *os.File) (*SentMessage, error) {
|
||||||
return f.Self.SendImageToFriend(f, file)
|
return f.self.SendImageToFriend(f, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendVideo 发送视频消息
|
// SendVideo 发送视频消息
|
||||||
func (f *Friend) SendVideo(file *os.File) (*SentMessage, error) {
|
func (f *Friend) SendVideo(file *os.File) (*SentMessage, error) {
|
||||||
return f.Self.SendVideoToFriend(f, file)
|
return f.self.SendVideoToFriend(f, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendFile 发送文件消息
|
// SendFile 发送文件消息
|
||||||
func (f *Friend) SendFile(file *os.File) (*SentMessage, error) {
|
func (f *Friend) SendFile(file *os.File) (*SentMessage, error) {
|
||||||
return f.Self.SendFileToFriend(f, file)
|
return f.self.SendFileToFriend(f, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddIntoGroup 拉该好友入群
|
// AddIntoGroup 拉该好友入群
|
||||||
func (f *Friend) AddIntoGroup(groups ...*Group) error {
|
func (f *Friend) AddIntoGroup(groups ...*Group) error {
|
||||||
return f.Self.AddFriendIntoManyGroups(f, groups...)
|
return f.self.AddFriendIntoManyGroups(f, groups...)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Friends []*Friend
|
type Friends []*Friend
|
||||||
@ -112,7 +112,7 @@ func (f Friends) SendText(text string, delays ...time.Duration) error {
|
|||||||
if len(delays) > 0 {
|
if len(delays) > 0 {
|
||||||
delay = delays[0]
|
delay = delays[0]
|
||||||
}
|
}
|
||||||
self := f.First().Self
|
self := f.First().self
|
||||||
return self.SendTextToFriends(text, delay, f...)
|
return self.SendTextToFriends(text, delay, f...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ func (f Friends) SendImage(file *os.File, delays ...time.Duration) error {
|
|||||||
if len(delays) > 0 {
|
if len(delays) > 0 {
|
||||||
delay = delays[0]
|
delay = delays[0]
|
||||||
}
|
}
|
||||||
self := f.First().Self
|
self := f.First().self
|
||||||
return self.SendImageToFriends(file, delay, f...)
|
return self.SendImageToFriends(file, delay, f...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ func (f Friends) SendFile(file *os.File, delay ...time.Duration) error {
|
|||||||
if len(delay) > 0 {
|
if len(delay) > 0 {
|
||||||
d = delay[0]
|
d = delay[0]
|
||||||
}
|
}
|
||||||
self := f.First().Self
|
self := f.First().self
|
||||||
return self.SendFileToFriends(file, d, f...)
|
return self.SendFileToFriends(file, d, f...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,22 +151,22 @@ func (g Group) String() string {
|
|||||||
|
|
||||||
// SendText 发行文本消息给当前的群组
|
// SendText 发行文本消息给当前的群组
|
||||||
func (g *Group) SendText(content string) (*SentMessage, error) {
|
func (g *Group) SendText(content string) (*SentMessage, error) {
|
||||||
return g.Self.SendTextToGroup(g, content)
|
return g.self.SendTextToGroup(g, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendImage 发行图片消息给当前的群组
|
// SendImage 发行图片消息给当前的群组
|
||||||
func (g *Group) SendImage(file *os.File) (*SentMessage, error) {
|
func (g *Group) SendImage(file *os.File) (*SentMessage, error) {
|
||||||
return g.Self.SendImageToGroup(g, file)
|
return g.self.SendImageToGroup(g, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendVideo 发行视频消息给当前的群组
|
// SendVideo 发行视频消息给当前的群组
|
||||||
func (g *Group) SendVideo(file *os.File) (*SentMessage, error) {
|
func (g *Group) SendVideo(file *os.File) (*SentMessage, error) {
|
||||||
return g.Self.SendVideoToGroup(g, file)
|
return g.self.SendVideoToGroup(g, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendFile 发送文件给当前的群组
|
// SendFile 发送文件给当前的群组
|
||||||
func (g *Group) SendFile(file *os.File) (*SentMessage, error) {
|
func (g *Group) SendFile(file *os.File) (*SentMessage, error) {
|
||||||
return g.Self.SendFileToGroup(g, file)
|
return g.self.SendFileToGroup(g, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Members 获取所有的群成员
|
// Members 获取所有的群成员
|
||||||
@ -174,25 +174,25 @@ func (g *Group) Members() (Members, error) {
|
|||||||
if err := g.Detail(); err != nil {
|
if err := g.Detail(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
g.MemberList.init(g.Self)
|
g.MemberList.init(g.self)
|
||||||
return g.MemberList, nil
|
return g.MemberList, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddFriendsIn 拉好友入群
|
// AddFriendsIn 拉好友入群
|
||||||
func (g *Group) AddFriendsIn(friends ...*Friend) error {
|
func (g *Group) AddFriendsIn(friends ...*Friend) error {
|
||||||
return g.Self.AddFriendsIntoGroup(g, friends...)
|
return g.self.AddFriendsIntoGroup(g, friends...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveMembers 从群聊中移除用户
|
// RemoveMembers 从群聊中移除用户
|
||||||
// Deprecated
|
// Deprecated
|
||||||
// 无论是网页版,还是程序上都不起作用
|
// 无论是网页版,还是程序上都不起作用
|
||||||
func (g *Group) RemoveMembers(members Members) error {
|
func (g *Group) RemoveMembers(members Members) error {
|
||||||
return g.Self.RemoveMemberFromGroup(g, members)
|
return g.self.RemoveMemberFromGroup(g, members)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rename 群组重命名
|
// Rename 群组重命名
|
||||||
func (g *Group) Rename(name string) error {
|
func (g *Group) Rename(name string) error {
|
||||||
return g.Self.RenameGroup(g, name)
|
return g.self.RenameGroup(g, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SearchMemberByUsername 根据用户名查找群成员
|
// SearchMemberByUsername 根据用户名查找群成员
|
||||||
@ -249,7 +249,7 @@ func (g Groups) SendText(text string, delay ...time.Duration) error {
|
|||||||
if len(delay) > 0 {
|
if len(delay) > 0 {
|
||||||
d = delay[0]
|
d = delay[0]
|
||||||
}
|
}
|
||||||
self := g.First().Self
|
self := g.First().self
|
||||||
return self.SendTextToGroups(text, d, g...)
|
return self.SendTextToGroups(text, d, g...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,7 +262,7 @@ func (g Groups) SendImage(file *os.File, delay ...time.Duration) error {
|
|||||||
if len(delay) > 0 {
|
if len(delay) > 0 {
|
||||||
d = delay[0]
|
d = delay[0]
|
||||||
}
|
}
|
||||||
self := g.First().Self
|
self := g.First().self
|
||||||
return self.SendImageToGroups(file, d, g...)
|
return self.SendImageToGroups(file, d, g...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,7 +275,7 @@ func (g Groups) SendFile(file *os.File, delay ...time.Duration) error {
|
|||||||
if len(delay) > 0 {
|
if len(delay) > 0 {
|
||||||
d = delay[0]
|
d = delay[0]
|
||||||
}
|
}
|
||||||
self := g.First().Self
|
self := g.First().self
|
||||||
return self.SendFileToGroups(file, d, g...)
|
return self.SendFileToGroups(file, d, g...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,17 +381,17 @@ func (m Mps) SearchByNickName(limit int, nickName string) (results Mps) {
|
|||||||
|
|
||||||
// SendText 发送文本消息给公众号
|
// SendText 发送文本消息给公众号
|
||||||
func (m *Mp) SendText(content string) (*SentMessage, error) {
|
func (m *Mp) SendText(content string) (*SentMessage, error) {
|
||||||
return m.Self.SendTextToMp(m, content)
|
return m.self.SendTextToMp(m, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendImage 发送图片消息给公众号
|
// SendImage 发送图片消息给公众号
|
||||||
func (m *Mp) SendImage(file *os.File) (*SentMessage, error) {
|
func (m *Mp) SendImage(file *os.File) (*SentMessage, error) {
|
||||||
return m.Self.SendImageToMp(m, file)
|
return m.self.SendImageToMp(m, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendFile 发送文件消息给公众号
|
// SendFile 发送文件消息给公众号
|
||||||
func (m *Mp) SendFile(file *os.File) (*SentMessage, error) {
|
func (m *Mp) SendFile(file *os.File) (*SentMessage, error) {
|
||||||
return m.Self.SendFileToMp(m, file)
|
return m.self.SendFileToMp(m, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetByUsername 根据username查询一个Friend
|
// GetByUsername 根据username查询一个Friend
|
||||||
|
121
user.go
121
user.go
@ -49,7 +49,7 @@ type User struct {
|
|||||||
|
|
||||||
MemberList Members
|
MemberList Members
|
||||||
|
|
||||||
Self *Self `json:"-"`
|
self *Self
|
||||||
}
|
}
|
||||||
|
|
||||||
// implement fmt.Stringer
|
// implement fmt.Stringer
|
||||||
@ -60,7 +60,7 @@ func (u *User) String() string {
|
|||||||
// GetAvatarResponse 获取用户头像
|
// GetAvatarResponse 获取用户头像
|
||||||
func (u *User) GetAvatarResponse() (resp *http.Response, err error) {
|
func (u *User) GetAvatarResponse() (resp *http.Response, err error) {
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
resp, err = u.Self.Bot.Caller.Client.WebWxGetHeadImg(u)
|
resp, err = u.self.bot.Caller.Client.WebWxGetHeadImg(u)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -99,19 +99,19 @@ func (u *User) SaveAvatarWithWriter(writer io.Writer) error {
|
|||||||
|
|
||||||
// Detail 获取用户的详情
|
// Detail 获取用户的详情
|
||||||
func (u *User) Detail() error {
|
func (u *User) Detail() error {
|
||||||
if u.UserName == u.Self.UserName {
|
if u.UserName == u.self.UserName {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
members := Members{u}
|
members := Members{u}
|
||||||
request := u.Self.Bot.Storage.Request
|
request := u.self.bot.Storage.Request
|
||||||
newMembers, err := u.Self.Bot.Caller.WebWxBatchGetContact(members, request)
|
newMembers, err := u.self.bot.Caller.WebWxBatchGetContact(members, request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
newMembers.init(u.Self)
|
newMembers.init(u.self)
|
||||||
user := newMembers.First()
|
user := newMembers.First()
|
||||||
*u = *user
|
*u = *user
|
||||||
u.MemberList.init(u.Self)
|
u.MemberList.init(u.self)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,14 +132,14 @@ func (u *User) IsMP() bool {
|
|||||||
|
|
||||||
// Pin 将联系人置顶
|
// Pin 将联系人置顶
|
||||||
func (u *User) Pin() error {
|
func (u *User) Pin() error {
|
||||||
req := u.Self.Bot.Storage.Request
|
req := u.self.bot.Storage.Request
|
||||||
return u.Self.Bot.Caller.WebWxRelationPin(req, u, 1)
|
return u.self.bot.Caller.WebWxRelationPin(req, u, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnPin 将联系人取消置顶
|
// UnPin 将联系人取消置顶
|
||||||
func (u *User) UnPin() error {
|
func (u *User) UnPin() error {
|
||||||
req := u.Self.Bot.Storage.Request
|
req := u.self.bot.Storage.Request
|
||||||
return u.Self.Bot.Caller.WebWxRelationPin(req, u, 0)
|
return u.self.bot.Caller.WebWxRelationPin(req, u, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsPin 判断当前联系人(好友、群组、公众号)是否为置顶状态
|
// IsPin 判断当前联系人(好友、群组、公众号)是否为置顶状态
|
||||||
@ -170,6 +170,16 @@ func (u *User) ID() string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Self 返回当前用户
|
||||||
|
func (u *User) Self() *Self {
|
||||||
|
return u.self
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsSelf 判断是否为当前用户
|
||||||
|
func (u *User) IsSelf() bool {
|
||||||
|
return u.UserName == u.Self().UserName
|
||||||
|
}
|
||||||
|
|
||||||
// 格式化emoji表情
|
// 格式化emoji表情
|
||||||
func (u *User) formatEmoji() {
|
func (u *User) formatEmoji() {
|
||||||
u.NickName = FormatEmoji(u.NickName)
|
u.NickName = FormatEmoji(u.NickName)
|
||||||
@ -180,7 +190,7 @@ func (u *User) formatEmoji() {
|
|||||||
// Self 自己,当前登录用户对象
|
// Self 自己,当前登录用户对象
|
||||||
type Self struct {
|
type Self struct {
|
||||||
*User
|
*User
|
||||||
Bot *Bot
|
bot *Bot
|
||||||
fileHelper *Friend
|
fileHelper *Friend
|
||||||
members Members
|
members Members
|
||||||
friends Friends
|
friends Friends
|
||||||
@ -202,8 +212,8 @@ func (s *Self) Members(update ...bool) (Members, error) {
|
|||||||
|
|
||||||
// 更新联系人处理
|
// 更新联系人处理
|
||||||
func (s *Self) updateMembers() error {
|
func (s *Self) updateMembers() error {
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
members, err := s.Bot.Caller.WebWxGetContact(info)
|
members, err := s.bot.Caller.WebWxGetContact(info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -269,30 +279,30 @@ func (s *Self) sendTextToUser(user *User, text string) (*SentMessage, error) {
|
|||||||
msg := NewTextSendMessage(text, s.UserName, user.UserName)
|
msg := NewTextSendMessage(text, s.UserName, user.UserName)
|
||||||
msg.FromUserName = s.UserName
|
msg.FromUserName = s.UserName
|
||||||
msg.ToUserName = user.UserName
|
msg.ToUserName = user.UserName
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
request := s.Bot.Storage.Request
|
request := s.bot.Storage.Request
|
||||||
sentMessage, err := s.Bot.Caller.WebWxSendMsg(msg, info, request)
|
sentMessage, err := s.bot.Caller.WebWxSendMsg(msg, info, request)
|
||||||
return s.sendMessageWrapper(sentMessage, err)
|
return s.sendMessageWrapper(sentMessage, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Self) sendImageToUser(user *User, file *os.File) (*SentMessage, error) {
|
func (s *Self) sendImageToUser(user *User, file *os.File) (*SentMessage, error) {
|
||||||
req := s.Bot.Storage.Request
|
req := s.bot.Storage.Request
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
sentMessage, err := s.Bot.Caller.WebWxSendImageMsg(file, req, info, s.UserName, user.UserName)
|
sentMessage, err := s.bot.Caller.WebWxSendImageMsg(file, req, info, s.UserName, user.UserName)
|
||||||
return s.sendMessageWrapper(sentMessage, err)
|
return s.sendMessageWrapper(sentMessage, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Self) sendVideoToUser(user *User, file *os.File) (*SentMessage, error) {
|
func (s *Self) sendVideoToUser(user *User, file *os.File) (*SentMessage, error) {
|
||||||
req := s.Bot.Storage.Request
|
req := s.bot.Storage.Request
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
sentMessage, err := s.Bot.Caller.WebWxSendVideoMsg(file, req, info, s.UserName, user.UserName)
|
sentMessage, err := s.bot.Caller.WebWxSendVideoMsg(file, req, info, s.UserName, user.UserName)
|
||||||
return s.sendMessageWrapper(sentMessage, err)
|
return s.sendMessageWrapper(sentMessage, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Self) sendFileToUser(user *User, file *os.File) (*SentMessage, error) {
|
func (s *Self) sendFileToUser(user *User, file *os.File) (*SentMessage, error) {
|
||||||
req := s.Bot.Storage.Request
|
req := s.bot.Storage.Request
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
sentMessage, err := s.Bot.Caller.WebWxSendFile(file, req, info, s.UserName, user.UserName)
|
sentMessage, err := s.bot.Caller.WebWxSendFile(file, req, info, s.UserName, user.UserName)
|
||||||
return s.sendMessageWrapper(sentMessage, err)
|
return s.sendMessageWrapper(sentMessage, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,8 +330,8 @@ func (s *Self) SendFileToFriend(friend *Friend, file *os.File) (*SentMessage, er
|
|||||||
//
|
//
|
||||||
// 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)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateGroup 创建群聊
|
// CreateGroup 创建群聊
|
||||||
@ -331,13 +341,13 @@ func (s *Self) CreateGroup(topic string, friends ...*Friend) (*Group, error) {
|
|||||||
if len(friends) < 2 {
|
if len(friends) < 2 {
|
||||||
return nil, errors.New("a group must be at least 2 members")
|
return nil, errors.New("a group must be at least 2 members")
|
||||||
}
|
}
|
||||||
req := s.Bot.Storage.Request
|
req := s.bot.Storage.Request
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
group, err := s.Bot.Caller.WebWxCreateChatRoom(req, info, topic, friends)
|
group, err := s.bot.Caller.WebWxCreateChatRoom(req, info, topic, friends)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
group.Self = s
|
group.self = s
|
||||||
err = group.Detail()
|
err = group.Detail()
|
||||||
return group, err
|
return group, err
|
||||||
}
|
}
|
||||||
@ -361,9 +371,9 @@ func (s *Self) AddFriendsIntoGroup(group *Group, friends ...*Friend) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
req := s.Bot.Storage.Request
|
req := s.bot.Storage.Request
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
return s.Bot.Caller.AddFriendIntoChatRoom(req, info, group, friends...)
|
return s.bot.Caller.AddFriendIntoChatRoom(req, info, group, friends...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveMemberFromGroup 从群聊中移除用户
|
// RemoveMemberFromGroup 从群聊中移除用户
|
||||||
@ -392,9 +402,9 @@ func (s *Self) RemoveMemberFromGroup(group *Group, members Members) error {
|
|||||||
if count != len(members) {
|
if count != len(members) {
|
||||||
return errors.New("invalid members")
|
return errors.New("invalid members")
|
||||||
}
|
}
|
||||||
req := s.Bot.Storage.Request
|
req := s.bot.Storage.Request
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
return s.Bot.Caller.RemoveFriendFromChatRoom(req, info, group, members...)
|
return s.bot.Caller.RemoveFriendFromChatRoom(req, info, group, members...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddFriendIntoManyGroups 拉好友进多个群聊
|
// AddFriendIntoManyGroups 拉好友进多个群聊
|
||||||
@ -410,9 +420,9 @@ func (s *Self) AddFriendIntoManyGroups(friend *Friend, groups ...*Group) error {
|
|||||||
|
|
||||||
// RenameGroup 群组重命名
|
// RenameGroup 群组重命名
|
||||||
func (s *Self) RenameGroup(group *Group, newName string) error {
|
func (s *Self) RenameGroup(group *Group, newName string) error {
|
||||||
req := s.Bot.Storage.Request
|
req := s.bot.Storage.Request
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
return s.Bot.Caller.WebWxRenameChatRoom(req, info, newName, group)
|
return s.bot.Caller.WebWxRenameChatRoom(req, info, newName, group)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendTextToGroup 发送文本消息给群组
|
// SendTextToGroup 发送文本消息给群组
|
||||||
@ -442,19 +452,19 @@ func (s *Self) SendFileToGroup(group *Group, file *os.File) (*SentMessage, error
|
|||||||
// self.RevokeMessage(sentMessage) // or sentMessage.Revoke()
|
// 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)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 转发消息接口
|
// 转发消息接口
|
||||||
func (s *Self) forwardMessage(msg *SentMessage, delay time.Duration, users ...*User) error {
|
func (s *Self) forwardMessage(msg *SentMessage, delay time.Duration, users ...*User) error {
|
||||||
info := s.Bot.Storage.LoginInfo
|
info := s.bot.Storage.LoginInfo
|
||||||
req := s.Bot.Storage.Request
|
req := s.bot.Storage.Request
|
||||||
switch msg.Type {
|
switch msg.Type {
|
||||||
case MsgTypeText:
|
case MsgTypeText:
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
msg.FromUserName = s.UserName
|
msg.FromUserName = s.UserName
|
||||||
msg.ToUserName = user.UserName
|
msg.ToUserName = user.UserName
|
||||||
if _, err := s.Self.Bot.Caller.WebWxSendMsg(msg.SendMessage, info, req); err != nil {
|
if _, err := s.self.bot.Caller.WebWxSendMsg(msg.SendMessage, info, req); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
time.Sleep(delay)
|
time.Sleep(delay)
|
||||||
@ -463,7 +473,7 @@ func (s *Self) forwardMessage(msg *SentMessage, delay time.Duration, users ...*U
|
|||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
msg.FromUserName = s.UserName
|
msg.FromUserName = s.UserName
|
||||||
msg.ToUserName = user.UserName
|
msg.ToUserName = user.UserName
|
||||||
if _, err := s.Self.Bot.Caller.Client.WebWxSendMsgImg(msg.SendMessage, req, info); err != nil {
|
if _, err := s.self.bot.Caller.Client.WebWxSendMsgImg(msg.SendMessage, req, info); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
time.Sleep(delay)
|
time.Sleep(delay)
|
||||||
@ -472,7 +482,7 @@ func (s *Self) forwardMessage(msg *SentMessage, delay time.Duration, users ...*U
|
|||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
msg.FromUserName = s.UserName
|
msg.FromUserName = s.UserName
|
||||||
msg.ToUserName = user.UserName
|
msg.ToUserName = user.UserName
|
||||||
if _, err := s.Self.Bot.Caller.Client.WebWxSendAppMsg(msg.SendMessage, req); err != nil {
|
if _, err := s.self.bot.Caller.Client.WebWxSendAppMsg(msg.SendMessage, req); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
time.Sleep(delay)
|
time.Sleep(delay)
|
||||||
@ -721,7 +731,7 @@ func (m Members) detail(self *Self) error {
|
|||||||
times = count / 50
|
times = count / 50
|
||||||
}
|
}
|
||||||
var newMembers Members
|
var newMembers Members
|
||||||
request := self.Bot.Storage.Request
|
request := self.bot.Storage.Request
|
||||||
var pMembers Members
|
var pMembers Members
|
||||||
// 分情况依次更新
|
// 分情况依次更新
|
||||||
for i := 1; i <= times; i++ {
|
for i := 1; i <= times; i++ {
|
||||||
@ -730,7 +740,7 @@ func (m Members) detail(self *Self) error {
|
|||||||
} else {
|
} else {
|
||||||
pMembers = members[(i-1)*50 : i*50]
|
pMembers = members[(i-1)*50 : i*50]
|
||||||
}
|
}
|
||||||
nMembers, err := self.Bot.Caller.WebWxBatchGetContact(pMembers, request)
|
nMembers, err := self.bot.Caller.WebWxBatchGetContact(pMembers, request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -742,7 +752,7 @@ func (m Members) detail(self *Self) error {
|
|||||||
// 将全部剩余的更新完毕
|
// 将全部剩余的更新完毕
|
||||||
left := count - total
|
left := count - total
|
||||||
pMembers = members[total : total+left]
|
pMembers = members[total : total+left]
|
||||||
nMembers, err := self.Bot.Caller.WebWxBatchGetContact(pMembers, request)
|
nMembers, err := self.bot.Caller.WebWxBatchGetContact(pMembers, request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -757,13 +767,13 @@ func (m Members) detail(self *Self) error {
|
|||||||
|
|
||||||
func (m Members) init(self *Self) {
|
func (m Members) init(self *Self) {
|
||||||
for _, member := range m {
|
for _, member := range m {
|
||||||
member.Self = self
|
member.self = self
|
||||||
member.formatEmoji()
|
member.formatEmoji()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newFriend(username string, self *Self) *Friend {
|
func newFriend(username string, self *Self) *Friend {
|
||||||
return &Friend{&User{UserName: username, Self: self}}
|
return &Friend{&User{UserName: username, self: self}}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewFriendHelper 创建一个文件传输助手
|
// NewFriendHelper 创建一个文件传输助手
|
||||||
@ -796,6 +806,11 @@ func (s *Self) sendMessageWrapper(message *SentMessage, err error) (*SentMessage
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
message.Self = s
|
message.self = s
|
||||||
return message, nil
|
return message, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bot 获取当前用户的机器人
|
||||||
|
func (s *Self) Bot() *Bot {
|
||||||
|
return s.bot
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user