1
0
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:
Mrs4s 2020-07-09 10:04:05 +08:00
parent 2289b05764
commit 1afa9f801f
5 changed files with 29 additions and 14 deletions

View File

@ -16,6 +16,5 @@ qq-android协议的golang实现 移植于Mirai
| 群消息接受 |完成|
| 群消息发送 | 50% (仅支持 文本/图片/表情)|
| QQ各种事件 | 正在做, 已支持 群内禁言/群内消息撤回 |
| Cookies相关 | 咕咕|
| MiraiGo文档 | 咕咕|
| QQ协议说明文档| 自用整理 有空了应该会做|

View File

@ -407,9 +407,9 @@ func (pkt *TroopMemberInfo) ReadFrom(r *JceReader) {
pkt.MemberLevel = r.ReadInt64(14)
pkt.JoinTime = r.ReadInt64(15)
pkt.LastSpeakTime = r.ReadInt64(16)
pkt.Flag = r.ReadInt64(18)
pkt.SpecialTitle = r.ReadString(23)
pkt.SpecialTitleExpireTime = r.ReadInt64(24)
pkt.Job = r.ReadString(25)
}
func (pkt *PushMessageInfo) ReadFrom(r *JceReader) {

View File

@ -264,9 +264,9 @@ func (c *QQClient) GetGroupList() ([]*GroupInfo, error) {
return r, nil
}
func (c *QQClient) GetGroupMembers(group *GroupInfo) ([]GroupMemberInfo, error) {
func (c *QQClient) GetGroupMembers(group *GroupInfo) ([]*GroupMemberInfo, error) {
var nextUin int64
var list []GroupMemberInfo
var list []*GroupMemberInfo
for {
data, err := c.sendAndWait(c.buildGroupMemberListRequestPacket(group.Uin, group.Code, nextUin))
if err != nil {
@ -274,6 +274,12 @@ func (c *QQClient) GetGroupMembers(group *GroupInfo) ([]GroupMemberInfo, error)
}
rsp := data.(groupMemberListResponse)
nextUin = rsp.NextUin
for _, m := range rsp.list {
if m.Uin == group.OwnerUin {
m.Permission = Owner
break
}
}
list = append(list, rsp.list...)
if nextUin == 0 {
return list, nil
@ -305,7 +311,7 @@ func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo {
for _, m := range g.Members {
f := m
if f.Uin == uin {
return &f
return f
}
}
return nil

View File

@ -224,7 +224,7 @@ func decodeGroupListResponse(c *QQClient, seq uint16, payload []byte) (interface
Code: g.GroupCode,
Name: g.GroupName,
Memo: g.GroupMemo,
OwnerUin: uint32(g.GroupOwnerUin),
OwnerUin: g.GroupOwnerUin,
MemberCount: uint16(g.MemberNum),
MaxMemberCount: uint16(g.MaxGroupMemberNum),
})
@ -241,9 +241,9 @@ func decodeGroupMemberListResponse(c *QQClient, seq uint16, payload []byte) (int
members := []jce.TroopMemberInfo{}
r.ReadSlice(&members, 3)
next := r.ReadInt64(4)
var l []GroupMemberInfo
var l []*GroupMemberInfo
for _, m := range members {
l = append(l, GroupMemberInfo{
l = append(l, &GroupMemberInfo{
Uin: m.MemberUin,
Nickname: m.Nick,
CardName: m.Name,
@ -252,7 +252,12 @@ func decodeGroupMemberListResponse(c *QQClient, seq uint16, payload []byte) (int
LastSpeakTime: m.LastSpeakTime,
SpecialTitle: m.SpecialTitle,
SpecialTitleExpireTime: m.SpecialTitleExpireTime,
Job: m.Job,
Permission: func() MemberPermission {
if m.Flag == 1 {
return Administrator
}
return Member
}(),
})
}
return groupMemberListResponse{

View File

@ -9,6 +9,8 @@ var (
type (
LoginError int
MemberPermission int
LoginResponse struct {
Success bool
Error LoginError
@ -41,10 +43,10 @@ type (
Code int64
Name string
Memo string
OwnerUin uint32
OwnerUin int64
MemberCount uint16
MaxMemberCount uint16
Members []GroupMemberInfo
Members []*GroupMemberInfo
}
GroupMemberInfo struct {
@ -56,7 +58,7 @@ type (
LastSpeakTime int64
SpecialTitle string
SpecialTitleExpireTime int64
Job string
Permission MemberPermission
}
GroupMuteEvent struct {
@ -76,7 +78,7 @@ type (
groupMemberListResponse struct {
NextUin int64
list []GroupMemberInfo
list []*GroupMemberInfo
}
groupImageUploadResponse struct {
@ -93,8 +95,11 @@ type (
const (
NeedCaptcha LoginError = 1
DeviceLockError = 2
OtherLoginError = 3
UnsafeDeviceError = 4
UnknownLoginError = -1
Owner MemberPermission = iota
Administrator
Member
)