From 0e5add2146c30e10eb66e769b9864bf546a1daad Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Sat, 6 Jul 2024 22:29:10 +0800 Subject: [PATCH] fix: some compatibility issues on 9.0.70+ It is not recommended to use this build for lower versions --- .../tencent/mobileqq/msf/core/MsfCore.java | 2 +- .../mobileqq/msf/service/MsfService.java | 22 ++ .../qphone/base/util/CodecWarpper.java | 4 +- .../qqnt/aio/api/IAIOFileTransfer.java | 2 +- .../qqnt/kernel/api/impl/GroupService.java | 4 + .../nativeinterface/ContactMsgBoxInfo.java | 2 + .../nativeinterface/GrayTipGroupMember.java | 2 + .../nativeinterface/GroupDetailInfo.java | 2 + .../nativeinterface/GroupGuildNotifyInfo.java | 2 + .../GroupMemberCommonListResult.java | 36 +++ .../nativeinterface/GroupMemberCommonReq.java | 101 +++++++ .../GroupMemberExtListResult.java | 81 +++++ .../nativeinterface/GroupMemberExtReq.java | 101 +++++++ .../GroupMemberListResult.java | 32 ++ .../nativeinterface/GroupSimpleInfo.java | 2 + .../IGroupMemberCommonCallback.java | 6 + .../IGroupMemberExtCallback.java | 5 + .../IGroupMemberListCallback.java | 6 + .../nativeinterface/IKernelGroupService.java | 18 ++ .../nativeinterface/IKernelMsgListener.java | 3 +- .../nativeinterface/IKernelMsgService.java | 2 + .../IKernelRichMediaService.java | 2 + .../nativeinterface/MemberCommonInfo.java | 63 ++++ .../MemberCommonInfoFilter.java | 63 ++++ .../kernel/nativeinterface/MemberExtInfo.java | 110 +++++++ .../nativeinterface/MemberExtInfoFilter.java | 171 +++++++++++ .../kernel/nativeinterface/MemberIcon.java | 29 ++ .../kernel/nativeinterface/MemberInfo.java | 277 +++++++++++++++--- .../nativeinterface/MemberLevelName.java | 19 ++ .../kernel/nativeinterface/MsgAbstract.java | 2 + .../kernel/nativeinterface/UnreadCntInfo.java | 1 + .../nativeinterface/Contact.java | 4 +- .../nativeinterface/MemberRole.java | 2 +- .../com/tencent/qqnt/msg/api/IMsgService.java | 1 + .../fuqiuluo/qqinterface/servlet/BaseSvc.kt | 10 +- .../fuqiuluo/qqinterface/servlet/GroupSvc.kt | 80 +++-- .../fuqiuluo/qqinterface/servlet/PacketSvc.kt | 2 +- .../servlet/transfile/NtV2RichMediaSvc.kt | 2 +- .../fuqiuluo/shamrock/helper/MessageHelper.kt | 3 +- .../remote/action/handlers/GetTroopHonor.kt | 13 +- .../action/handlers/GetTroopMemberList.kt | 82 +++--- .../remote/service/listener/AioListener.kt | 5 +- .../shamrock/xposed/hooks/HookWrapperCodec.kt | 4 +- 43 files changed, 1249 insertions(+), 131 deletions(-) create mode 100644 qqinterface/src/main/java/com/tencent/mobileqq/msf/service/MsfService.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/api/impl/GroupService.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberCommonListResult.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberCommonReq.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberExtListResult.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberExtReq.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberListResult.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberCommonCallback.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberExtCallback.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberListCallback.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberCommonInfo.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberCommonInfoFilter.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberExtInfo.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberExtInfoFilter.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberIcon.java create mode 100644 qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberLevelName.java rename qqinterface/src/main/java/com/tencent/qqnt/{kernel => kernelpublic}/nativeinterface/Contact.java (90%) rename qqinterface/src/main/java/com/tencent/qqnt/{kernel => kernelpublic}/nativeinterface/MemberRole.java (62%) diff --git a/qqinterface/src/main/java/com/tencent/mobileqq/msf/core/MsfCore.java b/qqinterface/src/main/java/com/tencent/mobileqq/msf/core/MsfCore.java index 66d55cc..6f8a19c 100644 --- a/qqinterface/src/main/java/com/tencent/mobileqq/msf/core/MsfCore.java +++ b/qqinterface/src/main/java/com/tencent/mobileqq/msf/core/MsfCore.java @@ -1,7 +1,7 @@ package com.tencent.mobileqq.msf.core; public class MsfCore { - public static synchronized int getNextSeq() { + public synchronized int getNextSeq() { return 0; } } diff --git a/qqinterface/src/main/java/com/tencent/mobileqq/msf/service/MsfService.java b/qqinterface/src/main/java/com/tencent/mobileqq/msf/service/MsfService.java new file mode 100644 index 0000000..ce09ee7 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/mobileqq/msf/service/MsfService.java @@ -0,0 +1,22 @@ +package com.tencent.mobileqq.msf.service; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +import androidx.annotation.Nullable; + +import com.tencent.mobileqq.msf.core.MsfCore; + +public class MsfService extends Service { + @Nullable + @Override + public IBinder onBind(Intent intent) { + return null; + } + + public static MsfCore getCore() { + return null; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qphone/base/util/CodecWarpper.java b/qqinterface/src/main/java/com/tencent/qphone/base/util/CodecWarpper.java index 8eb2da4..2efe075 100644 --- a/qqinterface/src/main/java/com/tencent/qphone/base/util/CodecWarpper.java +++ b/qqinterface/src/main/java/com/tencent/qphone/base/util/CodecWarpper.java @@ -1,7 +1,9 @@ package com.tencent.qphone.base.util; public abstract class CodecWarpper { - public abstract void onResponse(int i2, Object obj, int i3); +// public abstract void onResponse(int i2, Object obj, int i3); + + public abstract void onInvalidData(int i2, int i3, String str); public abstract void onResponse(int i2, Object obj, int i3, byte[] bArr); diff --git a/qqinterface/src/main/java/com/tencent/qqnt/aio/api/IAIOFileTransfer.java b/qqinterface/src/main/java/com/tencent/qqnt/aio/api/IAIOFileTransfer.java index 53b0d3f..17586a7 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/aio/api/IAIOFileTransfer.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/aio/api/IAIOFileTransfer.java @@ -1,8 +1,8 @@ package com.tencent.qqnt.aio.api; import com.tencent.mobileqq.qroute.QRouteApi; -import com.tencent.qqnt.kernel.nativeinterface.Contact; import com.tencent.qqnt.kernel.nativeinterface.IOperateCallback; +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact; public interface IAIOFileTransfer extends QRouteApi { void sendLocalFile(Contact contact, String path, IOperateCallback cb); diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/api/impl/GroupService.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/api/impl/GroupService.java new file mode 100644 index 0000000..e555f27 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/api/impl/GroupService.java @@ -0,0 +1,4 @@ +package com.tencent.qqnt.kernel.api.impl; + +public class GroupService { +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/ContactMsgBoxInfo.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/ContactMsgBoxInfo.java index e2e43c0..40a4720 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/ContactMsgBoxInfo.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/ContactMsgBoxInfo.java @@ -1,5 +1,7 @@ package com.tencent.qqnt.kernel.nativeinterface; +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact; + import java.util.ArrayList; diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GrayTipGroupMember.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GrayTipGroupMember.java index 96aff9b..5c7cf13 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GrayTipGroupMember.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GrayTipGroupMember.java @@ -1,5 +1,7 @@ package com.tencent.qqnt.kernel.nativeinterface; +import com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole; + import java.io.Serializable; public final class GrayTipGroupMember implements Serializable { diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupDetailInfo.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupDetailInfo.java index 6e807b2..6adc5b6 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupDetailInfo.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupDetailInfo.java @@ -1,5 +1,7 @@ package com.tencent.qqnt.kernel.nativeinterface; +import com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole; + import java.util.ArrayList; diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupGuildNotifyInfo.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupGuildNotifyInfo.java index 2a56d50..61c6fc7 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupGuildNotifyInfo.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupGuildNotifyInfo.java @@ -1,5 +1,7 @@ package com.tencent.qqnt.kernel.nativeinterface; +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact; + import java.util.ArrayList; diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberCommonListResult.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberCommonListResult.java new file mode 100644 index 0000000..6429436 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberCommonListResult.java @@ -0,0 +1,36 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +import java.util.ArrayList; + +public class GroupMemberCommonListResult { + public long groupCode; + public int identifyFlag; + public long startUin; + public ArrayList memberList = new ArrayList<>(); + public String strErrorInfo = ""; + + public long getGroupCode() { + return this.groupCode; + } + + public int getIdentifyFlag() { + return this.identifyFlag; + } + + public ArrayList getMemberList() { + return this.memberList; + } + + public long getStartUin() { + return this.startUin; + } + + public String getStrErrorInfo() { + return this.strErrorInfo; + } + + public String toString() { + return "GroupMemberCommonListResult{groupCode=" + this.groupCode + ",startUin=" + this.startUin + ",identifyFlag=" + this.identifyFlag + ",memberList=" + this.memberList + ",strErrorInfo=" + this.strErrorInfo + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberCommonReq.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberCommonReq.java new file mode 100644 index 0000000..4e8f194 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberCommonReq.java @@ -0,0 +1,101 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +import java.util.ArrayList; + +public class GroupMemberCommonReq { + public long groupCode; + public int sourceType; + public String startUin = ""; + public String identifyFlag = ""; + public ArrayList uinList = new ArrayList<>(); + public MemberCommonInfoFilter memberCommonFilter = new MemberCommonInfoFilter(); + public String memberNum = ""; + public String filterMethod = ""; + public String onlineFlag = ""; + public String realSpecialTitleFlag = ""; + + public String getFilterMethod() { + return this.filterMethod; + } + + public long getGroupCode() { + return this.groupCode; + } + + public String getIdentifyFlag() { + return this.identifyFlag; + } + + public MemberCommonInfoFilter getMemberCommonFilter() { + return this.memberCommonFilter; + } + + public String getMemberNum() { + return this.memberNum; + } + + public String getOnlineFlag() { + return this.onlineFlag; + } + + public String getRealSpecialTitleFlag() { + return this.realSpecialTitleFlag; + } + + public int getSourceType() { + return this.sourceType; + } + + public String getStartUin() { + return this.startUin; + } + + public ArrayList getUinList() { + return this.uinList; + } + + public void setFilterMethod(String str) { + this.filterMethod = str; + } + + public void setGroupCode(long j2) { + this.groupCode = j2; + } + + public void setIdentifyFlag(String str) { + this.identifyFlag = str; + } + + public void setMemberCommonFilter(MemberCommonInfoFilter memberCommonInfoFilter) { + this.memberCommonFilter = memberCommonInfoFilter; + } + + public void setMemberNum(String str) { + this.memberNum = str; + } + + public void setOnlineFlag(String str) { + this.onlineFlag = str; + } + + public void setRealSpecialTitleFlag(String str) { + this.realSpecialTitleFlag = str; + } + + public void setSourceType(int i2) { + this.sourceType = i2; + } + + public void setStartUin(String str) { + this.startUin = str; + } + + public void setUinList(ArrayList arrayList) { + this.uinList = arrayList; + } + + public String toString() { + return "GroupMemberCommonReq{groupCode=" + this.groupCode + ",startUin=" + this.startUin + ",identifyFlag=" + this.identifyFlag + ",uinList=" + this.uinList + ",memberCommonFilter=" + this.memberCommonFilter + ",memberNum=" + this.memberNum + ",filterMethod=" + this.filterMethod + ",onlineFlag=" + this.onlineFlag + ",realSpecialTitleFlag=" + this.realSpecialTitleFlag + ",sourceType=" + this.sourceType + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberExtListResult.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberExtListResult.java new file mode 100644 index 0000000..57343fd --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberExtListResult.java @@ -0,0 +1,81 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +import java.util.ArrayList; + +public class GroupMemberExtListResult { + public long dataTime; + public long endUin; + public long groupCode; + public int levelNameSeq; + public int memberInfoSeq; + public int sysShowFlag; + public int timeToUpdate; + public int userShowFlag; + public int userShowFlagNew; + public ArrayList memberLevelInfo = new ArrayList<>(); + public ArrayList msgLevelName = new ArrayList<>(); + public String strOwnerName = ""; + public String strAdminName = ""; + public ArrayList msgLevelNameNew = new ArrayList<>(); + + public long getDataTime() { + return this.dataTime; + } + + public long getEndUin() { + return this.endUin; + } + + public long getGroupCode() { + return this.groupCode; + } + + public int getLevelNameSeq() { + return this.levelNameSeq; + } + + public int getMemberInfoSeq() { + return this.memberInfoSeq; + } + + public ArrayList getMemberLevelInfo() { + return this.memberLevelInfo; + } + + public ArrayList getMsgLevelName() { + return this.msgLevelName; + } + + public ArrayList getMsgLevelNameNew() { + return this.msgLevelNameNew; + } + + public String getStrAdminName() { + return this.strAdminName; + } + + public String getStrOwnerName() { + return this.strOwnerName; + } + + public int getSysShowFlag() { + return this.sysShowFlag; + } + + public int getTimeToUpdate() { + return this.timeToUpdate; + } + + public int getUserShowFlag() { + return this.userShowFlag; + } + + public int getUserShowFlagNew() { + return this.userShowFlagNew; + } + + public String toString() { + return "GroupMemberExtListResult{groupCode=" + this.groupCode + ",memberLevelInfo=" + this.memberLevelInfo + ",msgLevelName=" + this.msgLevelName + ",endUin=" + this.endUin + ",dataTime=" + this.dataTime + ",userShowFlag=" + this.userShowFlag + ",sysShowFlag=" + this.sysShowFlag + ",timeToUpdate=" + this.timeToUpdate + ",strOwnerName=" + this.strOwnerName + ",strAdminName=" + this.strAdminName + ",levelNameSeq=" + this.levelNameSeq + ",userShowFlagNew=" + this.userShowFlagNew + ",msgLevelNameNew=" + this.msgLevelNameNew + ",memberInfoSeq=" + this.memberInfoSeq + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberExtReq.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberExtReq.java new file mode 100644 index 0000000..58a4c66 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberExtReq.java @@ -0,0 +1,101 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +import java.util.ArrayList; + +public class GroupMemberExtReq { + public long groupCode; + public int sourceType; + public String beginUin = ""; + public String dataTime = ""; + public ArrayList uinList = new ArrayList<>(); + public MemberExtInfoFilter memberExtFilter = new MemberExtInfoFilter(); + public String seq = ""; + public String uinNum = ""; + public String groupType = ""; + public String richCardNameVer = ""; + + public String getBeginUin() { + return this.beginUin; + } + + public String getDataTime() { + return this.dataTime; + } + + public long getGroupCode() { + return this.groupCode; + } + + public String getGroupType() { + return this.groupType; + } + + public MemberExtInfoFilter getMemberExtFilter() { + return this.memberExtFilter; + } + + public String getRichCardNameVer() { + return this.richCardNameVer; + } + + public String getSeq() { + return this.seq; + } + + public int getSourceType() { + return this.sourceType; + } + + public ArrayList getUinList() { + return this.uinList; + } + + public String getUinNum() { + return this.uinNum; + } + + public void setBeginUin(String str) { + this.beginUin = str; + } + + public void setDataTime(String str) { + this.dataTime = str; + } + + public void setGroupCode(long j2) { + this.groupCode = j2; + } + + public void setGroupType(String str) { + this.groupType = str; + } + + public void setMemberExtFilter(MemberExtInfoFilter memberExtInfoFilter) { + this.memberExtFilter = memberExtInfoFilter; + } + + public void setRichCardNameVer(String str) { + this.richCardNameVer = str; + } + + public void setSeq(String str) { + this.seq = str; + } + + public void setSourceType(int i2) { + this.sourceType = i2; + } + + public void setUinList(ArrayList arrayList) { + this.uinList = arrayList; + } + + public void setUinNum(String str) { + this.uinNum = str; + } + + public String toString() { + return "GroupMemberExtReq{groupCode=" + this.groupCode + ",beginUin=" + this.beginUin + ",dataTime=" + this.dataTime + ",uinList=" + this.uinList + ",memberExtFilter=" + this.memberExtFilter + ",seq=" + this.seq + ",uinNum=" + this.uinNum + ",groupType=" + this.groupType + ",richCardNameVer=" + this.richCardNameVer + ",sourceType=" + this.sourceType + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberListResult.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberListResult.java new file mode 100644 index 0000000..827b918 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupMemberListResult.java @@ -0,0 +1,32 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +import java.util.ArrayList; +import java.util.HashMap; + +public class GroupMemberListResult { + public boolean finish; + public boolean hasRobot; + public ArrayList ids = new ArrayList<>(); + public HashMap infos = new HashMap<>(); + + public boolean getFinish() { + return this.finish; + } + + public boolean getHasRobot() { + return this.hasRobot; + } + + public ArrayList getIds() { + return this.ids; + } + + public HashMap getInfos() { + return this.infos; + } + + public String toString() { + return "GroupMemberListResult{ids=" + this.ids + ",infos=" + this.infos + ",finish=" + this.finish + ",hasRobot=" + this.hasRobot + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupSimpleInfo.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupSimpleInfo.java index e9f8e90..29a94af 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupSimpleInfo.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/GroupSimpleInfo.java @@ -1,5 +1,7 @@ package com.tencent.qqnt.kernel.nativeinterface; +import com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole; + public final class GroupSimpleInfo implements IKernelModel { String avatarUrl; int discussToGroupMaxMsgSeq; diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberCommonCallback.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberCommonCallback.java new file mode 100644 index 0000000..04f171f --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberCommonCallback.java @@ -0,0 +1,6 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +public interface IGroupMemberCommonCallback { + void onResult(int i2, String str, GroupMemberCommonListResult groupMemberCommonListResult); + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberExtCallback.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberExtCallback.java new file mode 100644 index 0000000..3db7b32 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberExtCallback.java @@ -0,0 +1,5 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +public interface IGroupMemberExtCallback { + void onResult(int i2, String str, GroupMemberExtListResult groupMemberExtListResult); +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberListCallback.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberListCallback.java new file mode 100644 index 0000000..9d3db68 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IGroupMemberListCallback.java @@ -0,0 +1,6 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +public interface IGroupMemberListCallback { + void onResult(int result, String str, GroupMemberListResult groupMemberListResult); + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelGroupService.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelGroupService.java index 3be776d..c13e36c 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelGroupService.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelGroupService.java @@ -1,7 +1,25 @@ package com.tencent.qqnt.kernel.nativeinterface; +import java.util.ArrayList; + public interface IKernelGroupService { void getTransferableMemberInfo(long uin, IGetTransferableMemberCallback cb); long addKernelGroupListener(IKernelGroupListener ln); + + void getAllMemberList(long groupCode, boolean refresh, IGroupMemberListCallback iGroupMemberListCallback); + + void getMemberCommonInfo(GroupMemberCommonReq groupMemberCommonReq, IGroupMemberCommonCallback iGroupMemberCommonCallback); + + void getMemberExtInfo(GroupMemberExtReq groupMemberExtReq, IGroupMemberExtCallback iGroupMemberExtCallback); + + void getMemberInfo(long j2, ArrayList arrayList, boolean z, IOperateCallback iOperateCallback); + + void getMemberInfoForMqq(long groupCode, ArrayList uids, boolean z, IGroupMemberListCallback iGroupMemberListCallback); + + void getNextMemberList(String sceneId, GroupMemberInfoListId groupMemberInfoListId, int i2, IGroupMemberListCallback iGroupMemberListCallback); + + void getPrevMemberList(String sceneId, GroupMemberInfoListId groupMemberInfoListId, int i2, IGroupMemberListCallback iGroupMemberListCallback); + + } diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelMsgListener.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelMsgListener.java index ce24afb..ba128da 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelMsgListener.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelMsgListener.java @@ -2,6 +2,7 @@ package com.tencent.qqnt.kernel.nativeinterface; import java.util.ArrayList; import java.util.HashMap; +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact; public interface IKernelMsgListener { void onAddSendMsg(MsgRecord msgRecord); @@ -116,7 +117,7 @@ public interface IKernelMsgListener { void onSendMsgError(long j2, Contact contact, int i2, String str); - void onSysMsgNotification(int i2, long j2, long j3, ArrayList arrayList); + void onSysMsgNotification(int i2, long j2, long j3, boolean z, ArrayList arrayList); void onTempChatInfoUpdate(TempChatInfo tempChatInfo); diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelMsgService.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelMsgService.java index 60d4638..8a0a524 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelMsgService.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelMsgService.java @@ -1,5 +1,7 @@ package com.tencent.qqnt.kernel.nativeinterface; +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact; + import org.jetbrains.annotations.NotNull; import java.util.ArrayList; diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelRichMediaService.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelRichMediaService.java index 7201af5..9d0393c 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelRichMediaService.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/IKernelRichMediaService.java @@ -1,5 +1,7 @@ package com.tencent.qqnt.kernel.nativeinterface; +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact; + import java.util.ArrayList; public interface IKernelRichMediaService { diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberCommonInfo.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberCommonInfo.java new file mode 100644 index 0000000..c18d65d --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberCommonInfo.java @@ -0,0 +1,63 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +public class MemberCommonInfo { + public long memberUin; + public int privilege; + public int shutUpTime; + public int uinFlag; + public int uinFlagExt; + public int uinMobileFlag; + + public long getMemberUin() { + return this.memberUin; + } + + public int getPrivilege() { + return this.privilege; + } + + public int getShutUpTime() { + return this.shutUpTime; + } + + public int getUinFlag() { + return this.uinFlag; + } + + public int getUinFlagExt() { + return this.uinFlagExt; + } + + public int getUinMobileFlag() { + return this.uinMobileFlag; + } + + public void setMemberUin(long j2) { + this.memberUin = j2; + } + + public void setPrivilege(int i2) { + this.privilege = i2; + } + + public void setShutUpTime(int i2) { + this.shutUpTime = i2; + } + + public void setUinFlag(int i2) { + this.uinFlag = i2; + } + + public void setUinFlagExt(int i2) { + this.uinFlagExt = i2; + } + + public void setUinMobileFlag(int i2) { + this.uinMobileFlag = i2; + } + + public String toString() { + return "MemberCommonInfo{memberUin=" + this.memberUin + ",uinFlag=" + this.uinFlag + ",uinFlagExt=" + this.uinFlagExt + ",uinMobileFlag=" + this.uinMobileFlag + ",shutUpTime=" + this.shutUpTime + ",privilege=" + this.privilege + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberCommonInfoFilter.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberCommonInfoFilter.java new file mode 100644 index 0000000..0ee9fa6 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberCommonInfoFilter.java @@ -0,0 +1,63 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +public class MemberCommonInfoFilter { + public int memberUin; + public int privilege; + public int shutUpTime; + public int uinFlag; + public int uinFlagExt; + public int uinMobileFlag; + + public int getMemberUin() { + return this.memberUin; + } + + public int getPrivilege() { + return this.privilege; + } + + public int getShutUpTime() { + return this.shutUpTime; + } + + public int getUinFlag() { + return this.uinFlag; + } + + public int getUinFlagExt() { + return this.uinFlagExt; + } + + public int getUinMobileFlag() { + return this.uinMobileFlag; + } + + public void setMemberUin(int i2) { + this.memberUin = i2; + } + + public void setPrivilege(int i2) { + this.privilege = i2; + } + + public void setShutUpTime(int i2) { + this.shutUpTime = i2; + } + + public void setUinFlag(int i2) { + this.uinFlag = i2; + } + + public void setUinFlagExt(int i2) { + this.uinFlagExt = i2; + } + + public void setUinMobileFlag(int i2) { + this.uinMobileFlag = i2; + } + + public String toString() { + return "MemberCommonInfoFilter{memberUin=" + this.memberUin + ",uinFlag=" + this.uinFlag + ",uinFlagExt=" + this.uinFlagExt + ",uinMobileFlag=" + this.uinMobileFlag + ",shutUpTime=" + this.shutUpTime + ",privilege=" + this.privilege + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberExtInfo.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberExtInfo.java new file mode 100644 index 0000000..fce72e8 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberExtInfo.java @@ -0,0 +1,110 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +import java.util.ArrayList; + +public class MemberExtInfo { + public int activeDay; + public int cmdUinFlagExt3Grocery; + public int level; + public int point; + public long specialTitleExpireTime; + public long uin; + public String strName = ""; + public String nickName = ""; + public String specialTitle = ""; + public byte[] msgNeedField = new byte[0]; + public ArrayList memberIconList = new ArrayList<>(); + + public int getActiveDay() { + return this.activeDay; + } + + public int getCmdUinFlagExt3Grocery() { + return this.cmdUinFlagExt3Grocery; + } + + public int getLevel() { + return this.level; + } + + public ArrayList getMemberIconList() { + return this.memberIconList; + } + + public byte[] getMsgNeedField() { + return this.msgNeedField; + } + + public String getNickName() { + return this.nickName; + } + + public int getPoint() { + return this.point; + } + + public String getSpecialTitle() { + return this.specialTitle; + } + + public long getSpecialTitleExpireTime() { + return this.specialTitleExpireTime; + } + + public String getStrName() { + return this.strName; + } + + public long getUin() { + return this.uin; + } + + public void setActiveDay(int i2) { + this.activeDay = i2; + } + + public void setCmdUinFlagExt3Grocery(int i2) { + this.cmdUinFlagExt3Grocery = i2; + } + + public void setLevel(int i2) { + this.level = i2; + } + + public void setMemberIconList(ArrayList arrayList) { + this.memberIconList = arrayList; + } + + public void setMsgNeedField(byte[] bArr) { + this.msgNeedField = bArr; + } + + public void setNickName(String str) { + this.nickName = str; + } + + public void setPoint(int i2) { + this.point = i2; + } + + public void setSpecialTitle(String str) { + this.specialTitle = str; + } + + public void setSpecialTitleExpireTime(long j2) { + this.specialTitleExpireTime = j2; + } + + public void setStrName(String str) { + this.strName = str; + } + + public void setUin(long j2) { + this.uin = j2; + } + + public String toString() { + return "MemberExtInfo{uin=" + this.uin + ",point=" + this.point + ",activeDay=" + this.activeDay + ",level=" + this.level + ",strName=" + this.strName + ",nickName=" + this.nickName + ",specialTitle=" + this.specialTitle + ",specialTitleExpireTime=" + this.specialTitleExpireTime + ",msgNeedField=" + this.msgNeedField + ",cmdUinFlagExt3Grocery=" + this.cmdUinFlagExt3Grocery + ",memberIconList=" + this.memberIconList + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberExtInfoFilter.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberExtInfoFilter.java new file mode 100644 index 0000000..b527e1c --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberExtInfoFilter.java @@ -0,0 +1,171 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +public class MemberExtInfoFilter { + public int cmdUinFlagExt3Grocery; + public int dataTime; + public int levelName; + public int levelNameNew; + public int memberIcon; + public int memberInfoSeq; + public int memberLevelInfoActiveDay; + public int memberLevelInfoLevel; + public int memberLevelInfoName; + public int memberLevelInfoPoint; + public int memberLevelInfoUin; + public int msgNeedField; + public int nickName; + public int specialTitle; + public int sysShowFlag; + public int timeToUpdate; + public int userShowFlag; + public int userShowFlagNew; + + public int getCmdUinFlagExt3Grocery() { + return this.cmdUinFlagExt3Grocery; + } + + public int getDataTime() { + return this.dataTime; + } + + public int getLevelName() { + return this.levelName; + } + + public int getLevelNameNew() { + return this.levelNameNew; + } + + public int getMemberIcon() { + return this.memberIcon; + } + + public int getMemberInfoSeq() { + return this.memberInfoSeq; + } + + public int getMemberLevelInfoActiveDay() { + return this.memberLevelInfoActiveDay; + } + + public int getMemberLevelInfoLevel() { + return this.memberLevelInfoLevel; + } + + public int getMemberLevelInfoName() { + return this.memberLevelInfoName; + } + + public int getMemberLevelInfoPoint() { + return this.memberLevelInfoPoint; + } + + public int getMemberLevelInfoUin() { + return this.memberLevelInfoUin; + } + + public int getMsgNeedField() { + return this.msgNeedField; + } + + public int getNickName() { + return this.nickName; + } + + public int getSpecialTitle() { + return this.specialTitle; + } + + public int getSysShowFlag() { + return this.sysShowFlag; + } + + public int getTimeToUpdate() { + return this.timeToUpdate; + } + + public int getUserShowFlag() { + return this.userShowFlag; + } + + public int getUserShowFlagNew() { + return this.userShowFlagNew; + } + + public void setCmdUinFlagExt3Grocery(int i2) { + this.cmdUinFlagExt3Grocery = i2; + } + + public void setDataTime(int i2) { + this.dataTime = i2; + } + + public void setLevelName(int i2) { + this.levelName = i2; + } + + public void setLevelNameNew(int i2) { + this.levelNameNew = i2; + } + + public void setMemberIcon(int i2) { + this.memberIcon = i2; + } + + public void setMemberInfoSeq(int i2) { + this.memberInfoSeq = i2; + } + + public void setMemberLevelInfoActiveDay(int i2) { + this.memberLevelInfoActiveDay = i2; + } + + public void setMemberLevelInfoLevel(int i2) { + this.memberLevelInfoLevel = i2; + } + + public void setMemberLevelInfoName(int i2) { + this.memberLevelInfoName = i2; + } + + public void setMemberLevelInfoPoint(int i2) { + this.memberLevelInfoPoint = i2; + } + + public void setMemberLevelInfoUin(int i2) { + this.memberLevelInfoUin = i2; + } + + public void setMsgNeedField(int i2) { + this.msgNeedField = i2; + } + + public void setNickName(int i2) { + this.nickName = i2; + } + + public void setSpecialTitle(int i2) { + this.specialTitle = i2; + } + + public void setSysShowFlag(int i2) { + this.sysShowFlag = i2; + } + + public void setTimeToUpdate(int i2) { + this.timeToUpdate = i2; + } + + public void setUserShowFlag(int i2) { + this.userShowFlag = i2; + } + + public void setUserShowFlagNew(int i2) { + this.userShowFlagNew = i2; + } + + public String toString() { + return "MemberExtInfoFilter{memberLevelInfoUin=" + this.memberLevelInfoUin + ",memberLevelInfoPoint=" + this.memberLevelInfoPoint + ",memberLevelInfoActiveDay=" + this.memberLevelInfoActiveDay + ",memberLevelInfoLevel=" + this.memberLevelInfoLevel + ",memberLevelInfoName=" + this.memberLevelInfoName + ",levelName=" + this.levelName + ",dataTime=" + this.dataTime + ",userShowFlag=" + this.userShowFlag + ",sysShowFlag=" + this.sysShowFlag + ",timeToUpdate=" + this.timeToUpdate + ",nickName=" + this.nickName + ",specialTitle=" + this.specialTitle + ",levelNameNew=" + this.levelNameNew + ",userShowFlagNew=" + this.userShowFlagNew + ",msgNeedField=" + this.msgNeedField + ",cmdUinFlagExt3Grocery=" + this.cmdUinFlagExt3Grocery + ",memberIcon=" + this.memberIcon + ",memberInfoSeq=" + this.memberInfoSeq + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberIcon.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberIcon.java new file mode 100644 index 0000000..ffcf8e4 --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberIcon.java @@ -0,0 +1,29 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +public class MemberIcon { + public int bizId; + public byte[] exInfo = new byte[0]; + public long expireTime; + public int resId; + + public int getBizId() { + return this.bizId; + } + + public byte[] getExInfo() { + return this.exInfo; + } + + public long getExpireTime() { + return this.expireTime; + } + + public int getResId() { + return this.resId; + } + + public String toString() { + return "MemberIcon{resId=" + this.resId + ",expireTime=" + this.expireTime + ",bizId=" + this.bizId + ",exInfo=" + this.exInfo + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberInfo.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberInfo.java index e22aef1..a16c94d 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberInfo.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberInfo.java @@ -1,51 +1,146 @@ package com.tencent.qqnt.kernel.nativeinterface; -public final class MemberInfo implements IKernelModel { - String avatarPath; - String cardName; - int cardType; - boolean isDelete; - boolean isSpecialConcerned; - String nick; - String qid; - String remark; - MemberRole role; - long serialVersionUID; - int shutUpTime; - String uid; - long uin; +import com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole; - public MemberInfo() { - this.serialVersionUID = 1L; - this.uid = ""; - this.qid = ""; - this.nick = ""; - this.remark = ""; - this.cardName = ""; - this.role = MemberRole.values()[0]; - this.avatarPath = ""; +public final class MemberInfo implements IKernelModel { + public int bigClubFlag; + public int bigClubLevel; + public int cardNameId; + public int cardType; + public int creditLevel; + public int globalGroupLevel; + public int globalGroupPoint; + public boolean isDelete; + public boolean isRobot; + public boolean isSpecialConcerned; + public boolean isSpecialShielded; + public int joinTime; + public int lastSpeakTime; + public int memberFlag; + public int memberFlagExt; + public int memberFlagExt2; + public int memberLevel; + public int memberMobileFlag; + public int memberTitleId; + public int mssVipType; + public int richFlag; + public int shutUpTime; + public long specialTitleExpireTime; + public long uin; + public int userShowFlag; + public int userShowFlagNew; + long serialVersionUID = 1; + public String uid = ""; + public String qid = ""; + public String nick = ""; + public String remark = ""; + public String cardName = ""; + public MemberRole role = MemberRole.values()[0]; + public String avatarPath = ""; + public byte[] groupHonor = new byte[0]; + public String memberSpecialTitle = ""; + public String autoRemark = ""; + + public String getAutoRemark() { + return this.autoRemark; } public String getAvatarPath() { return this.avatarPath; } + public int getBigClubFlag() { + return this.bigClubFlag; + } + + public int getBigClubLevel() { + return this.bigClubLevel; + } + public String getCardName() { return this.cardName; } + public int getCardNameId() { + return this.cardNameId; + } + public int getCardType() { return this.cardType; } + public int getCreditLevel() { + return this.creditLevel; + } + + public int getGlobalGroupLevel() { + return this.globalGroupLevel; + } + + public int getGlobalGroupPoint() { + return this.globalGroupPoint; + } + + public byte[] getGroupHonor() { + return this.groupHonor; + } + public boolean getIsDelete() { return this.isDelete; } + public boolean getIsRobot() { + return this.isRobot; + } + public boolean getIsSpecialConcerned() { return this.isSpecialConcerned; } + public boolean getIsSpecialShielded() { + return this.isSpecialShielded; + } + + public int getJoinTime() { + return this.joinTime; + } + + public int getLastSpeakTime() { + return this.lastSpeakTime; + } + + public int getMemberFlag() { + return this.memberFlag; + } + + public int getMemberFlagExt() { + return this.memberFlagExt; + } + + public int getMemberFlagExt2() { + return this.memberFlagExt2; + } + + public int getMemberLevel() { + return this.memberLevel; + } + + public int getMemberMobileFlag() { + return this.memberMobileFlag; + } + + public String getMemberSpecialTitle() { + return this.memberSpecialTitle; + } + + public int getMemberTitleId() { + return this.memberTitleId; + } + + public int getMssVipType() { + return this.mssVipType; + } + public String getNick() { return this.nick; } @@ -58,6 +153,10 @@ public final class MemberInfo implements IKernelModel { return this.remark; } + public int getRichFlag() { + return this.richFlag; + } + public MemberRole getRole() { return this.role; } @@ -66,6 +165,10 @@ public final class MemberInfo implements IKernelModel { return this.shutUpTime; } + public long getSpecialTitleExpireTime() { + return this.specialTitleExpireTime; + } + public String getUid() { return this.uid; } @@ -74,26 +177,114 @@ public final class MemberInfo implements IKernelModel { return this.uin; } + public int getUserShowFlag() { + return this.userShowFlag; + } + + public int getUserShowFlagNew() { + return this.userShowFlagNew; + } + + public void setAutoRemark(String str) { + this.autoRemark = str; + } + public void setAvatarPath(String str) { this.avatarPath = str; } + public void setBigClubFlag(int i2) { + this.bigClubFlag = i2; + } + + public void setBigClubLevel(int i2) { + this.bigClubLevel = i2; + } + public void setCardName(String str) { this.cardName = str; } + public void setCardNameId(int i2) { + this.cardNameId = i2; + } + public void setCardType(int i2) { this.cardType = i2; } + public void setCreditLevel(int i2) { + this.creditLevel = i2; + } + + public void setGlobalGroupLevel(int i2) { + this.globalGroupLevel = i2; + } + + public void setGlobalGroupPoint(int i2) { + this.globalGroupPoint = i2; + } + + public void setGroupHonor(byte[] bArr) { + this.groupHonor = bArr; + } + public void setIsDelete(boolean z) { this.isDelete = z; } + public void setIsRobot(boolean z) { + this.isRobot = z; + } + public void setIsSpecialConcerned(boolean z) { this.isSpecialConcerned = z; } + public void setIsSpecialShielded(boolean z) { + this.isSpecialShielded = z; + } + + public void setJoinTime(int i2) { + this.joinTime = i2; + } + + public void setLastSpeakTime(int i2) { + this.lastSpeakTime = i2; + } + + public void setMemberFlag(int i2) { + this.memberFlag = i2; + } + + public void setMemberFlagExt(int i2) { + this.memberFlagExt = i2; + } + + public void setMemberFlagExt2(int i2) { + this.memberFlagExt2 = i2; + } + + public void setMemberLevel(int i2) { + this.memberLevel = i2; + } + + public void setMemberMobileFlag(int i2) { + this.memberMobileFlag = i2; + } + + public void setMemberSpecialTitle(String str) { + this.memberSpecialTitle = str; + } + + public void setMemberTitleId(int i2) { + this.memberTitleId = i2; + } + + public void setMssVipType(int i2) { + this.mssVipType = i2; + } + public void setNick(String str) { this.nick = str; } @@ -106,6 +297,10 @@ public final class MemberInfo implements IKernelModel { this.remark = str; } + public void setRichFlag(int i2) { + this.richFlag = i2; + } + public void setRole(MemberRole memberRole) { this.role = memberRole; } @@ -114,6 +309,10 @@ public final class MemberInfo implements IKernelModel { this.shutUpTime = i2; } + public void setSpecialTitleExpireTime(long j2) { + this.specialTitleExpireTime = j2; + } + public void setUid(String str) { this.uid = str; } @@ -122,30 +321,16 @@ public final class MemberInfo implements IKernelModel { this.uin = j2; } - public String toString() { - return "MemberInfo{uid=" + this.uid + ",qid=" + this.qid + ",uin=" + this.uin + ",nick=" + this.nick + ",remark=" + this.remark + ",cardType=" + this.cardType + ",cardName=" + this.cardName + ",role=" + this.role + ",avatarPath=" + this.avatarPath + ",shutUpTime=" + this.shutUpTime + ",isDelete=" + this.isDelete + ",isSpecialConcerned=" + this.isSpecialConcerned + ",}"; + public void setUserShowFlag(int i2) { + this.userShowFlag = i2; } - public MemberInfo(String str, String str2, long j2, String str3, String str4, int i2, String str5, MemberRole memberRole, String str6, int i3, boolean z, boolean z2) { - this.serialVersionUID = 1L; - this.uid = ""; - this.qid = ""; - this.nick = ""; - this.remark = ""; - this.cardName = ""; - this.role = MemberRole.values()[0]; - this.avatarPath = ""; - this.uid = str; - this.qid = str2; - this.uin = j2; - this.nick = str3; - this.remark = str4; - this.cardType = i2; - this.cardName = str5; - this.role = memberRole; - this.avatarPath = str6; - this.shutUpTime = i3; - this.isDelete = z; - this.isSpecialConcerned = z2; + public void setUserShowFlagNew(int i2) { + this.userShowFlagNew = i2; } + + public String toString() { + return "MemberInfo{uid=" + this.uid + ",qid=" + this.qid + ",uin=" + this.uin + ",nick=" + this.nick + ",remark=" + this.remark + ",cardType=" + this.cardType + ",cardName=" + this.cardName + ",role=" + this.role + ",avatarPath=" + this.avatarPath + ",shutUpTime=" + this.shutUpTime + ",isDelete=" + this.isDelete + ",isSpecialConcerned=" + this.isSpecialConcerned + ",isRobot=" + this.isRobot + ",groupHonor=" + this.groupHonor + ",memberLevel=" + this.memberLevel + ",globalGroupLevel=" + this.globalGroupLevel + ",globalGroupPoint=" + this.globalGroupPoint + ",memberTitleId=" + this.memberTitleId + ",memberSpecialTitle=" + this.memberSpecialTitle + ",specialTitleExpireTime=" + this.specialTitleExpireTime + ",userShowFlag=" + this.userShowFlag + ",userShowFlagNew=" + this.userShowFlagNew + ",richFlag=" + this.richFlag + ",mssVipType=" + this.mssVipType + ",bigClubLevel=" + this.bigClubLevel + ",bigClubFlag=" + this.bigClubFlag + ",autoRemark=" + this.autoRemark + ",creditLevel=" + this.creditLevel + ",joinTime=" + this.joinTime + ",lastSpeakTime=" + this.lastSpeakTime + ",memberFlag=" + this.memberFlag + ",memberFlagExt=" + this.memberFlagExt + ",memberMobileFlag=" + this.memberMobileFlag + ",memberFlagExt2=" + this.memberFlagExt2 + ",isSpecialShielded=" + this.isSpecialShielded + ",cardNameId=" + this.cardNameId + ",}"; + } + } \ No newline at end of file diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberLevelName.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberLevelName.java new file mode 100644 index 0000000..e5c7f2e --- /dev/null +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberLevelName.java @@ -0,0 +1,19 @@ +package com.tencent.qqnt.kernel.nativeinterface; + +public class MemberLevelName { + public int level; + public String strName = ""; + + public int getLevel() { + return this.level; + } + + public String getStrName() { + return this.strName; + } + + public String toString() { + return "MemberLevelName{level=" + this.level + ",strName=" + this.strName + ",}"; + } + +} diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MsgAbstract.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MsgAbstract.java index adcb042..d3ebe6d 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MsgAbstract.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MsgAbstract.java @@ -1,5 +1,7 @@ package com.tencent.qqnt.kernel.nativeinterface; +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact; + import java.io.Serializable; import java.util.ArrayList; diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/UnreadCntInfo.java b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/UnreadCntInfo.java index 010695e..969dfea 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/UnreadCntInfo.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/UnreadCntInfo.java @@ -1,6 +1,7 @@ package com.tencent.qqnt.kernel.nativeinterface; +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact; public final class UnreadCntInfo { UnreadCnt allUnreadCnt; diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/Contact.java b/qqinterface/src/main/java/com/tencent/qqnt/kernelpublic/nativeinterface/Contact.java similarity index 90% rename from qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/Contact.java rename to qqinterface/src/main/java/com/tencent/qqnt/kernelpublic/nativeinterface/Contact.java index 9497f66..aa7965d 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/Contact.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernelpublic/nativeinterface/Contact.java @@ -1,4 +1,6 @@ -package com.tencent.qqnt.kernel.nativeinterface; +package com.tencent.qqnt.kernelpublic.nativeinterface; + +import com.tencent.qqnt.kernel.nativeinterface.IKernelModel; import java.io.Serializable; diff --git a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberRole.java b/qqinterface/src/main/java/com/tencent/qqnt/kernelpublic/nativeinterface/MemberRole.java similarity index 62% rename from qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberRole.java rename to qqinterface/src/main/java/com/tencent/qqnt/kernelpublic/nativeinterface/MemberRole.java index fd4f97a..62056b2 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/kernel/nativeinterface/MemberRole.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/kernelpublic/nativeinterface/MemberRole.java @@ -1,4 +1,4 @@ -package com.tencent.qqnt.kernel.nativeinterface; +package com.tencent.qqnt.kernelpublic.nativeinterface; public enum MemberRole { UNSPECIFIED, diff --git a/qqinterface/src/main/java/com/tencent/qqnt/msg/api/IMsgService.java b/qqinterface/src/main/java/com/tencent/qqnt/msg/api/IMsgService.java index 0dcea3d..d3e58c3 100644 --- a/qqinterface/src/main/java/com/tencent/qqnt/msg/api/IMsgService.java +++ b/qqinterface/src/main/java/com/tencent/qqnt/msg/api/IMsgService.java @@ -2,6 +2,7 @@ package com.tencent.qqnt.msg.api; import com.tencent.mobileqq.qroute.QRouteApi; import com.tencent.qqnt.kernel.nativeinterface.*; +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/BaseSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/BaseSvc.kt index d66c70d..74f2ef7 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/BaseSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/BaseSvc.kt @@ -5,8 +5,10 @@ package moe.fuqiuluo.qqinterface.servlet import android.os.Bundle import com.tencent.mobileqq.app.QQAppInterface import com.tencent.mobileqq.msf.core.MsfCore +import com.tencent.mobileqq.msf.service.MsfService import com.tencent.mobileqq.pb.ByteStringMicro import com.tencent.qphone.base.remote.ToServiceMsg +import com.tencent.qqnt.kernel.api.IKernelService import io.ktor.utils.io.core.BytePacketBuilder import io.ktor.utils.io.core.readBytes import io.ktor.utils.io.core.writeFully @@ -46,7 +48,7 @@ internal abstract class BaseSvc { } suspend fun sendOidbAW(cmd: String, cmdId: Int, serviceId: Int, data: ByteArray, trpc: Boolean = false, timeout: Long = 5000L): ByteArray? { - val seq = MsfCore.getNextSeq() + val seq = MsfService.getCore().nextSeq val buffer = withTimeoutOrNull(timeout) { suspendCancellableCoroutine { continuation -> launch(Dispatchers.Default) { @@ -75,7 +77,7 @@ internal abstract class BaseSvc { } suspend fun sendBufferAW(cmd: String, isPb: Boolean, data: ByteArray, timeout: Long = 5000L): ByteArray? { - val seq = MsfCore.getNextSeq() + val seq = MsfService.getCore().nextSeq val buffer = withTimeoutOrNull(timeout) { suspendCancellableCoroutine { continuation -> launch(Dispatchers.Default) { @@ -139,7 +141,7 @@ internal abstract class BaseSvc { app.sendToService(to) } - fun sendBuffer(cmd: String, isPb: Boolean, buffer: ByteArray, seq: Int = MsfCore.getNextSeq()) { + fun sendBuffer(cmd: String, isPb: Boolean, buffer: ByteArray, seq: Int = MsfService.getCore().nextSeq) { val toServiceMsg = ToServiceMsg("mobileqq.service", app.currentUin, cmd) toServiceMsg.putWupBuffer(buffer) toServiceMsg.addAttribute("req_pb_protocol_flag", isPb) @@ -158,7 +160,7 @@ internal abstract class BaseSvc { } protected suspend fun sendAW(toServiceMsg: ToServiceMsg, timeout: Long = 5000L): ByteArray? { - val seq = MsfCore.getNextSeq() + val seq = MsfService.getCore().nextSeq val buffer = withTimeoutOrNull(timeout) { suspendCancellableCoroutine { continuation -> launch(Dispatchers.Default) { diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt index 4770f74..e7df6ba 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt @@ -41,12 +41,10 @@ import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withTimeoutOrNull import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.encodeToByteArray import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.decodeFromStream import kotlinx.serialization.json.jsonObject - import moe.fuqiuluo.qqinterface.servlet.TicketSvc.getLongUin import moe.fuqiuluo.qqinterface.servlet.TicketSvc.getUin import moe.fuqiuluo.qqinterface.servlet.structures.GroupAtAllRemainInfo @@ -75,10 +73,10 @@ import moe.fuqiuluo.shamrock.utils.FileUtils import moe.fuqiuluo.shamrock.utils.PlatformUtils import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher import moe.fuqiuluo.shamrock.xposed.helper.NTServiceFetcher -import protobuf.oidb.cmd0xf16.Oidb0xf16 -import protobuf.oidb.cmd0xf16.SetGroupRemarkReq import mqq.app.MobileQQ import protobuf.auto.toByteArray +import protobuf.oidb.cmd0xf16.Oidb0xf16 +import protobuf.oidb.cmd0xf16.SetGroupRemarkReq import tencent.im.group.group_member_info import tencent.im.oidb.cmd0x88d.oidb_0x88d import tencent.im.oidb.cmd0x899.oidb_0x899 @@ -165,22 +163,62 @@ internal object GroupSvc: BaseSvc() { sendOidb("OidbSvc.0xed3", 3795, 1, req.toByteArray()) } - suspend fun getGroupMemberList(groupId: Long, refresh: Boolean): Result> { - val service = app.getRuntimeService(ITroopMemberInfoService::class.java, "all") - var memberList = service.getAllTroopMembers(groupId.toString()) - if (refresh || memberList == null) { - memberList = requestTroopMemberInfo(service, groupId).onFailure { - return Result.failure(Exception("获取群成员列表失败")) - }.getOrThrow() - } - getGroupInfo(groupId, true).onSuccess { - if(it.wMemberNum > memberList.size) { - return getGroupMemberList(groupId, true) + suspend fun getGroupMemberList(groupId: Long, refresh: Boolean): Result> { + val kernelService = NTServiceFetcher.kernelService + val sessionService = kernelService.wrapperSession + val service = sessionService.groupService + val uids = suspendCancellableCoroutine { continuation -> + service.getAllMemberList(groupId, refresh) { _, _, groupMemberListResult -> + continuation.resume(groupMemberListResult?.ids?.map { + it.uid + }) } } + val memberMap = suspendCancellableCoroutine { continuation -> + service.getMemberInfoForMqq(groupId, ArrayList(uids ?: emptyList()), refresh) { _, _, groupMemberListResult -> + continuation.resume(groupMemberListResult.infos) + } + } +// val extInfo = suspendCancellableCoroutine { continuation -> +// service.getMemberExtInfo(GroupMemberExtReq().apply { +// this.groupCode = groupId +// this.beginUin = 0.toString() +// this.groupType = "" +// this.memberExtFilter = MemberExtInfoFilter().apply { +// this.memberLevelInfoName = 1 +// this.memberLevelInfoUin = 1 +// this.nickName = 1 +// this.specialTitle = 1 +// this.memberLevelInfoActiveDay = 1 +// } +// this.richCardNameVer = "1" +// this.sourceType = 1 +// this.uinList = ArrayList(memberMap.values.toList().map { +// it.uin +// }) +// }) { _, _, groupMemberExtListResult -> +// continuation.resume(groupMemberExtListResult) +// } +// } + + return Result.success(memberMap) + +// var memberList = service.getAllTroopMembers(groupId.toString()) +// if (refresh || memberList == null) { +// memberList = requestTroopMemberInfo(service, groupId).onFailure { +// return Result.failure(Exception("获取群成员列表失败")) +// }.getOrThrow() +// } +// +// getGroupInfo(groupId, true).onSuccess { +// if(it.wMemberNum > memberList.size) { +// return getGroupMemberList(groupId, true) +// } +// } + +// return Result.success(memberList) - return Result.success(memberList) } suspend fun getGroupList(refresh: Boolean): Result> { @@ -405,11 +443,11 @@ internal object GroupSvc: BaseSvc() { } } return when(getTroopMemberInfoByUinViaNt(groupId, memberUin, 3000).getOrNull()?.role) { - com.tencent.qqnt.kernel.nativeinterface.MemberRole.STRANGER -> MemberRole.Stranger - com.tencent.qqnt.kernel.nativeinterface.MemberRole.MEMBER -> MemberRole.Member - com.tencent.qqnt.kernel.nativeinterface.MemberRole.ADMIN -> MemberRole.Admin - com.tencent.qqnt.kernel.nativeinterface.MemberRole.OWNER -> MemberRole.Owner - com.tencent.qqnt.kernel.nativeinterface.MemberRole.UNSPECIFIED, null -> when (memberUin) { + com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole.STRANGER -> MemberRole.Stranger + com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole.MEMBER -> MemberRole.Member + com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole.ADMIN -> MemberRole.Admin + com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole.OWNER -> MemberRole.Owner + com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole.UNSPECIFIED, null -> when (memberUin) { getOwner(groupId) -> MemberRole.Owner in getAdminList(groupId) -> MemberRole.Admin else -> MemberRole.Member diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/PacketSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/PacketSvc.kt index d74bf4e..15f1976 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/PacketSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/PacketSvc.kt @@ -1,8 +1,8 @@ package moe.fuqiuluo.qqinterface.servlet -import com.tencent.qqnt.kernel.nativeinterface.Contact import com.tencent.qqnt.kernel.nativeinterface.IKernelMsgService import com.tencent.qqnt.kernel.nativeinterface.MsgConstant +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact import io.ktor.utils.io.core.BytePacketBuilder import io.ktor.utils.io.core.readBytes import io.ktor.utils.io.core.writeFully diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/NtV2RichMediaSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/NtV2RichMediaSvc.kt index 8774f7f..9c93ee8 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/NtV2RichMediaSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/NtV2RichMediaSvc.kt @@ -5,7 +5,6 @@ import androidx.exifinterface.media.ExifInterface import com.tencent.mobileqq.qroute.QRoute import com.tencent.qqnt.aio.adapter.api.IAIOPttApi import com.tencent.qqnt.kernel.nativeinterface.CommonFileInfo -import com.tencent.qqnt.kernel.nativeinterface.Contact import com.tencent.qqnt.kernel.nativeinterface.MsgConstant import com.tencent.qqnt.kernel.nativeinterface.MsgElement import com.tencent.qqnt.kernel.nativeinterface.PicElement @@ -13,6 +12,7 @@ import com.tencent.qqnt.kernel.nativeinterface.PttElement import com.tencent.qqnt.kernel.nativeinterface.QQNTWrapperUtil import com.tencent.qqnt.kernel.nativeinterface.RichMediaFilePathInfo import com.tencent.qqnt.kernel.nativeinterface.VideoElement +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact import kotlinx.atomicfu.atomic import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withTimeoutOrNull diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/MessageHelper.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/MessageHelper.kt index 0b990e4..a57c63f 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/MessageHelper.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/helper/MessageHelper.kt @@ -1,10 +1,10 @@ package moe.fuqiuluo.shamrock.helper import com.tencent.mobileqq.qroute.QRoute -import com.tencent.qqnt.kernel.nativeinterface.Contact import com.tencent.qqnt.kernel.nativeinterface.IOperateCallback import com.tencent.qqnt.kernel.nativeinterface.MsgConstant import com.tencent.qqnt.kernel.nativeinterface.MsgElement +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact import com.tencent.qqnt.msg.api.IMsgService import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.GlobalScope @@ -22,7 +22,6 @@ import moe.fuqiuluo.shamrock.helper.db.MessageDB import moe.fuqiuluo.shamrock.helper.db.MessageMapping import moe.fuqiuluo.shamrock.remote.structures.SendMsgResult import moe.fuqiuluo.shamrock.tools.* -import protobuf.message.Elem import protobuf.message.RichText import kotlin.coroutines.resume import kotlin.math.abs diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetTroopHonor.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetTroopHonor.kt index c3d6ae3..9fc7c99 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetTroopHonor.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetTroopHonor.kt @@ -14,6 +14,7 @@ import moe.fuqiuluo.shamrock.remote.service.data.HONOR_NEWBIE import moe.fuqiuluo.shamrock.remote.service.data.HONOR_TALKATIVE import moe.fuqiuluo.shamrock.tools.EmptyJsonString import moe.fuqiuluo.symbols.OneBotHandler +import tencent.im.troop.honor.troop_honor @OneBotHandler("get_group_honor_info", ["get_troop_honor_info"]) internal object GetTroopHonor: IActionHandler() { @@ -29,11 +30,15 @@ internal object GetTroopHonor: IActionHandler() { GroupSvc.getGroupMemberList(groupId, refresh).onFailure { return error(it.message ?: "unknown error", echo) }.onSuccess { memberList -> - memberList.forEach { member -> - GroupSvc.parseHonor(member.honorList).forEach { - val honor = decodeHonor(member.memberuin.toLong(), it, member.mHonorRichFlag) + memberList.values.forEach { info -> + info.groupHonor.let { bytes -> + val honor = troop_honor.GroupUserCardHonor() + honor.mergeFrom(bytes) + honor.id.get() + }.forEach { + val honor = decodeHonor(info.uin, it, 0) if (honor != null) { - honor.nick = member.troopnick.ifEmpty { member.friendnick } + honor.nick = info.nick.ifEmpty { info.cardName } honorInfo.add(honor) } } diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetTroopMemberList.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetTroopMemberList.kt index 21d8fa0..09836fb 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetTroopMemberList.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetTroopMemberList.kt @@ -1,6 +1,5 @@ package moe.fuqiuluo.shamrock.remote.action.handlers -import com.tencent.mobileqq.data.Card import kotlinx.serialization.json.JsonElement import moe.fuqiuluo.qqinterface.servlet.GroupSvc import moe.fuqiuluo.shamrock.remote.action.ActionSession @@ -8,8 +7,8 @@ import moe.fuqiuluo.shamrock.remote.action.IActionHandler import moe.fuqiuluo.shamrock.remote.service.data.SimpleTroopMemberInfo import moe.fuqiuluo.shamrock.remote.service.data.push.MemberRole import moe.fuqiuluo.shamrock.tools.EmptyJsonString -import moe.fuqiuluo.shamrock.tools.ifNullOrEmpty import moe.fuqiuluo.symbols.OneBotHandler +import tencent.im.troop.honor.troop_honor @OneBotHandler("get_group_member_list") internal object GetTroopMemberList : IActionHandler() { @@ -27,49 +26,48 @@ internal object GetTroopMemberList : IActionHandler() { val memberList = GroupSvc.getGroupMemberList(groupId, refresh).onFailure { return error(it.message ?: "unknown error", echo, arrayResult = true) }.getOrThrow() - val prohibitedMemberList = GroupSvc.getProhibitedMemberList(groupId) - .getOrDefault(arrayListOf()) - .associate { it.memberUin to it.shutuptimestap.toLong() } +// val prohibitedMemberList = GroupSvc.getProhibitedMemberList(groupId) +// .getOrDefault(arrayListOf()) +// .associate { it.memberUin to it.shutuptimestap.toLong() } return ok(arrayListOf().apply { - memberList.forEach { info -> - if (info.memberuin != "0") { - add( - SimpleTroopMemberInfo( - uin = info.memberuin.toLong(), - name = info.friendnick.ifNullOrEmpty(info.autoremark) ?: "", - showName = info.troopnick.ifNullOrEmpty(info.troopColorNick), - cardName = info.troopnick.ifNullOrEmpty(info.troopColorNick), - distance = info.distance, - honor = GroupSvc.parseHonor(info.honorList), - joinTime = info.join_time, - lastActiveTime = info.last_active_time, - uniqueName = info.mUniqueTitle, - groupId = groupId, - nick = info.friendnick.ifNullOrEmpty(info.autoremark) ?: "", - sex = when (info.sex.toShort()) { - Card.FEMALE -> "female" - Card.MALE -> "male" - else -> "unknown" - }, - area = info.alias ?: "", - lastSentTime = info.last_active_time, - level = info.level, - role = GroupSvc.getMemberRole(groupId, info.memberuin.toLong()) - /*when { - GroupSvc.getOwner(groupId) - .toString() == info.memberuin -> MemberRole.Owner - info.memberuin.toLong() in GroupSvc.getAdminList(groupId) -> MemberRole.Admin + memberList.values.forEach { info -> + add( + SimpleTroopMemberInfo( + uin = info.uin, + name = info.nick ?: "", + showName = info.cardName, + cardName = info.cardName, + distance = 0, + honor = info.groupHonor.let { bytes -> + val honor = troop_honor.GroupUserCardHonor() + honor.mergeFrom(bytes) + honor.id.get() + }, + joinTime = info.joinTime.toLong(), + lastActiveTime = info.lastSpeakTime.toLong(), + uniqueName = info.memberSpecialTitle, + groupId = groupId, + nick = info.nick ?: "", + sex = "unknown", + area = "", + lastSentTime = info.lastSpeakTime.toLong(), + level = info.memberLevel, + role = info.role.let { role -> + when (role) { + com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole.OWNER -> MemberRole.Owner + com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole.ADMIN -> MemberRole.Admin else -> MemberRole.Member - }*/, - unfriendly = false, - title = info.mUniqueTitle ?: "", - titleExpireTime = info.mUniqueTitleExpire, - cardChangeable = GroupSvc.isAdmin(groupId), - age = 0, - shutUpTimestamp = prohibitedMemberList[info.memberuin.toLong()] ?: 0L - ) + } + }, + unfriendly = false, + title = info.memberSpecialTitle ?: "", + titleExpireTime = info.specialTitleExpireTime.toInt(), + cardChangeable = info.role == com.tencent.qqnt.kernelpublic.nativeinterface.MemberRole.ADMIN, + age = 0, + shutUpTimestamp = info.shutUpTime.toLong() ) - } + ) + } }, echo) } diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/AioListener.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/AioListener.kt index 864d528..f30c327 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/AioListener.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/listener/AioListener.kt @@ -4,6 +4,7 @@ package moe.fuqiuluo.shamrock.remote.service.listener import moe.fuqiuluo.shamrock.helper.MessageHelper import com.tencent.qqnt.kernel.nativeinterface.* +import com.tencent.qqnt.kernelpublic.nativeinterface.Contact import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch @@ -548,8 +549,8 @@ internal object AioListener : IKernelMsgListener { LogCenter.log("onSendMsgError($j2, $contact, $j2, $str)", Level.DEBUG) } - override fun onSysMsgNotification(i2: Int, j2: Long, j3: Long, arrayList: ArrayList?) { - LogCenter.log("onSysMsgNotification($i2, $j2, $j3, $arrayList)", Level.DEBUG) + override fun onSysMsgNotification(i2: Int, j2: Long, j3: Long, z: Boolean, arrayList: ArrayList?) { + LogCenter.log("onSysMsgNotification($i2, $j2, $j3, $z, $arrayList)", Level.DEBUG) } override fun onUnreadCntAfterFirstView(hashMap: HashMap>?) { diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/hooks/HookWrapperCodec.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/hooks/HookWrapperCodec.kt index 2b8a37d..b3805d5 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/hooks/HookWrapperCodec.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/xposed/hooks/HookWrapperCodec.kt @@ -73,7 +73,7 @@ internal class HookWrapperCodec: IAction { } private fun hookReceive(thiz: Any, thizClass: Class<*>) { - val onResponse = thizClass.getDeclaredMethod("onResponse", Integer.TYPE, Any::class.java, Integer.TYPE) + val onResponse = thizClass.getDeclaredMethod("onResponse", Integer.TYPE, Any::class.java, Integer.TYPE, ByteArray::class.java) //LogCenter.log("HookWrapperCodec: onResponse = $onResponse", Level.INFO) DynamicReceiver.register("fake_packet", IPCRequest { val uin = it.getStringExtra("package_uin")!! @@ -90,7 +90,7 @@ internal class HookWrapperCodec: IAction { from.setMsgSuccess() from.uin = uin from.appSeq = seq - onResponse.invoke(thiz, 0, from, 0) + onResponse.invoke(thiz, 0, from, 0, ByteArray(0)) }) thizClass.hookMethod("onResponse").before { val from = it.args[1] as FromServiceMsg