[feat]: 添加邀请用户加入群聊功能 (#216)

This commit is contained in:
多吃点苹果 2023-01-30 21:09:41 +08:00 committed by GitHub
parent 7cbb2ae1bb
commit 6be6359e34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 3 deletions

3
bot.go
View File

@ -29,6 +29,7 @@ type Bot struct {
Storage *Storage Storage *Storage
hotReloadStorage HotReloadStorage hotReloadStorage HotReloadStorage
uuid string uuid string
loginUUID *string
deviceId string // 设备Id deviceId string // 设备Id
loginOptionGroup BotOptionGroup loginOptionGroup BotOptionGroup
} }
@ -312,7 +313,7 @@ func (b *Bot) UUID() string {
// @receiver b // @receiver b
// @param uuid // @param uuid
func (b *Bot) SetUUID(uuid string) { func (b *Bot) SetUUID(uuid string) {
b.uuid = uuid b.loginUUID = &uuid
} }
// Context returns current context of bot // Context returns current context of bot

View File

@ -167,13 +167,15 @@ type SacnLogin struct{}
// Login 实现了 BotLogin 接口 // Login 实现了 BotLogin 接口
func (s *SacnLogin) Login(bot *Bot) error { func (s *SacnLogin) Login(bot *Bot) error {
uuid := bot.uuid var uuid string
if uuid == "" { if bot.loginUUID == nil {
var err error var err error
uuid, err = bot.Caller.GetLoginUUID() uuid, err = bot.Caller.GetLoginUUID()
if err != nil { if err != nil {
return err return err
} }
} else {
uuid = *bot.loginUUID
} }
return s.checkLogin(bot, uuid) return s.checkLogin(bot, uuid)
} }

View File

@ -618,6 +618,14 @@ func (c *Client) Logout(info *LoginInfo) (*http.Response, error) {
// AddMemberIntoChatRoom 添加用户进群聊 // AddMemberIntoChatRoom 添加用户进群聊
func (c *Client) AddMemberIntoChatRoom(req *BaseRequest, info *LoginInfo, group *Group, friends ...*Friend) (*http.Response, error) { func (c *Client) AddMemberIntoChatRoom(req *BaseRequest, info *LoginInfo, group *Group, friends ...*Friend) (*http.Response, error) {
if len(group.MemberList) >= 40 {
return c.InviteMemberIntoChatRoom(req, info, group, friends...)
}
return c.addMemberIntoChatRoom(req, info, group, friends...)
}
// 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 := url.Values{}
params.Add("fun", "addmember") params.Add("fun", "addmember")
@ -639,6 +647,29 @@ func (c *Client) AddMemberIntoChatRoom(req *BaseRequest, info *LoginInfo, group
return c.Do(requ) return c.Do(requ)
} }
// InviteMemberIntoChatRoom 邀请用户进群聊
func (c *Client) InviteMemberIntoChatRoom(req *BaseRequest, info *LoginInfo, group *Group, friends ...*Friend) (*http.Response, error) {
path, _ := url.Parse(c.Domain.BaseHost() + webwxupdatechatroom)
params := url.Values{}
params.Add("fun", "invitemember")
params.Add("pass_ticket", info.PassTicket)
params.Add("lang", "zh_CN")
path.RawQuery = params.Encode()
addMemberList := make([]string, len(friends))
for index, friend := range friends {
addMemberList[index] = friend.UserName
}
content := map[string]interface{}{
"ChatRoomName": group.UserName,
"BaseRequest": req,
"InviteMemberList": strings.Join(addMemberList, ","),
}
buffer, _ := ToBuffer(content)
requ, _ := http.NewRequest(http.MethodPost, path.String(), buffer)
requ.Header.Set("Content-Type", jsonContentType)
return c.Do(requ)
}
// RemoveMemberFromChatRoom 从群聊中移除用户 // RemoveMemberFromChatRoom 从群聊中移除用户
func (c *Client) RemoveMemberFromChatRoom(req *BaseRequest, info *LoginInfo, group *Group, friends ...*User) (*http.Response, error) { 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)