[feat]: 添加邀请用户加入群聊功能 (#216)
This commit is contained in:
parent
7cbb2ae1bb
commit
6be6359e34
3
bot.go
3
bot.go
@ -29,6 +29,7 @@ type Bot struct {
|
||||
Storage *Storage
|
||||
hotReloadStorage HotReloadStorage
|
||||
uuid string
|
||||
loginUUID *string
|
||||
deviceId string // 设备Id
|
||||
loginOptionGroup BotOptionGroup
|
||||
}
|
||||
@ -312,7 +313,7 @@ func (b *Bot) UUID() string {
|
||||
// @receiver b
|
||||
// @param uuid
|
||||
func (b *Bot) SetUUID(uuid string) {
|
||||
b.uuid = uuid
|
||||
b.loginUUID = &uuid
|
||||
}
|
||||
|
||||
// Context returns current context of bot
|
||||
|
@ -167,13 +167,15 @@ type SacnLogin struct{}
|
||||
|
||||
// Login 实现了 BotLogin 接口
|
||||
func (s *SacnLogin) Login(bot *Bot) error {
|
||||
uuid := bot.uuid
|
||||
if uuid == "" {
|
||||
var uuid string
|
||||
if bot.loginUUID == nil {
|
||||
var err error
|
||||
uuid, err = bot.Caller.GetLoginUUID()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
uuid = *bot.loginUUID
|
||||
}
|
||||
return s.checkLogin(bot, uuid)
|
||||
}
|
||||
|
31
client.go
31
client.go
@ -618,6 +618,14 @@ 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) {
|
||||
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)
|
||||
params := url.Values{}
|
||||
params.Add("fun", "addmember")
|
||||
@ -639,6 +647,29 @@ func (c *Client) AddMemberIntoChatRoom(req *BaseRequest, info *LoginInfo, group
|
||||
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 从群聊中移除用户
|
||||
func (c *Client) RemoveMemberFromChatRoom(req *BaseRequest, info *LoginInfo, group *Group, friends ...*User) (*http.Response, error) {
|
||||
path, _ := url.Parse(c.Domain.BaseHost() + webwxupdatechatroom)
|
||||
|
Loading…
x
Reference in New Issue
Block a user