mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
fix group member permission error.
This commit is contained in:
parent
2289b05764
commit
1afa9f801f
@ -16,6 +16,5 @@ qq-android协议的golang实现 移植于Mirai
|
|||||||
| 群消息接受 |完成|
|
| 群消息接受 |完成|
|
||||||
| 群消息发送 | 50% (仅支持 文本/图片/表情)|
|
| 群消息发送 | 50% (仅支持 文本/图片/表情)|
|
||||||
| QQ各种事件 | 正在做, 已支持 群内禁言/群内消息撤回 |
|
| QQ各种事件 | 正在做, 已支持 群内禁言/群内消息撤回 |
|
||||||
| Cookies相关 | 咕咕|
|
|
||||||
| MiraiGo文档 | 咕咕|
|
| MiraiGo文档 | 咕咕|
|
||||||
| QQ协议说明文档| 自用整理 有空了应该会做|
|
| QQ协议说明文档| 自用整理 有空了应该会做|
|
@ -407,9 +407,9 @@ func (pkt *TroopMemberInfo) ReadFrom(r *JceReader) {
|
|||||||
pkt.MemberLevel = r.ReadInt64(14)
|
pkt.MemberLevel = r.ReadInt64(14)
|
||||||
pkt.JoinTime = r.ReadInt64(15)
|
pkt.JoinTime = r.ReadInt64(15)
|
||||||
pkt.LastSpeakTime = r.ReadInt64(16)
|
pkt.LastSpeakTime = r.ReadInt64(16)
|
||||||
|
pkt.Flag = r.ReadInt64(18)
|
||||||
pkt.SpecialTitle = r.ReadString(23)
|
pkt.SpecialTitle = r.ReadString(23)
|
||||||
pkt.SpecialTitleExpireTime = r.ReadInt64(24)
|
pkt.SpecialTitleExpireTime = r.ReadInt64(24)
|
||||||
pkt.Job = r.ReadString(25)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pkt *PushMessageInfo) ReadFrom(r *JceReader) {
|
func (pkt *PushMessageInfo) ReadFrom(r *JceReader) {
|
||||||
|
@ -264,9 +264,9 @@ func (c *QQClient) GetGroupList() ([]*GroupInfo, error) {
|
|||||||
return r, nil
|
return r, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *QQClient) GetGroupMembers(group *GroupInfo) ([]GroupMemberInfo, error) {
|
func (c *QQClient) GetGroupMembers(group *GroupInfo) ([]*GroupMemberInfo, error) {
|
||||||
var nextUin int64
|
var nextUin int64
|
||||||
var list []GroupMemberInfo
|
var list []*GroupMemberInfo
|
||||||
for {
|
for {
|
||||||
data, err := c.sendAndWait(c.buildGroupMemberListRequestPacket(group.Uin, group.Code, nextUin))
|
data, err := c.sendAndWait(c.buildGroupMemberListRequestPacket(group.Uin, group.Code, nextUin))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -274,6 +274,12 @@ func (c *QQClient) GetGroupMembers(group *GroupInfo) ([]GroupMemberInfo, error)
|
|||||||
}
|
}
|
||||||
rsp := data.(groupMemberListResponse)
|
rsp := data.(groupMemberListResponse)
|
||||||
nextUin = rsp.NextUin
|
nextUin = rsp.NextUin
|
||||||
|
for _, m := range rsp.list {
|
||||||
|
if m.Uin == group.OwnerUin {
|
||||||
|
m.Permission = Owner
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
list = append(list, rsp.list...)
|
list = append(list, rsp.list...)
|
||||||
if nextUin == 0 {
|
if nextUin == 0 {
|
||||||
return list, nil
|
return list, nil
|
||||||
@ -305,7 +311,7 @@ func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo {
|
|||||||
for _, m := range g.Members {
|
for _, m := range g.Members {
|
||||||
f := m
|
f := m
|
||||||
if f.Uin == uin {
|
if f.Uin == uin {
|
||||||
return &f
|
return f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -224,7 +224,7 @@ func decodeGroupListResponse(c *QQClient, seq uint16, payload []byte) (interface
|
|||||||
Code: g.GroupCode,
|
Code: g.GroupCode,
|
||||||
Name: g.GroupName,
|
Name: g.GroupName,
|
||||||
Memo: g.GroupMemo,
|
Memo: g.GroupMemo,
|
||||||
OwnerUin: uint32(g.GroupOwnerUin),
|
OwnerUin: g.GroupOwnerUin,
|
||||||
MemberCount: uint16(g.MemberNum),
|
MemberCount: uint16(g.MemberNum),
|
||||||
MaxMemberCount: uint16(g.MaxGroupMemberNum),
|
MaxMemberCount: uint16(g.MaxGroupMemberNum),
|
||||||
})
|
})
|
||||||
@ -241,9 +241,9 @@ func decodeGroupMemberListResponse(c *QQClient, seq uint16, payload []byte) (int
|
|||||||
members := []jce.TroopMemberInfo{}
|
members := []jce.TroopMemberInfo{}
|
||||||
r.ReadSlice(&members, 3)
|
r.ReadSlice(&members, 3)
|
||||||
next := r.ReadInt64(4)
|
next := r.ReadInt64(4)
|
||||||
var l []GroupMemberInfo
|
var l []*GroupMemberInfo
|
||||||
for _, m := range members {
|
for _, m := range members {
|
||||||
l = append(l, GroupMemberInfo{
|
l = append(l, &GroupMemberInfo{
|
||||||
Uin: m.MemberUin,
|
Uin: m.MemberUin,
|
||||||
Nickname: m.Nick,
|
Nickname: m.Nick,
|
||||||
CardName: m.Name,
|
CardName: m.Name,
|
||||||
@ -252,7 +252,12 @@ func decodeGroupMemberListResponse(c *QQClient, seq uint16, payload []byte) (int
|
|||||||
LastSpeakTime: m.LastSpeakTime,
|
LastSpeakTime: m.LastSpeakTime,
|
||||||
SpecialTitle: m.SpecialTitle,
|
SpecialTitle: m.SpecialTitle,
|
||||||
SpecialTitleExpireTime: m.SpecialTitleExpireTime,
|
SpecialTitleExpireTime: m.SpecialTitleExpireTime,
|
||||||
Job: m.Job,
|
Permission: func() MemberPermission {
|
||||||
|
if m.Flag == 1 {
|
||||||
|
return Administrator
|
||||||
|
}
|
||||||
|
return Member
|
||||||
|
}(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return groupMemberListResponse{
|
return groupMemberListResponse{
|
||||||
|
@ -9,6 +9,8 @@ var (
|
|||||||
type (
|
type (
|
||||||
LoginError int
|
LoginError int
|
||||||
|
|
||||||
|
MemberPermission int
|
||||||
|
|
||||||
LoginResponse struct {
|
LoginResponse struct {
|
||||||
Success bool
|
Success bool
|
||||||
Error LoginError
|
Error LoginError
|
||||||
@ -41,10 +43,10 @@ type (
|
|||||||
Code int64
|
Code int64
|
||||||
Name string
|
Name string
|
||||||
Memo string
|
Memo string
|
||||||
OwnerUin uint32
|
OwnerUin int64
|
||||||
MemberCount uint16
|
MemberCount uint16
|
||||||
MaxMemberCount uint16
|
MaxMemberCount uint16
|
||||||
Members []GroupMemberInfo
|
Members []*GroupMemberInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
GroupMemberInfo struct {
|
GroupMemberInfo struct {
|
||||||
@ -56,7 +58,7 @@ type (
|
|||||||
LastSpeakTime int64
|
LastSpeakTime int64
|
||||||
SpecialTitle string
|
SpecialTitle string
|
||||||
SpecialTitleExpireTime int64
|
SpecialTitleExpireTime int64
|
||||||
Job string
|
Permission MemberPermission
|
||||||
}
|
}
|
||||||
|
|
||||||
GroupMuteEvent struct {
|
GroupMuteEvent struct {
|
||||||
@ -76,7 +78,7 @@ type (
|
|||||||
|
|
||||||
groupMemberListResponse struct {
|
groupMemberListResponse struct {
|
||||||
NextUin int64
|
NextUin int64
|
||||||
list []GroupMemberInfo
|
list []*GroupMemberInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
groupImageUploadResponse struct {
|
groupImageUploadResponse struct {
|
||||||
@ -93,8 +95,11 @@ type (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
NeedCaptcha LoginError = 1
|
NeedCaptcha LoginError = 1
|
||||||
DeviceLockError = 2
|
|
||||||
OtherLoginError = 3
|
OtherLoginError = 3
|
||||||
UnsafeDeviceError = 4
|
UnsafeDeviceError = 4
|
||||||
UnknownLoginError = -1
|
UnknownLoginError = -1
|
||||||
|
|
||||||
|
Owner MemberPermission = iota
|
||||||
|
Administrator
|
||||||
|
Member
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user