From b5832e624d27a4471be06c0e93fa518c9769af1f Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 23 Jul 2022 22:52:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BE=E7=89=87=E3=80=81?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E3=80=81=E6=96=87=E4=BB=B6=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=92=A4=E5=9B=9E=E7=9A=84bug=20:bug:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message.go | 26 ++++++-------- relations.go | 54 ----------------------------- user.go | 98 +++++++++++++++++++++++++--------------------------- 3 files changed, 57 insertions(+), 121 deletions(-) diff --git a/message.go b/message.go index 615c7c6..a259406 100644 --- a/message.go +++ b/message.go @@ -135,43 +135,37 @@ func (m *Message) IsSendByGroup() bool { return strings.HasPrefix(m.FromUserName, "@@") } -// Reply 回复消息 -func (m *Message) Reply(msgType MessageType, content, mediaId string) (*SentMessage, error) { - msg := NewSendMessage(msgType, content, m.Bot.self.User.UserName, m.FromUserName, mediaId) +// ReplyText 回复文本消息 +func (m *Message) ReplyText(content string) (*SentMessage, error) { + msg := NewSendMessage(MsgTypeText, content, m.Bot.self.User.UserName, m.FromUserName, "") info := m.Bot.Storage.LoginInfo request := m.Bot.Storage.Request sentMessage, err := m.Bot.Caller.WebWxSendMsg(msg, info, request) - if err != nil { - return nil, err - } - sentMessage.Self = m.Bot.self - return sentMessage, nil -} - -// ReplyText 回复文本消息 -func (m *Message) ReplyText(content string) (*SentMessage, error) { - return m.Reply(MsgTypeText, content, "") + return m.Bot.self.sendMessageWrapper(sentMessage, err) } // ReplyImage 回复图片消息 func (m *Message) ReplyImage(file *os.File) (*SentMessage, error) { info := m.Bot.Storage.LoginInfo request := m.Bot.Storage.Request - return m.Bot.Caller.WebWxSendImageMsg(file, request, info, m.Bot.self.UserName, m.FromUserName) + sentMessage, err := m.Bot.Caller.WebWxSendImageMsg(file, request, info, m.Bot.self.UserName, m.FromUserName) + return m.Bot.self.sendMessageWrapper(sentMessage, err) } // ReplyVideo 回复视频消息 func (m *Message) ReplyVideo(file *os.File) (*SentMessage, error) { info := m.Bot.Storage.LoginInfo request := m.Bot.Storage.Request - return m.Bot.Caller.WebWxSendVideoMsg(file, request, info, m.Bot.self.UserName, m.FromUserName) + sentMessage, err := m.Bot.Caller.WebWxSendVideoMsg(file, request, info, m.Bot.self.UserName, m.FromUserName) + return m.Bot.self.sendMessageWrapper(sentMessage, err) } // ReplyFile 回复文件消息 func (m *Message) ReplyFile(file *os.File) (*SentMessage, error) { info := m.Bot.Storage.LoginInfo request := m.Bot.Storage.Request - return m.Bot.Caller.WebWxSendFile(file, request, info, m.Bot.self.UserName, m.FromUserName) + sentMessage, err := m.Bot.Caller.WebWxSendFile(file, request, info, m.Bot.self.UserName, m.FromUserName) + return m.Bot.self.sendMessageWrapper(sentMessage, err) } func (m *Message) IsText() bool { diff --git a/relations.go b/relations.go index 171bbcc..d7f4993 100644 --- a/relations.go +++ b/relations.go @@ -18,11 +18,6 @@ func (f *Friend) SetRemarkName(name string) error { return f.Self.SetRemarkNameToFriend(f, name) } -// SendMsg 发送自定义消息 -func (f *Friend) SendMsg(msg *SendMessage) (*SentMessage, error) { - return f.Self.SendMessageToFriend(f, msg) -} - // SendText 发送文本消息 func (f *Friend) SendText(content string) (*SentMessage, error) { return f.Self.SendTextToFriend(f, content) @@ -111,28 +106,6 @@ func (f Friends) Search(limit int, condFuncList ...func(friend *Friend) bool) (r return } -// SendMsg 向slice的好友依次发送消息 -func (f Friends) SendMsg(msg *SendMessage, delay ...time.Duration) error { - total := getTotalDuration(delay...) - var ( - sentMessage *SentMessage - err error - self *Self - ) - for _, friend := range f { - self = friend.Self - time.Sleep(total) - if sentMessage != nil { - err = self.ForwardMessageToFriends(sentMessage, f...) - return err - } - if sentMessage, err = friend.SendMsg(msg); err != nil { - return err - } - } - return nil -} - // SendText 向slice的好友依次发送文本消息 func (f Friends) SendText(text string, delay ...time.Duration) error { total := getTotalDuration(delay...) @@ -206,11 +179,6 @@ func (g Group) String() string { return fmt.Sprintf("", g.NickName) } -// SendMsg 发行消息给当前的群组 -func (g *Group) SendMsg(msg *SendMessage) (*SentMessage, error) { - return g.Self.SendMessageToGroup(g, msg) -} - // SendText 发行文本消息给当前的群组 func (g *Group) SendText(content string) (*SentMessage, error) { return g.Self.SendTextToGroup(g, content) @@ -280,28 +248,6 @@ func (g Groups) Last() *Group { return nil } -// SendMsg 向群组依次发送消息, 支持发送延迟 -func (g Groups) SendMsg(msg *SendMessage, delay ...time.Duration) error { - total := getTotalDuration(delay...) - var ( - sentMessage *SentMessage - err error - self *Self - ) - for _, group := range g { - self = group.Self - time.Sleep(total) - if sentMessage != nil { - err = self.ForwardMessageToGroups(sentMessage, g...) - return err - } - if sentMessage, err = group.SendMsg(msg); err != nil { - return err - } - } - return nil -} - // SendText 向群组依次发送文本消息, 支持发送延迟 func (g Groups) SendText(text string, delay ...time.Duration) error { total := getTotalDuration(delay...) diff --git a/user.go b/user.go index 1d85db0..4d7cb38 100644 --- a/user.go +++ b/user.go @@ -248,50 +248,55 @@ func (s *Self) UpdateMembersDetail() error { return members.detail(s) } -// 抽象发送消息接口 -func (s *Self) sendMessageToUser(user *User, msg *SendMessage) (*SentMessage, error) { +func (s *Self) sendTextToUser(user *User, text string) (*SentMessage, error) { + msg := NewTextSendMessage(text, s.UserName, user.UserName) msg.FromUserName = s.UserName msg.ToUserName = user.UserName info := s.Bot.Storage.LoginInfo request := s.Bot.Storage.Request - successSendMessage, err := s.Bot.Caller.WebWxSendMsg(msg, info, request) - if err != nil { - return nil, err - } - successSendMessage.Self = s - return successSendMessage, nil + sentMessage, err := s.Bot.Caller.WebWxSendMsg(msg, info, request) + return s.sendMessageWrapper(sentMessage, err) } -// SendMessageToFriend 发送消息给好友 -func (s *Self) SendMessageToFriend(friend *Friend, msg *SendMessage) (*SentMessage, error) { - return s.sendMessageToUser(friend.User, msg) +func (s *Self) sendImageToUser(user *User, file *os.File) (*SentMessage, error) { + req := s.Bot.Storage.Request + info := s.Bot.Storage.LoginInfo + sentMessage, err := s.Bot.Caller.WebWxSendImageMsg(file, req, info, s.UserName, user.UserName) + return s.sendMessageWrapper(sentMessage, err) +} + +func (s *Self) sendVideoToUser(user *User, file *os.File) (*SentMessage, error) { + req := s.Bot.Storage.Request + info := s.Bot.Storage.LoginInfo + sentMessage, err := s.Bot.Caller.WebWxSendVideoMsg(file, req, info, s.UserName, user.UserName) + return s.sendMessageWrapper(sentMessage, err) +} + +func (s *Self) sendFileToUser(user *User, file *os.File) (*SentMessage, error) { + req := s.Bot.Storage.Request + info := s.Bot.Storage.LoginInfo + sentMessage, err := s.Bot.Caller.WebWxSendFile(file, req, info, s.UserName, user.UserName) + return s.sendMessageWrapper(sentMessage, err) } // SendTextToFriend 发送文本消息给好友 func (s *Self) SendTextToFriend(friend *Friend, text string) (*SentMessage, error) { - msg := NewTextSendMessage(text, s.UserName, friend.UserName) - return s.SendMessageToFriend(friend, msg) + return s.sendTextToUser(friend.User, text) } // SendImageToFriend 发送图片消息给好友 func (s *Self) SendImageToFriend(friend *Friend, file *os.File) (*SentMessage, error) { - req := s.Bot.Storage.Request - info := s.Bot.Storage.LoginInfo - return s.Bot.Caller.WebWxSendImageMsg(file, req, info, s.UserName, friend.UserName) + return s.sendImageToUser(friend.User, file) } // SendVideoToFriend 发送视频给好友 func (s *Self) SendVideoToFriend(friend *Friend, file *os.File) (*SentMessage, error) { - req := s.Bot.Storage.Request - info := s.Bot.Storage.LoginInfo - return s.Bot.Caller.WebWxSendVideoMsg(file, req, info, s.UserName, friend.UserName) + return s.sendVideoToUser(friend.User, file) } // SendFileToFriend 发送文件给好友 func (s *Self) SendFileToFriend(friend *Friend, file *os.File) (*SentMessage, error) { - req := s.Bot.Storage.Request - info := s.Bot.Storage.LoginInfo - return s.Bot.Caller.WebWxSendFile(file, req, info, s.UserName, friend.UserName) + return s.sendFileToUser(friend.User, file) } // SetRemarkNameToFriend 设置好友备注 @@ -392,36 +397,24 @@ func (s *Self) RenameGroup(group *Group, newName string) error { return s.Bot.Caller.WebWxRenameChatRoom(req, info, newName, group) } -// SendMessageToGroup 发送消息给群组 -func (s *Self) SendMessageToGroup(group *Group, msg *SendMessage) (*SentMessage, error) { - return s.sendMessageToUser(group.User, msg) -} - // SendTextToGroup 发送文本消息给群组 func (s *Self) SendTextToGroup(group *Group, text string) (*SentMessage, error) { - msg := NewTextSendMessage(text, s.UserName, group.UserName) - return s.SendMessageToGroup(group, msg) + return s.sendTextToUser(group.User, text) } // SendImageToGroup 发送图片消息给群组 func (s *Self) SendImageToGroup(group *Group, file *os.File) (*SentMessage, error) { - req := s.Bot.Storage.Request - info := s.Bot.Storage.LoginInfo - return s.Bot.Caller.WebWxSendImageMsg(file, req, info, s.UserName, group.UserName) + return s.sendImageToUser(group.User, file) } // SendVideoToGroup 发送视频给群组 func (s *Self) SendVideoToGroup(group *Group, file *os.File) (*SentMessage, error) { - req := s.Bot.Storage.Request - info := s.Bot.Storage.LoginInfo - return s.Bot.Caller.WebWxSendVideoMsg(file, req, info, s.UserName, group.UserName) + return s.sendVideoToUser(group.User, file) } // SendFileToGroup 发送文件给群组 func (s *Self) SendFileToGroup(group *Group, file *os.File) (*SentMessage, error) { - req := s.Bot.Storage.Request - info := s.Bot.Storage.LoginInfo - return s.Bot.Caller.WebWxSendFile(file, req, info, s.UserName, group.UserName) + return s.sendFileToUser(group.User, file) } // RevokeMessage 撤回消息 @@ -668,27 +661,30 @@ func NewFriendHelper(self *Self) *Friend { return &Friend{&User{UserName: "filehelper", Self: self}} } -// SendMessageToMp 发送消息给公众号 -func (s *Self) SendMessageToMp(mp *Mp, msg *SendMessage) (*SentMessage, error) { - return s.sendMessageToUser(mp.User, msg) -} - // SendTextToMp 发送文本消息给公众号 func (s *Self) SendTextToMp(mp *Mp, text string) (*SentMessage, error) { - msg := NewTextSendMessage(text, s.UserName, mp.UserName) - return s.SendMessageToMp(mp, msg) + return s.sendTextToUser(mp.User, text) } // SendImageToMp 发送图片消息给公众号 func (s *Self) SendImageToMp(mp *Mp, file *os.File) (*SentMessage, error) { - req := s.Bot.Storage.Request - info := s.Bot.Storage.LoginInfo - return s.Bot.Caller.WebWxSendImageMsg(file, req, info, s.UserName, mp.UserName) + return s.sendImageToUser(mp.User, file) } // SendFileToMp 发送文件给公众号 func (s *Self) SendFileToMp(mp *Mp, file *os.File) (*SentMessage, error) { - req := s.Bot.Storage.Request - info := s.Bot.Storage.LoginInfo - return s.Bot.Caller.WebWxSendFile(file, req, info, s.UserName, mp.UserName) + return s.sendFileToUser(mp.User, file) +} + +// SendVideoToMp 发送视频消息给公众号 +func (s *Self) SendVideoToMp(mp *Mp, file *os.File) (*SentMessage, error) { + return s.sendVideoToUser(mp.User, file) +} + +func (s *Self) sendMessageWrapper(message *SentMessage, err error) (*SentMessage, error) { + if err != nil { + return nil, err + } + message.Self = s + return message, nil }