1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

supported solve group invited request.

This commit is contained in:
Mrs4s 2020-07-16 19:10:08 +08:00
parent f96dcb7e9f
commit 16bfabcd28
5 changed files with 31 additions and 14 deletions

View File

@ -48,7 +48,7 @@ qq-android协议的golang实现 移植于Mirai
- [x] 获取/刷新群成员列表 - [x] 获取/刷新群成员列表
- [x] 获取/刷新好友列表 - [x] 获取/刷新好友列表
- [ ] 获取/刷新讨论组列表 - [ ] 获取/刷新讨论组列表
- [ ] 处理加群请求 - [x] 处理加群请求
- [ ] 处理好友请求 - [ ] 处理好友请求
- [ ] 撤回群消息 - [ ] 撤回群消息
- [ ] 群公告设置 - [ ] 群公告设置

View File

@ -344,9 +344,15 @@ func (c *QQClient) FindGroup(code int64) *GroupInfo {
return nil return nil
} }
func (c *QQClient) SolveGroupJoinRequest(req *UserJoinGroupRequest, accept bool) { func (c *QQClient) SolveGroupJoinRequest(i interface{}, accept bool) {
switch req := i.(type) {
case *UserJoinGroupRequest:
_, pkt := c.buildSystemMsgGroupActionPacket(req.RequestId, req.RequesterUin, req.GroupCode, false, accept, false) _, pkt := c.buildSystemMsgGroupActionPacket(req.RequestId, req.RequesterUin, req.GroupCode, false, accept, false)
_ = c.send(pkt) _ = c.send(pkt)
case *GroupInvitedRequest:
_, pkt := c.buildSystemMsgGroupActionPacket(req.RequestId, req.InvitorUin, req.GroupCode, true, accept, false)
_ = c.send(pkt)
}
} }
func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo { func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo {
@ -359,7 +365,7 @@ func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo {
return nil return nil
} }
func (g *GroupInfo) RemoveMember(uin int64) { func (g *GroupInfo) removeMember(uin int64) {
if g.memLock == nil { if g.memLock == nil {
g.memLock = new(sync.Mutex) g.memLock = new(sync.Mutex)
} }

View File

@ -470,7 +470,7 @@ func decodeOnlinePushTransPacket(c *QQClient, _ uint16, payload []byte) (interfa
}) })
case 0x82: case 0x82:
if m := g.FindMember(target); m != nil { if m := g.FindMember(target); m != nil {
g.RemoveMember(m.Uin) g.removeMember(m.Uin)
c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{ c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{
Group: g, Group: g,
Member: m, Member: m,
@ -478,7 +478,7 @@ func decodeOnlinePushTransPacket(c *QQClient, _ uint16, payload []byte) (interfa
} }
case 0x83: case 0x83:
if m := g.FindMember(target); m != nil { if m := g.FindMember(target); m != nil {
g.RemoveMember(m.Uin) g.removeMember(m.Uin)
c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{ c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{
Group: g, Group: g,
Member: m, Member: m,
@ -546,12 +546,13 @@ func decodeSystemMsgGroupPacket(c *QQClient, _ uint16, payload []byte) (interfac
client: c, client: c,
}) })
case 1: // 被邀请 case 1: // 被邀请
c.dispatchGroupInvitedEvent(&GroupInvitedEvent{ c.dispatchGroupInvitedEvent(&GroupInvitedRequest{
EventId: st.MsgSeq, RequestId: st.MsgSeq,
InvitorUin: st.Msg.ActionUin, InvitorUin: st.Msg.ActionUin,
InvitorNick: st.Msg.ActionUinNick, InvitorNick: st.Msg.ActionUinNick,
GroupCode: st.Msg.GroupCode, GroupCode: st.Msg.GroupCode,
GroupName: st.Msg.GroupName, GroupName: st.Msg.GroupName,
client: c,
}) })
} }
} }

View File

@ -104,12 +104,14 @@ type (
NewPermission MemberPermission NewPermission MemberPermission
} }
GroupInvitedEvent struct { GroupInvitedRequest struct {
EventId int64 RequestId int64
InvitorUin int64 InvitorUin int64
InvitorNick string InvitorNick string
GroupCode int64 GroupCode int64
GroupName string GroupName string
client *QQClient
} }
UserJoinGroupRequest struct { UserJoinGroupRequest struct {
@ -177,3 +179,11 @@ func (r *UserJoinGroupRequest) Accept() {
func (r *UserJoinGroupRequest) Reject() { func (r *UserJoinGroupRequest) Reject() {
r.client.SolveGroupJoinRequest(r, false) r.client.SolveGroupJoinRequest(r, false)
} }
func (r *GroupInvitedRequest) Accept() {
r.client.SolveGroupJoinRequest(r, true)
}
func (r *GroupInvitedRequest) Reject() {
r.client.SolveGroupJoinRequest(r, false)
}

View File

@ -16,7 +16,7 @@ type eventHandlers struct {
memberJoinedHandlers []func(*QQClient, *MemberJoinGroupEvent) memberJoinedHandlers []func(*QQClient, *MemberJoinGroupEvent)
memberLeavedHandlers []func(*QQClient, *MemberLeaveGroupEvent) memberLeavedHandlers []func(*QQClient, *MemberLeaveGroupEvent)
permissionChangedHandlers []func(*QQClient, *MemberPermissionChangedEvent) permissionChangedHandlers []func(*QQClient, *MemberPermissionChangedEvent)
groupInvitedHandlers []func(*QQClient, *GroupInvitedEvent) groupInvitedHandlers []func(*QQClient, *GroupInvitedRequest)
joinRequestHandlers []func(*QQClient, *UserJoinGroupRequest) joinRequestHandlers []func(*QQClient, *UserJoinGroupRequest)
friendRequestHandlers []func(*QQClient, *NewFriendRequest) friendRequestHandlers []func(*QQClient, *NewFriendRequest)
groupMessageReceiptHandlers sync.Map groupMessageReceiptHandlers sync.Map
@ -70,7 +70,7 @@ func (c *QQClient) OnGroupMessageRecalled(f func(*QQClient, *GroupMessageRecalle
c.eventHandlers.groupRecalledHandlers = append(c.eventHandlers.groupRecalledHandlers, f) c.eventHandlers.groupRecalledHandlers = append(c.eventHandlers.groupRecalledHandlers, f)
} }
func (c *QQClient) OnGroupInvited(f func(*QQClient, *GroupInvitedEvent)) { func (c *QQClient) OnGroupInvited(f func(*QQClient, *GroupInvitedRequest)) {
c.eventHandlers.groupInvitedHandlers = append(c.eventHandlers.groupInvitedHandlers, f) c.eventHandlers.groupInvitedHandlers = append(c.eventHandlers.groupInvitedHandlers, f)
} }
@ -213,7 +213,7 @@ func (c *QQClient) dispatchGroupMessageReceiptEvent(e *groupMessageReceiptEvent)
}) })
} }
func (c *QQClient) dispatchGroupInvitedEvent(e *GroupInvitedEvent) { func (c *QQClient) dispatchGroupInvitedEvent(e *GroupInvitedRequest) {
if e == nil { if e == nil {
return return
} }