diff --git a/bot.go b/bot.go index 18877a5..98a2856 100644 --- a/bot.go +++ b/bot.go @@ -24,7 +24,7 @@ type Bot struct { cancel context.CancelFunc Caller *Caller self *Self - storage *Storage + Storage *Storage HotReloadStorage HotReloadStorage } @@ -56,8 +56,8 @@ func (b *Bot) GetCurrentUser() (*Self, error) { // HotLogin 热登录,可实现重复登录, // retry设置为true可在热登录失效后进行普通登录行为 -// storage := NewJsonFileHotReloadStorage("storage.json") -// err := bot.HotLogin(storage, true) +// Storage := NewJsonFileHotReloadStorage("Storage.json") +// err := bot.HotLogin(Storage, true) // fmt.Println(err) func (b *Bot) HotLogin(storage HotReloadStorage, retry ...bool) error { b.IsHot = true @@ -103,9 +103,9 @@ func (b *Bot) hotLoginInit(item HotReloadStorageItem) error { } b.Caller.Client.Jar.SetCookies(path, ck) } - b.storage.LoginInfo = item.LoginInfo - b.storage.Request = item.BaseRequest - b.Caller.Client.domain = item.WechatDomain + b.Storage.LoginInfo = item.LoginInfo + b.Storage.Request = item.BaseRequest + b.Caller.Client.Domain = item.WechatDomain return nil } @@ -152,7 +152,7 @@ func (b *Bot) Logout() error { if b.LogoutCallBack != nil { b.LogoutCallBack(b) } - info := b.storage.LoginInfo + info := b.Storage.LoginInfo if err := b.Caller.Logout(info); err != nil { return err } @@ -170,7 +170,7 @@ func (b *Bot) HandleLogin(data []byte) error { return err } // 将LoginInfo存到storage里面 - b.storage.LoginInfo = info + b.Storage.LoginInfo = info // 构建BaseRequest request := &BaseRequest{ @@ -181,7 +181,7 @@ func (b *Bot) HandleLogin(data []byte) error { } // 将BaseRequest存到storage里面方便后续调用 - b.storage.Request = request + b.Storage.Request = request // 如果是热登陆,则将当前的重要信息写入hotReloadStorage if b.IsHot { @@ -195,8 +195,8 @@ func (b *Bot) HandleLogin(data []byte) error { // WebInit 根据有效凭证获取和初始化用户信息 func (b *Bot) WebInit() error { - req := b.storage.Request - info := b.storage.LoginInfo + req := b.Storage.Request + info := b.Storage.LoginInfo // 获取初始化的用户信息和一些必要的参数 resp, err := b.Caller.WebInit(req) if err != nil { @@ -205,7 +205,7 @@ func (b *Bot) WebInit() error { // 设置当前的用户 b.self = &Self{Bot: b, User: &resp.User} b.self.Self = b.self - b.storage.Response = resp + b.Storage.Response = resp // 通知手机客户端已经登录 if err = b.Caller.WebWxStatusNotify(req, resp, info); err != nil { @@ -234,7 +234,7 @@ func (b *Bot) asyncCall() error { ) for b.Alive() { // 长轮询检查是否有消息返回 - resp, err = b.Caller.SyncCheck(b.storage.LoginInfo, b.storage.Response) + resp, err = b.Caller.SyncCheck(b.Storage.LoginInfo, b.Storage.Response) if err != nil { return err } @@ -262,12 +262,12 @@ func (b *Bot) stopAsyncCALL(err error) { // 获取新的消息 func (b *Bot) getNewWechatMessage() error { - resp, err := b.Caller.WebWxSync(b.storage.Request, b.storage.Response, b.storage.LoginInfo) + resp, err := b.Caller.WebWxSync(b.Storage.Request, b.Storage.Response, b.Storage.LoginInfo) if err != nil { return err } // 更新SyncKey并且重新存入storage - b.storage.Response.SyncKey = resp.SyncKey + b.Storage.Response.SyncKey = resp.SyncKey // 遍历所有的新的消息,依次处理 for _, message := range resp.AddMsgList { // 根据不同的消息类型来进行处理,方便后续统一调用 @@ -311,10 +311,10 @@ func (b *Bot) DumpHotReloadStorage() error { } cookies := b.Caller.Client.GetCookieMap() item := HotReloadStorageItem{ - BaseRequest: b.storage.Request, + BaseRequest: b.Storage.Request, Cookies: cookies, - LoginInfo: b.storage.LoginInfo, - WechatDomain: b.Caller.Client.domain, + LoginInfo: b.Storage.LoginInfo, + WechatDomain: b.Caller.Client.Domain, } data, err := json.Marshal(item) @@ -345,7 +345,7 @@ func (b *Bot) OnLogout(f func(bot *Bot)) { // NewBot Bot的构造方法,需要自己传入Caller func NewBot(caller *Caller) *Bot { ctx, cancel := context.WithCancel(context.Background()) - return &Bot{Caller: caller, storage: &Storage{}, context: ctx, cancel: cancel} + return &Bot{Caller: caller, Storage: &Storage{}, context: ctx, cancel: cancel} } // DefaultBot 默认的Bot的构造方法, diff --git a/caller.go b/caller.go index 798dd17..c92edfc 100644 --- a/caller.go +++ b/caller.go @@ -80,7 +80,7 @@ func (c *Caller) GetLoginInfo(body []byte) (*LoginInfo, error) { if err != nil { return nil, err } - c.Client.domain = WechatDomain(path.Host) + c.Client.Domain = WechatDomain(path.Host) resp, err := c.Client.GetLoginInfo(path.String()) if err != nil { uErr, ok := err.(*url.Error) diff --git a/client.go b/client.go index 2203496..0941708 100644 --- a/client.go +++ b/client.go @@ -40,7 +40,7 @@ func (u UserAgentHook) AfterRequest(response *http.Response, err error) {} type Client struct { HttpHooks HttpHooks *http.Client - domain WechatDomain + Domain WechatDomain mode mode mu sync.Mutex cookies map[string][]*http.Cookie @@ -159,7 +159,7 @@ func (c *Client) GetLoginInfo(path string) (*http.Response, error) { // WebInit 请求获取初始化信息 func (c *Client) WebInit(request *BaseRequest) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxinit) + path, _ := url.Parse(c.Domain.BaseHost() + webwxinit) params := url.Values{} params.Add("_", fmt.Sprintf("%d", time.Now().Unix())) path.RawQuery = params.Encode() @@ -175,7 +175,7 @@ func (c *Client) WebInit(request *BaseRequest) (*http.Response, error) { // WebWxStatusNotify 通知手机已登录 func (c *Client) WebWxStatusNotify(request *BaseRequest, response *WebInitResponse, info *LoginInfo) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxstatusnotify) + path, _ := url.Parse(c.Domain.BaseHost() + webwxstatusnotify) params := url.Values{} params.Add("lang", "zh_CN") params.Add("pass_ticket", info.PassTicket) @@ -196,7 +196,7 @@ func (c *Client) WebWxStatusNotify(request *BaseRequest, response *WebInitRespon // SyncCheck 异步检查是否有新的消息返回 func (c *Client) SyncCheck(info *LoginInfo, response *WebInitResponse) (*http.Response, error) { - path, _ := url.Parse(c.domain.SyncHost() + synccheck) + path, _ := url.Parse(c.Domain.SyncHost() + synccheck) params := url.Values{} params.Add("r", strconv.FormatInt(time.Now().Unix(), 10)) params.Add("skey", info.SKey) @@ -219,7 +219,7 @@ func (c *Client) SyncCheck(info *LoginInfo, response *WebInitResponse) (*http.Re // WebWxGetContact 获取联系人信息 func (c *Client) WebWxGetContact(info *LoginInfo) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxgetcontact) + path, _ := url.Parse(c.Domain.BaseHost() + webwxgetcontact) params := url.Values{} params.Add("r", strconv.FormatInt(time.Now().Unix(), 10)) params.Add("skey", info.SKey) @@ -231,7 +231,7 @@ func (c *Client) WebWxGetContact(info *LoginInfo) (*http.Response, error) { // WebWxBatchGetContact 获取联系人详情 func (c *Client) WebWxBatchGetContact(members Members, request *BaseRequest) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxbatchgetcontact) + path, _ := url.Parse(c.Domain.BaseHost() + webwxbatchgetcontact) params := url.Values{} params.Add("type", "ex") params.Add("r", strconv.FormatInt(time.Now().Unix(), 10)) @@ -250,7 +250,7 @@ func (c *Client) WebWxBatchGetContact(members Members, request *BaseRequest) (*h // WebWxSync 获取消息接口 func (c *Client) WebWxSync(request *BaseRequest, response *WebInitResponse, info *LoginInfo) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxsync) + path, _ := url.Parse(c.Domain.BaseHost() + webwxsync) params := url.Values{} params.Add("sid", info.WxSid) params.Add("skey", info.SKey) @@ -284,7 +284,7 @@ func (c *Client) sendMessage(request *BaseRequest, url string, msg *SendMessage) // WebWxSendMsg 发送文本消息 func (c *Client) WebWxSendMsg(msg *SendMessage, info *LoginInfo, request *BaseRequest) (*http.Response, error) { msg.Type = TextMessage - path, _ := url.Parse(c.domain.BaseHost() + webwxsendmsg) + path, _ := url.Parse(c.Domain.BaseHost() + webwxsendmsg) params := url.Values{} params.Add("lang", "zh_CN") params.Add("pass_ticket", info.PassTicket) @@ -294,7 +294,7 @@ func (c *Client) WebWxSendMsg(msg *SendMessage, info *LoginInfo, request *BaseRe // WebWxGetHeadImg 获取用户的头像 func (c *Client) WebWxGetHeadImg(headImageUrl string) (*http.Response, error) { - path := c.domain.BaseHost() + headImageUrl + path := c.Domain.BaseHost() + headImageUrl req, _ := http.NewRequest(http.MethodGet, path, nil) return c.Do(req) } @@ -329,7 +329,7 @@ func (c *Client) WebWxUploadMediaByChunk(file *os.File, request *BaseRequest, in // 获取文件的类型 mediaType := getMessageType(sate.Name()) - path, _ := url.Parse(c.domain.FileHost() + webwxuploadmedia) + path, _ := url.Parse(c.Domain.FileHost() + webwxuploadmedia) params := url.Values{} params.Add("f", "json") @@ -451,7 +451,7 @@ func (c *Client) WebWxUploadMediaByChunk(file *os.File, request *BaseRequest, in // 发送的图片必须是已经成功上传的图片 func (c *Client) WebWxSendMsgImg(msg *SendMessage, request *BaseRequest, info *LoginInfo) (*http.Response, error) { msg.Type = ImageMessage - path, _ := url.Parse(c.domain.BaseHost() + webwxsendmsgimg) + path, _ := url.Parse(c.Domain.BaseHost() + webwxsendmsgimg) params := url.Values{} params.Add("fun", "async") params.Add("f", "json") @@ -464,7 +464,7 @@ func (c *Client) WebWxSendMsgImg(msg *SendMessage, request *BaseRequest, info *L // WebWxSendAppMsg 发送文件信息 func (c *Client) WebWxSendAppMsg(msg *SendMessage, request *BaseRequest) (*http.Response, error) { msg.Type = AppMessage - path, _ := url.Parse(c.domain.BaseHost() + webwxsendappmsg) + path, _ := url.Parse(c.Domain.BaseHost() + webwxsendappmsg) params := url.Values{} params.Add("fun", "async") params.Add("f", "json") @@ -474,7 +474,7 @@ func (c *Client) WebWxSendAppMsg(msg *SendMessage, request *BaseRequest) (*http. // WebWxOplog 用户重命名接口 func (c *Client) WebWxOplog(request *BaseRequest, remarkName, userName string) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxoplog) + path, _ := url.Parse(c.Domain.BaseHost() + webwxoplog) params := url.Values{} params.Add("lang", "zh_CN") path.RawQuery = params.Encode() @@ -493,7 +493,7 @@ func (c *Client) WebWxOplog(request *BaseRequest, remarkName, userName string) ( // WebWxVerifyUser 添加用户为好友接口 func (c *Client) WebWxVerifyUser(storage *Storage, info RecommendInfo, verifyContent string) (*http.Response, error) { loginInfo := storage.LoginInfo - path, _ := url.Parse(c.domain.BaseHost() + webwxverifyuser) + path, _ := url.Parse(c.Domain.BaseHost() + webwxverifyuser) params := url.Values{} params.Add("r", strconv.FormatInt(time.Now().Unix(), 10)) params.Add("lang", "zh_CN") @@ -520,7 +520,7 @@ func (c *Client) WebWxVerifyUser(storage *Storage, info RecommendInfo, verifyCon // WebWxGetMsgImg 获取图片消息的图片响应 func (c *Client) WebWxGetMsgImg(msg *Message, info *LoginInfo) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxgetmsgimg) + path, _ := url.Parse(c.Domain.BaseHost() + webwxgetmsgimg) params := url.Values{} params.Add("MsgID", msg.MsgId) params.Add("skey", info.SKey) @@ -532,7 +532,7 @@ func (c *Client) WebWxGetMsgImg(msg *Message, info *LoginInfo) (*http.Response, // WebWxGetVoice 获取语音消息的语音响应 func (c *Client) WebWxGetVoice(msg *Message, info *LoginInfo) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxgetvoice) + path, _ := url.Parse(c.Domain.BaseHost() + webwxgetvoice) params := url.Values{} params.Add("msgid", msg.MsgId) params.Add("skey", info.SKey) @@ -543,7 +543,7 @@ func (c *Client) WebWxGetVoice(msg *Message, info *LoginInfo) (*http.Response, e // WebWxGetVideo 获取视频消息的视频响应 func (c *Client) WebWxGetVideo(msg *Message, info *LoginInfo) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxgetvideo) + path, _ := url.Parse(c.Domain.BaseHost() + webwxgetvideo) params := url.Values{} params.Add("msgid", msg.MsgId) params.Add("skey", info.SKey) @@ -554,7 +554,7 @@ func (c *Client) WebWxGetVideo(msg *Message, info *LoginInfo) (*http.Response, e // WebWxGetMedia 获取文件消息的文件响应 func (c *Client) WebWxGetMedia(msg *Message, info *LoginInfo) (*http.Response, error) { - path, _ := url.Parse(c.domain.FileHost() + webwxgetmedia) + path, _ := url.Parse(c.Domain.FileHost() + webwxgetmedia) params := url.Values{} params.Add("sender", msg.FromUserName) params.Add("mediaid", msg.MediaId) @@ -569,7 +569,7 @@ func (c *Client) WebWxGetMedia(msg *Message, info *LoginInfo) (*http.Response, e // Logout 用户退出 func (c *Client) Logout(info *LoginInfo) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxlogout) + path, _ := url.Parse(c.Domain.BaseHost() + webwxlogout) params := url.Values{} params.Add("redirect", "1") params.Add("type", "1") @@ -581,7 +581,7 @@ func (c *Client) Logout(info *LoginInfo) (*http.Response, error) { // AddMemberIntoChatRoom 添加用户进群聊 func (c *Client) AddMemberIntoChatRoom(req *BaseRequest, info *LoginInfo, group *Group, friends ...*Friend) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxupdatechatroom) + path, _ := url.Parse(c.Domain.BaseHost() + webwxupdatechatroom) params := url.Values{} params.Add("fun", "addmember") params.Add("pass_ticket", info.PassTicket) @@ -604,7 +604,7 @@ func (c *Client) AddMemberIntoChatRoom(req *BaseRequest, info *LoginInfo, group // RemoveMemberFromChatRoom 从群聊中移除用户 func (c *Client) RemoveMemberFromChatRoom(req *BaseRequest, info *LoginInfo, group *Group, friends ...*User) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxupdatechatroom) + path, _ := url.Parse(c.Domain.BaseHost() + webwxupdatechatroom) params := url.Values{} params.Add("fun", "delmember") params.Add("lang", "zh_CN") @@ -633,14 +633,14 @@ func (c *Client) WebWxRevokeMsg(msg *SentMessage, request *BaseRequest) (*http.R "ToUserName": msg.ToUserName, } buffer, _ := ToBuffer(content) - req, _ := http.NewRequest(http.MethodPost, c.domain.BaseHost()+webwxrevokemsg, buffer) + req, _ := http.NewRequest(http.MethodPost, c.Domain.BaseHost()+webwxrevokemsg, buffer) req.Header.Set("Content-Type", jsonContentType) return c.Do(req) } // 校验上传文件 func (c *Client) webWxCheckUpload(stat os.FileInfo, request *BaseRequest, fileMd5, fromUserName, toUserName string) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxcheckupload) + path, _ := url.Parse(c.Domain.BaseHost() + webwxcheckupload) content := map[string]interface{}{ "BaseRequest": request, "FileMd5": fileMd5, @@ -657,7 +657,7 @@ func (c *Client) webWxCheckUpload(stat os.FileInfo, request *BaseRequest, fileMd } func (c *Client) WebWxStatusAsRead(request *BaseRequest, info *LoginInfo, msg *Message) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxstatusnotify) + path, _ := url.Parse(c.Domain.BaseHost() + webwxstatusnotify) content := map[string]interface{}{ "BaseRequest": request, "DeviceID": request.DeviceID, @@ -677,7 +677,7 @@ func (c *Client) WebWxStatusAsRead(request *BaseRequest, info *LoginInfo, msg *M // WebWxRelationPin 联系人置顶接口 func (c *Client) WebWxRelationPin(request *BaseRequest, op uint8, user *User) (*http.Response, error) { - path, _ := url.Parse(c.domain.BaseHost() + webwxoplog) + path, _ := url.Parse(c.Domain.BaseHost() + webwxoplog) content := map[string]interface{}{ "BaseRequest": request, "CmdId": 3, diff --git a/message.go b/message.go index 6fa61f5..0d7c58b 100644 --- a/message.go +++ b/message.go @@ -125,8 +125,8 @@ func (m *Message) IsSendByGroup() bool { // Reply 回复消息 func (m *Message) Reply(msgType int, content, mediaId string) (*SentMessage, error) { msg := NewSendMessage(msgType, content, m.Bot.self.User.UserName, m.FromUserName, mediaId) - info := m.Bot.storage.LoginInfo - request := m.Bot.storage.Request + info := m.Bot.Storage.LoginInfo + request := m.Bot.Storage.Request return m.Bot.Caller.WebWxSendMsg(msg, info, request) } @@ -137,15 +137,15 @@ func (m *Message) ReplyText(content string) (*SentMessage, error) { // ReplyImage 回复图片消息 func (m *Message) ReplyImage(file *os.File) (*SentMessage, error) { - info := m.Bot.storage.LoginInfo - request := m.Bot.storage.Request + info := m.Bot.Storage.LoginInfo + request := m.Bot.Storage.Request return m.Bot.Caller.WebWxSendImageMsg(file, request, info, m.Bot.self.UserName, m.FromUserName) } // ReplyFile 回复文件消息 func (m *Message) ReplyFile(file *os.File) (*SentMessage, error) { - info := m.Bot.storage.LoginInfo - request := m.Bot.storage.Request + info := m.Bot.Storage.LoginInfo + request := m.Bot.Storage.Request return m.Bot.Caller.WebWxSendFile(file, request, info, m.Bot.self.UserName, m.FromUserName) } @@ -234,16 +234,16 @@ func (m *Message) GetFile() (*http.Response, error) { return nil, errors.New("invalid message type") } if m.IsPicture() || m.IsEmoticon() { - return m.Bot.Caller.Client.WebWxGetMsgImg(m, m.Bot.storage.LoginInfo) + return m.Bot.Caller.Client.WebWxGetMsgImg(m, m.Bot.Storage.LoginInfo) } if m.IsVoice() { - return m.Bot.Caller.Client.WebWxGetVoice(m, m.Bot.storage.LoginInfo) + return m.Bot.Caller.Client.WebWxGetVoice(m, m.Bot.Storage.LoginInfo) } if m.IsVideo() { - return m.Bot.Caller.Client.WebWxGetVideo(m, m.Bot.storage.LoginInfo) + return m.Bot.Caller.Client.WebWxGetVideo(m, m.Bot.Storage.LoginInfo) } if m.IsMedia() { - return m.Bot.Caller.Client.WebWxGetMedia(m, m.Bot.storage.LoginInfo) + return m.Bot.Caller.Client.WebWxGetMedia(m, m.Bot.Storage.LoginInfo) } return nil, errors.New("unsupported type") } @@ -290,12 +290,12 @@ func (m *Message) Agree(verifyContents ...string) error { for _, v := range verifyContents { builder.WriteString(v) } - return m.Bot.Caller.WebWxVerifyUser(m.Bot.storage, m.RecommendInfo, builder.String()) + return m.Bot.Caller.WebWxVerifyUser(m.Bot.Storage, m.RecommendInfo, builder.String()) } // AsRead 将消息设置为已读 func (m *Message) AsRead() error { - return m.Bot.Caller.WebWxStatusAsRead(m.Bot.storage.Request, m.Bot.storage.LoginInfo, m) + return m.Bot.Caller.WebWxStatusAsRead(m.Bot.Storage.Request, m.Bot.Storage.LoginInfo, m) } // Set 往消息上下文中设置值 diff --git a/user.go b/user.go index e22cf44..0e3672e 100644 --- a/user.go +++ b/user.go @@ -85,7 +85,7 @@ func (u *User) Detail() (*User, error) { return u.Self.User, nil } members := Members{u} - request := u.Self.Bot.storage.Request + request := u.Self.Bot.Storage.Request newMembers, err := u.Self.Bot.Caller.WebWxBatchGetContact(members, request) if err != nil { return nil, err @@ -112,13 +112,13 @@ func (u *User) IsMP() bool { // Pin 将联系人置顶 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) } // UnPin 将联系人取消置顶 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) } @@ -152,7 +152,7 @@ func (s *Self) Members(update ...bool) (Members, error) { // 更新联系人处理 func (s *Self) updateMembers() error { - info := s.Bot.storage.LoginInfo + info := s.Bot.Storage.LoginInfo members, err := s.Bot.Caller.WebWxGetContact(info) if err != nil { return err @@ -229,8 +229,8 @@ func (s *Self) UpdateMembersDetail() error { func (s *Self) sendMessageToUser(user *User, msg *SendMessage) (*SentMessage, error) { msg.FromUserName = s.UserName msg.ToUserName = user.UserName - info := s.Bot.storage.LoginInfo - request := s.Bot.storage.Request + 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 @@ -252,22 +252,22 @@ func (s *Self) SendTextToFriend(friend *Friend, text string) (*SentMessage, erro // SendImageToFriend 发送图片消息给好友 func (s *Self) SendImageToFriend(friend *Friend, file *os.File) (*SentMessage, error) { - req := s.Bot.storage.Request - info := s.Bot.storage.LoginInfo + req := s.Bot.Storage.Request + info := s.Bot.Storage.LoginInfo return s.Bot.Caller.WebWxSendImageMsg(file, req, info, s.UserName, friend.UserName) } // SendFileToFriend 发送文件给好友 func (s *Self) SendFileToFriend(friend *Friend, file *os.File) (*SentMessage, error) { - req := s.Bot.storage.Request - info := s.Bot.storage.LoginInfo + req := s.Bot.Storage.Request + info := s.Bot.Storage.LoginInfo return s.Bot.Caller.WebWxSendFile(file, req, info, s.UserName, friend.UserName) } // SetRemarkNameToFriend 设置好友备注 // self.SetRemarkNameToFriend(friend, "remark") // or friend.SetRemarkName("remark") 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) } @@ -290,8 +290,8 @@ func (s *Self) AddFriendsIntoGroup(group *Group, friends ...*Friend) error { } } } - req := s.Bot.storage.Request - info := s.Bot.storage.LoginInfo + req := s.Bot.Storage.Request + info := s.Bot.Storage.LoginInfo return s.Bot.Caller.AddFriendIntoChatRoom(req, info, group, friends...) } @@ -321,8 +321,8 @@ func (s *Self) RemoveMemberFromGroup(group *Group, members Members) error { if count != len(members) { return errors.New("invalid members") } - req := s.Bot.storage.Request - info := s.Bot.storage.LoginInfo + req := s.Bot.Storage.Request + info := s.Bot.Storage.LoginInfo return s.Bot.Caller.RemoveFriendFromChatRoom(req, info, group, members...) } @@ -350,15 +350,15 @@ func (s *Self) SendTextToGroup(group *Group, text string) (*SentMessage, error) // SendImageToGroup 发送图片消息给群组 func (s *Self) SendImageToGroup(group *Group, file *os.File) (*SentMessage, error) { - req := s.Bot.storage.Request - info := s.Bot.storage.LoginInfo + req := s.Bot.Storage.Request + info := s.Bot.Storage.LoginInfo return s.Bot.Caller.WebWxSendImageMsg(file, req, info, s.UserName, group.UserName) } // SendFileToGroup 发送文件给群组 func (s *Self) SendFileToGroup(group *Group, file *os.File) (*SentMessage, error) { - req := s.Bot.storage.Request - info := s.Bot.storage.LoginInfo + req := s.Bot.Storage.Request + info := s.Bot.Storage.LoginInfo return s.Bot.Caller.WebWxSendFile(file, req, info, s.UserName, group.UserName) } @@ -368,13 +368,13 @@ func (s *Self) SendFileToGroup(group *Group, file *os.File) (*SentMessage, error // self.RevokeMessage(sentMessage) // or sentMessage.Revoke() // } 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, users ...*User) error { - info := s.Bot.storage.LoginInfo - req := s.Bot.storage.Request + info := s.Bot.Storage.LoginInfo + req := s.Bot.Storage.Request switch msg.Type { case TextMessage: for _, user := range users { @@ -539,7 +539,7 @@ func (m Members) detail(self *Self) error { times = count / 50 } var newMembers Members - request := self.Bot.storage.Request + request := self.Bot.Storage.Request var pMembers Members // 分情况依次更新 for i := 1; i <= times; i++ {