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:
parent
f96dcb7e9f
commit
16bfabcd28
@ -48,7 +48,7 @@ qq-android协议的golang实现 移植于Mirai
|
|||||||
- [x] 获取/刷新群成员列表
|
- [x] 获取/刷新群成员列表
|
||||||
- [x] 获取/刷新好友列表
|
- [x] 获取/刷新好友列表
|
||||||
- [ ] 获取/刷新讨论组列表
|
- [ ] 获取/刷新讨论组列表
|
||||||
- [ ] 处理加群请求
|
- [x] 处理加群请求
|
||||||
- [ ] 处理好友请求
|
- [ ] 处理好友请求
|
||||||
- [ ] 撤回群消息
|
- [ ] 撤回群消息
|
||||||
- [ ] 群公告设置
|
- [ ] 群公告设置
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user