mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +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] 处理加群请求
|
||||
- [ ] 处理好友请求
|
||||
- [ ] 撤回群消息
|
||||
- [ ] 群公告设置
|
||||
|
@ -344,9 +344,15 @@ func (c *QQClient) FindGroup(code int64) *GroupInfo {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *QQClient) SolveGroupJoinRequest(req *UserJoinGroupRequest, accept bool) {
|
||||
_, pkt := c.buildSystemMsgGroupActionPacket(req.RequestId, req.RequesterUin, req.GroupCode, false, accept, false)
|
||||
_ = c.send(pkt)
|
||||
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)
|
||||
_ = 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 {
|
||||
@ -359,7 +365,7 @@ func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *GroupInfo) RemoveMember(uin int64) {
|
||||
func (g *GroupInfo) removeMember(uin int64) {
|
||||
if g.memLock == nil {
|
||||
g.memLock = new(sync.Mutex)
|
||||
}
|
||||
|
@ -470,7 +470,7 @@ func decodeOnlinePushTransPacket(c *QQClient, _ uint16, payload []byte) (interfa
|
||||
})
|
||||
case 0x82:
|
||||
if m := g.FindMember(target); m != nil {
|
||||
g.RemoveMember(m.Uin)
|
||||
g.removeMember(m.Uin)
|
||||
c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{
|
||||
Group: g,
|
||||
Member: m,
|
||||
@ -478,7 +478,7 @@ func decodeOnlinePushTransPacket(c *QQClient, _ uint16, payload []byte) (interfa
|
||||
}
|
||||
case 0x83:
|
||||
if m := g.FindMember(target); m != nil {
|
||||
g.RemoveMember(m.Uin)
|
||||
g.removeMember(m.Uin)
|
||||
c.dispatchMemberLeaveEvent(&MemberLeaveGroupEvent{
|
||||
Group: g,
|
||||
Member: m,
|
||||
@ -546,12 +546,13 @@ func decodeSystemMsgGroupPacket(c *QQClient, _ uint16, payload []byte) (interfac
|
||||
client: c,
|
||||
})
|
||||
case 1: // 被邀请
|
||||
c.dispatchGroupInvitedEvent(&GroupInvitedEvent{
|
||||
EventId: st.MsgSeq,
|
||||
c.dispatchGroupInvitedEvent(&GroupInvitedRequest{
|
||||
RequestId: st.MsgSeq,
|
||||
InvitorUin: st.Msg.ActionUin,
|
||||
InvitorNick: st.Msg.ActionUinNick,
|
||||
GroupCode: st.Msg.GroupCode,
|
||||
GroupName: st.Msg.GroupName,
|
||||
client: c,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -104,12 +104,14 @@ type (
|
||||
NewPermission MemberPermission
|
||||
}
|
||||
|
||||
GroupInvitedEvent struct {
|
||||
EventId int64
|
||||
GroupInvitedRequest struct {
|
||||
RequestId int64
|
||||
InvitorUin int64
|
||||
InvitorNick string
|
||||
GroupCode int64
|
||||
GroupName string
|
||||
|
||||
client *QQClient
|
||||
}
|
||||
|
||||
UserJoinGroupRequest struct {
|
||||
@ -177,3 +179,11 @@ func (r *UserJoinGroupRequest) Accept() {
|
||||
func (r *UserJoinGroupRequest) Reject() {
|
||||
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)
|
||||
memberLeavedHandlers []func(*QQClient, *MemberLeaveGroupEvent)
|
||||
permissionChangedHandlers []func(*QQClient, *MemberPermissionChangedEvent)
|
||||
groupInvitedHandlers []func(*QQClient, *GroupInvitedEvent)
|
||||
groupInvitedHandlers []func(*QQClient, *GroupInvitedRequest)
|
||||
joinRequestHandlers []func(*QQClient, *UserJoinGroupRequest)
|
||||
friendRequestHandlers []func(*QQClient, *NewFriendRequest)
|
||||
groupMessageReceiptHandlers sync.Map
|
||||
@ -70,7 +70,7 @@ func (c *QQClient) OnGroupMessageRecalled(f func(*QQClient, *GroupMessageRecalle
|
||||
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)
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
return
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user