Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Mirai
Commits
458fe2ee
Commit
458fe2ee
authored
Apr 10, 2020
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix duplicated OnlinePush
parent
b0bc0ec6
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
94 additions
and
64 deletions
+94
-64
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt
...ain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt
+1
-4
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidClient.kt
...tlin/net/mamoe/mirai/qqandroid/network/QQAndroidClient.kt
+2
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/OnlinePushPack.kt
...rai/qqandroid/network/protocol/data/jce/OnlinePushPack.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/PushNotifyPack.kt
...rai/qqandroid/network/protocol/data/jce/PushNotifyPack.kt
+2
-2
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x857.kt
...e/mirai/qqandroid/network/protocol/data/proto/Cmd0x857.kt
+35
-35
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt
...ndroid/network/protocol/packet/chat/receive/MessageSvc.kt
+2
-7
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt
...ndroid/network/protocol/packet/chat/receive/OnlinePush.kt
+51
-15
No files found.
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt
View file @
458fe2ee
...
@@ -64,10 +64,7 @@ internal class GroupImpl(
...
@@ -64,10 +64,7 @@ internal class GroupImpl(
groupInfo
:
GroupInfo
,
groupInfo
:
GroupInfo
,
members
:
Sequence
<
MemberInfo
>
members
:
Sequence
<
MemberInfo
>
)
:
Group
()
{
)
:
Group
()
{
companion
object
companion
object
;
val
lastRecalledMessageRandoms
:
LockFreeCacheList
<
Int
>
=
LockFreeCacheList
(
16
)
// events per 3 second
val
lastMemberPermissionChangeSequences
:
LockFreeCacheList
<
Int
>
=
LockFreeCacheList
(
16
)
// events per 3 second
override
val
bot
:
QQAndroidBot
by
bot
.
unsafeWeakRef
()
override
val
bot
:
QQAndroidBot
by
bot
.
unsafeWeakRef
()
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidClient.kt
View file @
458fe2ee
...
@@ -130,6 +130,8 @@ internal open class QQAndroidClient(
...
@@ -130,6 +130,8 @@ internal open class QQAndroidClient(
private
val
highwayDataTransSequenceIdForApplyUp
:
AtomicInt
=
atomic
(
77918
)
private
val
highwayDataTransSequenceIdForApplyUp
:
AtomicInt
=
atomic
(
77918
)
internal
fun
nextHighwayDataTransSequenceIdForApplyUp
():
Int
=
highwayDataTransSequenceIdForApplyUp
.
getAndAdd
(
2
)
internal
fun
nextHighwayDataTransSequenceIdForApplyUp
():
Int
=
highwayDataTransSequenceIdForApplyUp
.
getAndAdd
(
2
)
internal
val
onlinePushCacheList
:
LockFreeLinkedList
<
Short
>
=
LockFreeLinkedList
()
val
appClientVersion
:
Int
=
0
val
appClientVersion
:
Int
=
0
var
networkType
:
NetworkType
=
NetworkType
.
WIFI
var
networkType
:
NetworkType
=
NetworkType
.
WIFI
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/OnlinePushPack.kt
View file @
458fe2ee
...
@@ -80,7 +80,7 @@ internal class OnlinePushPack {
...
@@ -80,7 +80,7 @@ internal class OnlinePushPack {
internal
class
SvcRespPushMsg
(
internal
class
SvcRespPushMsg
(
@JceId
(
0
)
val
uin
:
Long
,
@JceId
(
0
)
val
uin
:
Long
,
@JceId
(
1
)
val
vDelInfos
:
List
<
DelMsgInfo
>,
@JceId
(
1
)
val
vDelInfos
:
List
<
DelMsgInfo
>,
@JceId
(
2
)
val
svrip
:
Int
,
@JceId
(
2
)
val
svrip
:
Int
=
0
,
@JceId
(
3
)
val
pushToken
:
ByteArray
?
=
null
,
@JceId
(
3
)
val
pushToken
:
ByteArray
?
=
null
,
@JceId
(
4
)
val
serviceType
:
Int
?
=
null
,
@JceId
(
4
)
val
serviceType
:
Int
?
=
null
,
@JceId
(
5
)
val
deviceInfo
:
DeviceInfo
?
=
null
@JceId
(
5
)
val
deviceInfo
:
DeviceInfo
?
=
null
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/PushNotifyPack.kt
View file @
458fe2ee
...
@@ -36,8 +36,8 @@ internal class RequestPushNotify(
...
@@ -36,8 +36,8 @@ internal class RequestPushNotify(
@Serializable
@Serializable
internal
class
MsgInfo
(
internal
class
MsgInfo
(
@JceId
(
0
)
val
lFromUin
:
Long
?
=
0L
,
@JceId
(
0
)
val
lFromUin
:
Long
=
0L
,
@JceId
(
1
)
val
uMsgTime
:
Long
?
=
0L
,
@JceId
(
1
)
val
uMsgTime
:
Long
=
0L
,
@JceId
(
2
)
val
shMsgType
:
Short
,
@JceId
(
2
)
val
shMsgType
:
Short
,
@JceId
(
3
)
val
shMsgSeq
:
Short
,
@JceId
(
3
)
val
shMsgSeq
:
Short
,
@JceId
(
4
)
val
strMsg
:
String
?,
@JceId
(
4
)
val
strMsg
:
String
?,
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x857.kt
View file @
458fe2ee
...
@@ -20,7 +20,7 @@ import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
...
@@ -20,7 +20,7 @@ import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf
class
GroupOpenSysMsg
:
ProtoBuf
{
class
GroupOpenSysMsg
:
ProtoBuf
{
@Serializable
@Serializable
internal
class
LightApp
(
internal
class
LightApp
(
@ProtoId
(
1
)
val
app
:
String
=
""
,
@ProtoId
(
1
)
val
app
:
String
=
""
,
@ProtoId
(
2
)
val
view
:
String
=
""
,
@ProtoId
(
2
)
val
view
:
String
=
""
,
@ProtoId
(
3
)
val
desc
:
String
=
""
,
@ProtoId
(
3
)
val
desc
:
String
=
""
,
...
@@ -32,7 +32,7 @@ internal class LightApp(
...
@@ -32,7 +32,7 @@ internal class LightApp(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
RichMsg
(
internal
class
RichMsg
(
@ProtoId
(
1
)
val
title
:
String
=
""
,
@ProtoId
(
1
)
val
title
:
String
=
""
,
@ProtoId
(
2
)
val
desc
:
String
=
""
,
@ProtoId
(
2
)
val
desc
:
String
=
""
,
@ProtoId
(
3
)
val
brief
:
String
=
""
,
@ProtoId
(
3
)
val
brief
:
String
=
""
,
...
@@ -42,7 +42,7 @@ internal class RichMsg(
...
@@ -42,7 +42,7 @@ internal class RichMsg(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
Sender
(
internal
class
Sender
(
@ProtoId
(
1
)
val
uin
:
Long
=
0L
,
@ProtoId
(
1
)
val
uin
:
Long
=
0L
,
@ProtoId
(
2
)
val
nick
:
String
=
""
,
@ProtoId
(
2
)
val
nick
:
String
=
""
,
@ProtoId
(
3
)
val
avatar
:
String
=
""
,
@ProtoId
(
3
)
val
avatar
:
String
=
""
,
...
@@ -50,14 +50,14 @@ internal class Sender(
...
@@ -50,14 +50,14 @@ internal class Sender(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
Source
(
internal
class
Source
(
@ProtoId
(
1
)
val
name
:
String
=
""
,
@ProtoId
(
1
)
val
name
:
String
=
""
,
@ProtoId
(
2
)
val
icon
:
String
=
""
,
@ProtoId
(
2
)
val
icon
:
String
=
""
,
@ProtoId
(
3
)
val
url
:
String
=
""
@ProtoId
(
3
)
val
url
:
String
=
""
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
SysMsgBody
(
internal
class
SysMsgBody
(
@ProtoId
(
1
)
val
groupId
:
Long
=
0L
,
@ProtoId
(
1
)
val
groupId
:
Long
=
0L
,
@ProtoId
(
2
)
val
appid
:
Long
=
0L
,
@ProtoId
(
2
)
val
appid
:
Long
=
0L
,
@ProtoId
(
3
)
val
sender
:
Sender
?
=
null
,
@ProtoId
(
3
)
val
sender
:
Sender
?
=
null
,
...
@@ -71,7 +71,7 @@ internal class SysMsgBody(
...
@@ -71,7 +71,7 @@ internal class SysMsgBody(
@Serializable
@Serializable
internal
class
TroopTips0x857
:
ProtoBuf
{
internal
class
TroopTips0x857
:
ProtoBuf
{
@Serializable
@Serializable
internal
class
AIOGrayTipsInfo
(
internal
class
AIOGrayTipsInfo
(
@ProtoId
(
1
)
val
optUint32ShowLastest
:
Int
=
0
,
@ProtoId
(
1
)
val
optUint32ShowLastest
:
Int
=
0
,
@ProtoId
(
2
)
val
optBytesContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
optBytesContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
optUint32Remind
:
Int
=
0
,
@ProtoId
(
3
)
val
optUint32Remind
:
Int
=
0
,
...
@@ -82,7 +82,7 @@ internal class AIOGrayTipsInfo(
...
@@ -82,7 +82,7 @@ internal class AIOGrayTipsInfo(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
AIOTopTipsInfo
(
internal
class
AIOTopTipsInfo
(
@ProtoId
(
1
)
val
optBytesContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
1
)
val
optBytesContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
optUint32Icon
:
Int
=
0
,
@ProtoId
(
2
)
val
optUint32Icon
:
Int
=
0
,
@ProtoId
(
3
)
val
optEnumAction
:
Int
/* enum */
=
1
,
@ProtoId
(
3
)
val
optEnumAction
:
Int
/* enum */
=
1
,
...
@@ -94,12 +94,12 @@ internal class AIOTopTipsInfo(
...
@@ -94,12 +94,12 @@ internal class AIOTopTipsInfo(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
FloatedTipsInfo
(
internal
class
FloatedTipsInfo
(
@ProtoId
(
1
)
val
optBytesContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
@ProtoId
(
1
)
val
optBytesContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
GeneralGrayTipInfo
(
internal
class
GeneralGrayTipInfo
(
@ProtoId
(
1
)
val
busiType
:
Long
=
0L
,
@ProtoId
(
1
)
val
busiType
:
Long
=
0L
,
@ProtoId
(
2
)
val
busiId
:
Long
=
0L
,
@ProtoId
(
2
)
val
busiId
:
Long
=
0L
,
@ProtoId
(
3
)
val
ctrlFlag
:
Int
=
0
,
@ProtoId
(
3
)
val
ctrlFlag
:
Int
=
0
,
...
@@ -113,7 +113,7 @@ internal class GeneralGrayTipInfo(
...
@@ -113,7 +113,7 @@ internal class GeneralGrayTipInfo(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
GoldMsgTipsElem
(
internal
class
GoldMsgTipsElem
(
@ProtoId
(
1
)
val
type
:
Int
=
0
,
@ProtoId
(
1
)
val
type
:
Int
=
0
,
@ProtoId
(
2
)
val
billno
:
String
=
""
,
@ProtoId
(
2
)
val
billno
:
String
=
""
,
@ProtoId
(
3
)
val
result
:
Int
=
0
,
@ProtoId
(
3
)
val
result
:
Int
=
0
,
...
@@ -126,25 +126,25 @@ internal class GoldMsgTipsElem(
...
@@ -126,25 +126,25 @@ internal class GoldMsgTipsElem(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
GroupInfoChange
(
internal
class
GroupInfoChange
(
@ProtoId
(
1
)
val
groupHonorSwitch
:
Int
=
0
@ProtoId
(
1
)
val
groupHonorSwitch
:
Int
=
0
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
GroupNotifyInfo
(
internal
class
GroupNotifyInfo
(
@ProtoId
(
1
)
val
optUint32AutoPullFlag
:
Int
=
0
,
@ProtoId
(
1
)
val
optUint32AutoPullFlag
:
Int
=
0
,
@ProtoId
(
2
)
val
optBytesFeedsId
:
ByteArray
=
EMPTY_BYTE_ARRAY
@ProtoId
(
2
)
val
optBytesFeedsId
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
InstCtrl
(
internal
class
InstCtrl
(
@ProtoId
(
1
)
val
msgSendToInst
:
List
<
InstInfo
>?
=
null
,
@ProtoId
(
1
)
val
msgSendToInst
:
List
<
InstInfo
>?
=
null
,
@ProtoId
(
2
)
val
msgExcludeInst
:
List
<
InstInfo
>?
=
null
,
@ProtoId
(
2
)
val
msgExcludeInst
:
List
<
InstInfo
>?
=
null
,
@ProtoId
(
3
)
val
msgFromInst
:
InstInfo
?
=
null
@ProtoId
(
3
)
val
msgFromInst
:
InstInfo
?
=
null
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
InstInfo
(
internal
class
InstInfo
(
@ProtoId
(
1
)
val
apppid
:
Int
=
0
,
@ProtoId
(
1
)
val
apppid
:
Int
=
0
,
@ProtoId
(
2
)
val
instid
:
Int
=
0
,
@ProtoId
(
2
)
val
instid
:
Int
=
0
,
@ProtoId
(
3
)
val
platform
:
Int
=
0
,
@ProtoId
(
3
)
val
platform
:
Int
=
0
,
...
@@ -157,7 +157,7 @@ internal class InstInfo(
...
@@ -157,7 +157,7 @@ internal class InstInfo(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
LbsShareChangePushInfo
(
internal
class
LbsShareChangePushInfo
(
@ProtoId
(
1
)
val
msgType
:
Int
=
0
,
@ProtoId
(
1
)
val
msgType
:
Int
=
0
,
@ProtoId
(
2
)
val
msgInfo
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
msgInfo
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
versionCtrl
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
versionCtrl
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
...
@@ -171,12 +171,12 @@ internal class LbsShareChangePushInfo(
...
@@ -171,12 +171,12 @@ internal class LbsShareChangePushInfo(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
LuckyBagNotify
(
internal
class
LuckyBagNotify
(
@ProtoId
(
1
)
val
msgTips
:
ByteArray
=
EMPTY_BYTE_ARRAY
@ProtoId
(
1
)
val
msgTips
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
MediaChangePushInfo
(
internal
class
MediaChangePushInfo
(
@ProtoId
(
1
)
val
msgType
:
Int
=
0
,
@ProtoId
(
1
)
val
msgType
:
Int
=
0
,
@ProtoId
(
2
)
val
msgInfo
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
msgInfo
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
versionCtrl
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
versionCtrl
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
...
@@ -191,7 +191,7 @@ internal class MediaChangePushInfo(
...
@@ -191,7 +191,7 @@ internal class MediaChangePushInfo(
@ProtoId
(
100
)
val
extInfo
:
ByteArray
=
EMPTY_BYTE_ARRAY
@ProtoId
(
100
)
val
extInfo
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
{
)
:
ProtoBuf
{
@Serializable
@Serializable
internal
class
PersonalSetting
(
internal
class
PersonalSetting
(
@ProtoId
(
1
)
val
themeId
:
Int
=
0
,
@ProtoId
(
1
)
val
themeId
:
Int
=
0
,
@ProtoId
(
2
)
val
playerId
:
Int
=
0
,
@ProtoId
(
2
)
val
playerId
:
Int
=
0
,
@ProtoId
(
3
)
val
fontId
:
Int
=
0
@ProtoId
(
3
)
val
fontId
:
Int
=
0
...
@@ -199,14 +199,14 @@ internal class PersonalSetting(
...
@@ -199,14 +199,14 @@ internal class PersonalSetting(
}
}
@Serializable
@Serializable
internal
class
MessageBoxInfo
(
internal
class
MessageBoxInfo
(
@ProtoId
(
1
)
val
optBytesContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
1
)
val
optBytesContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
optBytesTitle
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
optBytesTitle
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
optBytesButton
:
ByteArray
=
EMPTY_BYTE_ARRAY
@ProtoId
(
3
)
val
optBytesButton
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
MessageRecallReminder
(
internal
class
MessageRecallReminder
(
@ProtoId
(
1
)
val
uin
:
Long
=
0L
,
@ProtoId
(
1
)
val
uin
:
Long
=
0L
,
@ProtoId
(
2
)
val
nickname
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
nickname
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
recalledMsgList
:
List
<
MessageMeta
>
=
listOf
(),
@ProtoId
(
3
)
val
recalledMsgList
:
List
<
MessageMeta
>
=
listOf
(),
...
@@ -216,7 +216,7 @@ internal class MessageRecallReminder(
...
@@ -216,7 +216,7 @@ internal class MessageRecallReminder(
@ProtoId
(
7
)
val
opType
:
Int
=
0
@ProtoId
(
7
)
val
opType
:
Int
=
0
)
:
ProtoBuf
{
)
:
ProtoBuf
{
@Serializable
@Serializable
internal
class
MessageMeta
(
internal
class
MessageMeta
(
@ProtoId
(
1
)
val
seq
:
Int
=
0
,
@ProtoId
(
1
)
val
seq
:
Int
=
0
,
@ProtoId
(
2
)
val
time
:
Int
=
0
,
@ProtoId
(
2
)
val
time
:
Int
=
0
,
@ProtoId
(
3
)
val
msgRandom
:
Int
=
0
,
@ProtoId
(
3
)
val
msgRandom
:
Int
=
0
,
...
@@ -227,12 +227,12 @@ internal class MessageMeta(
...
@@ -227,12 +227,12 @@ internal class MessageMeta(
}
}
@Serializable
@Serializable
internal
class
MiniAppNotify
(
internal
class
MiniAppNotify
(
@ProtoId
(
1
)
val
msg
:
ByteArray
=
EMPTY_BYTE_ARRAY
@ProtoId
(
1
)
val
msg
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
NotifyMsgBody
(
internal
class
NotifyMsgBody
(
@ProtoId
(
1
)
val
optEnumType
:
Int
/* enum */
=
1
,
@ProtoId
(
1
)
val
optEnumType
:
Int
/* enum */
=
1
,
@ProtoId
(
2
)
val
optUint64MsgTime
:
Long
=
0L
,
@ProtoId
(
2
)
val
optUint64MsgTime
:
Long
=
0L
,
@ProtoId
(
3
)
val
optUint64MsgExpires
:
Long
=
0L
,
@ProtoId
(
3
)
val
optUint64MsgExpires
:
Long
=
0L
,
...
@@ -264,14 +264,14 @@ internal class NotifyMsgBody(
...
@@ -264,14 +264,14 @@ internal class NotifyMsgBody(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
NotifyObjmsgUpdate
(
internal
class
NotifyObjmsgUpdate
(
@ProtoId
(
1
)
val
objmsgId
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
1
)
val
objmsgId
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
updateType
:
Int
=
0
,
@ProtoId
(
2
)
val
updateType
:
Int
=
0
,
@ProtoId
(
3
)
val
extMsg
:
ByteArray
=
EMPTY_BYTE_ARRAY
@ProtoId
(
3
)
val
extMsg
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
RedGrayTipsInfo
(
internal
class
RedGrayTipsInfo
(
@ProtoId
(
1
)
val
optUint32ShowLastest
:
Int
=
0
,
@ProtoId
(
1
)
val
optUint32ShowLastest
:
Int
=
0
,
@ProtoId
(
2
)
val
senderUin
:
Long
=
0L
,
@ProtoId
(
2
)
val
senderUin
:
Long
=
0L
,
@ProtoId
(
3
)
val
receiverUin
:
Long
=
0L
,
@ProtoId
(
3
)
val
receiverUin
:
Long
=
0L
,
...
@@ -294,7 +294,7 @@ internal class RedGrayTipsInfo(
...
@@ -294,7 +294,7 @@ internal class RedGrayTipsInfo(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
ReqBody
(
internal
class
ReqBody
(
@ProtoId
(
1
)
val
optUint64GroupCode
:
Long
=
0L
,
@ProtoId
(
1
)
val
optUint64GroupCode
:
Long
=
0L
,
@ProtoId
(
2
)
val
uint64Memberuins
:
List
<
Long
>?
=
null
,
@ProtoId
(
2
)
val
uint64Memberuins
:
List
<
Long
>?
=
null
,
@ProtoId
(
3
)
val
optUint32Offline
:
Int
=
0
,
@ProtoId
(
3
)
val
optUint32Offline
:
Int
=
0
,
...
@@ -304,12 +304,12 @@ internal class ReqBody(
...
@@ -304,12 +304,12 @@ internal class ReqBody(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
RspBody
(
internal
class
RspBody
(
@ProtoId
(
1
)
val
optUint64GroupCode
:
Long
=
0L
@ProtoId
(
1
)
val
optUint64GroupCode
:
Long
=
0L
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
SingChangePushInfo
(
internal
class
SingChangePushInfo
(
@ProtoId
(
1
)
val
seq
:
Long
=
0L
,
@ProtoId
(
1
)
val
seq
:
Long
=
0L
,
@ProtoId
(
2
)
val
actionType
:
Int
=
0
,
@ProtoId
(
2
)
val
actionType
:
Int
=
0
,
@ProtoId
(
3
)
val
groupId
:
Long
=
0L
,
@ProtoId
(
3
)
val
groupId
:
Long
=
0L
,
...
@@ -319,13 +319,13 @@ internal class SingChangePushInfo(
...
@@ -319,13 +319,13 @@ internal class SingChangePushInfo(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
TemplParam
(
internal
class
TemplParam
(
@ProtoId
(
1
)
val
name
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
1
)
val
name
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
value
:
ByteArray
=
EMPTY_BYTE_ARRAY
@ProtoId
(
2
)
val
value
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
ThemeStateNotify
(
internal
class
ThemeStateNotify
(
@ProtoId
(
1
)
val
state
:
Int
=
0
,
@ProtoId
(
1
)
val
state
:
Int
=
0
,
@ProtoId
(
2
)
val
feedsId
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
2
)
val
feedsId
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
themeName
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
themeName
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
...
@@ -334,7 +334,7 @@ internal class ThemeStateNotify(
...
@@ -334,7 +334,7 @@ internal class ThemeStateNotify(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
TroopFormGrayTipsInfo
(
internal
class
TroopFormGrayTipsInfo
(
@ProtoId
(
1
)
val
writerUin
:
Long
=
0L
,
@ProtoId
(
1
)
val
writerUin
:
Long
=
0L
,
@ProtoId
(
2
)
val
creatorUin
:
Long
=
0L
,
@ProtoId
(
2
)
val
creatorUin
:
Long
=
0L
,
@ProtoId
(
3
)
val
richContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
@ProtoId
(
3
)
val
richContent
:
ByteArray
=
EMPTY_BYTE_ARRAY
,
...
@@ -343,7 +343,7 @@ internal class TroopFormGrayTipsInfo(
...
@@ -343,7 +343,7 @@ internal class TroopFormGrayTipsInfo(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
VideoChangePushInfo
(
internal
class
VideoChangePushInfo
(
@ProtoId
(
1
)
val
seq
:
Long
=
0L
,
@ProtoId
(
1
)
val
seq
:
Long
=
0L
,
@ProtoId
(
2
)
val
actionType
:
Int
=
0
,
@ProtoId
(
2
)
val
actionType
:
Int
=
0
,
@ProtoId
(
3
)
val
groupId
:
Long
=
0L
,
@ProtoId
(
3
)
val
groupId
:
Long
=
0L
,
...
@@ -354,7 +354,7 @@ internal class VideoChangePushInfo(
...
@@ -354,7 +354,7 @@ internal class VideoChangePushInfo(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
WereWolfPush
(
internal
class
WereWolfPush
(
@ProtoId
(
1
)
val
pushType
:
Int
=
0
,
@ProtoId
(
1
)
val
pushType
:
Int
=
0
,
@ProtoId
(
2
)
val
gameRoom
:
Long
=
0L
,
@ProtoId
(
2
)
val
gameRoom
:
Long
=
0L
,
@ProtoId
(
3
)
val
enumGameState
:
Int
=
0
,
@ProtoId
(
3
)
val
enumGameState
:
Int
=
0
,
...
@@ -374,7 +374,7 @@ internal class WereWolfPush(
...
@@ -374,7 +374,7 @@ internal class WereWolfPush(
@ProtoId
(
17
)
val
votedTieUsers
:
List
<
Long
>?
=
null
@ProtoId
(
17
)
val
votedTieUsers
:
List
<
Long
>?
=
null
)
:
ProtoBuf
{
)
:
ProtoBuf
{
@Serializable
@Serializable
internal
class
GameRecord
(
internal
class
GameRecord
(
@ProtoId
(
1
)
val
total
:
Int
=
0
,
@ProtoId
(
1
)
val
total
:
Int
=
0
,
@ProtoId
(
2
)
val
win
:
Int
=
0
,
@ProtoId
(
2
)
val
win
:
Int
=
0
,
@ProtoId
(
3
)
val
lose
:
Int
=
0
,
@ProtoId
(
3
)
val
lose
:
Int
=
0
,
...
@@ -382,7 +382,7 @@ internal class GameRecord(
...
@@ -382,7 +382,7 @@ internal class GameRecord(
)
:
ProtoBuf
)
:
ProtoBuf
@Serializable
@Serializable
internal
class
Role
(
internal
class
Role
(
@ProtoId
(
1
)
val
uin
:
Long
=
0L
,
@ProtoId
(
1
)
val
uin
:
Long
=
0L
,
@ProtoId
(
2
)
val
enumType
:
Int
=
0
,
@ProtoId
(
2
)
val
enumType
:
Int
=
0
,
@ProtoId
(
3
)
val
enumState
:
Int
=
0
,
@ProtoId
(
3
)
val
enumState
:
Int
=
0
,
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt
View file @
458fe2ee
...
@@ -292,12 +292,6 @@ internal class MessageSvc {
...
@@ -292,12 +292,6 @@ internal class MessageSvc {
}
}
return
@
mapNotNull
null
return
@
mapNotNull
null
}
}
732
->
{
// ?
// 27 0B 60 E7 0C 01 3E 03 3F A2 5E 90 60 E2 00 01 44 71 47 90 00 00 02 58
bot
.
network
.
logger
.
debug
{
"unknown PbGetMsg type ${msg.msgHead.msgType}: ${msg._miraiContentToString()}"
}
return
@
mapNotNull
null
}
34
->
{
// 主动入群
34
->
{
// 主动入群
// 27 0B 60 E7 01 44 71 47 90 03 3E 03 3F A2 06 B4 B4 BD A8 D5 DF 00 30 36 42 35 35 46 45 32 45 35 36 43 45 45 44 30 38 30 35 31 41 35 42 37 36 39 35 34 45 30 46 43 43 36 36 45 44 43 46 45 43 42 39 33 41 41 44 32 32
// 27 0B 60 E7 01 44 71 47 90 03 3E 03 3F A2 06 B4 B4 BD A8 D5 DF 00 30 36 42 35 35 46 45 32 45 35 36 43 45 45 44 30 38 30 35 31 41 35 42 37 36 39 35 34 45 30 46 43 43 36 36 45 44 43 46 45 43 42 39 33 41 41 44 32 32
val
group
=
bot
.
getGroupByUinOrNull
(
msg
.
msgHead
.
fromUin
)
val
group
=
bot
.
getGroupByUinOrNull
(
msg
.
msgHead
.
fromUin
)
...
@@ -309,8 +303,9 @@ internal class MessageSvc {
...
@@ -309,8 +303,9 @@ internal class MessageSvc {
return
@
mapNotNull
MemberJoinEvent
.
Active
(
group
.
newMember
(
msg
.
getNewMemberInfo
())
return
@
mapNotNull
MemberJoinEvent
.
Active
(
group
.
newMember
(
msg
.
getNewMemberInfo
())
.
also
{
group
.
members
.
delegate
.
addLast
(
it
)
})
.
also
{
group
.
members
.
delegate
.
addLast
(
it
)
})
}
}
// 732: 27 0B 60 E7 0C 01 3E 03 3F A2 5E 90 60 E2 00 01 44 71 47 90 00 00 02 58
else
->
{
else
->
{
bot
.
network
.
logger
.
debug
{
"unknown PbGetMsg type ${msg.msgHead.msgType}
: ${msg._miraiContentToString()}
"
}
bot
.
network
.
logger
.
debug
{
"unknown PbGetMsg type ${msg.msgHead.msgType}"
}
return
@
mapNotNull
null
return
@
mapNotNull
null
}
}
}
}
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt
View file @
458fe2ee
...
@@ -30,6 +30,7 @@ import net.mamoe.mirai.qqandroid.contact.checkIsMemberImpl
...
@@ -30,6 +30,7 @@ import net.mamoe.mirai.qqandroid.contact.checkIsMemberImpl
import
net.mamoe.mirai.qqandroid.message.toMessageChain
import
net.mamoe.mirai.qqandroid.message.toMessageChain
import
net.mamoe.mirai.qqandroid.network.MultiPacketBySequence
import
net.mamoe.mirai.qqandroid.network.MultiPacketBySequence
import
net.mamoe.mirai.qqandroid.network.Packet
import
net.mamoe.mirai.qqandroid.network.Packet
import
net.mamoe.mirai.qqandroid.network.QQAndroidClient
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.MsgInfo
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.MsgInfo
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.MsgType0x210
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.MsgType0x210
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.OnlinePushPack
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.OnlinePushPack
...
@@ -47,6 +48,7 @@ import net.mamoe.mirai.qqandroid.utils.io.serialization.*
...
@@ -47,6 +48,7 @@ import net.mamoe.mirai.qqandroid.utils.io.serialization.*
import
net.mamoe.mirai.qqandroid.utils.io.serialization.jce.JceId
import
net.mamoe.mirai.qqandroid.utils.io.serialization.jce.JceId
import
net.mamoe.mirai.qqandroid.utils.read
import
net.mamoe.mirai.qqandroid.utils.read
import
net.mamoe.mirai.qqandroid.utils.toUHexString
import
net.mamoe.mirai.qqandroid.utils.toUHexString
import
net.mamoe.mirai.utils.LockFreeLinkedList
import
net.mamoe.mirai.utils.MiraiInternalAPI
import
net.mamoe.mirai.utils.MiraiInternalAPI
import
net.mamoe.mirai.utils.currentTimeSeconds
import
net.mamoe.mirai.utils.currentTimeSeconds
import
net.mamoe.mirai.utils.debug
import
net.mamoe.mirai.utils.debug
...
@@ -135,12 +137,8 @@ internal class OnlinePush {
...
@@ -135,12 +137,8 @@ internal class OnlinePush {
}
}
val
group
=
bot
.
getGroupByUin
(
content
.
fromUin
)
as
GroupImpl
val
group
=
bot
.
getGroupByUin
(
content
.
fromUin
)
as
GroupImpl
if
(
group
.
lastMemberPermissionChangeSequences
.
remove
(
content
.
msgSeq
))
{
return
null
}
if
(
var5
==
0L
&&
this
.
remaining
==
1L
)
{
//管理员变更
if
(
var5
==
0L
&&
this
.
remaining
==
1L
)
{
//管理员变更
group
.
lastMemberPermissionChangeSequences
.
addLast
(
content
.
msgSeq
)
val
newPermission
=
val
newPermission
=
if
(
this
.
readByte
().
toInt
()
==
1
)
MemberPermission
.
ADMINISTRATOR
if
(
this
.
readByte
().
toInt
()
==
1
)
MemberPermission
.
ADMINISTRATOR
else
MemberPermission
.
MEMBER
else
MemberPermission
.
MEMBER
...
@@ -223,8 +221,31 @@ internal class OnlinePush {
...
@@ -223,8 +221,31 @@ internal class OnlinePush {
"OnlinePush.RespPush"
"OnlinePush.RespPush"
)
{
)
{
// to reduce nesting depth
// to reduce nesting depth
private
fun
List
<
MsgInfo
>.
deco
(
mapper
:
ByteReadPacket
.(
msgInfo
:
MsgInfo
)
->
Sequence
<
Packet
>):
Sequence
<
Packet
>
{
private
fun
List
<
MsgInfo
>.
deco
(
return
asSequence
().
flatMap
{
it
.
vMsg
.
read
{
mapper
(
it
)
}
}
client
:
QQAndroidClient
,
mapper
:
ByteReadPacket
.(
msgInfo
:
MsgInfo
)
->
Sequence
<
Packet
>
):
Sequence
<
Packet
>
{
return
asSequence
().
filter
{
msg
->
val
cache
=
client
.
onlinePushCacheList
.
removeUntilFirst
{
it
==
msg
.
shMsgSeq
}
if
(
cache
==
null
)
{
client
.
onlinePushCacheList
.
addLast
(
msg
.
shMsgSeq
)
true
}
else
{
client
.
onlinePushCacheList
.
remove
(
cache
)
false
}
}.
flatMap
{
it
.
vMsg
.
read
{
mapper
(
it
)
}
}
}
private
inline
fun
LockFreeLinkedList
<
Short
>.
removeUntilFirst
(
block
:
(
Short
)
->
Boolean
):
Short
?
{
this
.
forEach
{
if
(!
block
(
it
))
{
this
.
remove
(
it
)
}
else
{
return
it
}
}
return
null
}
}
private
fun
lambda732
(
block
:
ByteReadPacket
.(
group
:
GroupImpl
,
bot
:
QQAndroidBot
)
->
Sequence
<
Packet
>):
private
fun
lambda732
(
block
:
ByteReadPacket
.(
group
:
GroupImpl
,
bot
:
QQAndroidBot
)
->
Sequence
<
Packet
>):
...
@@ -362,9 +383,7 @@ internal class OnlinePush {
...
@@ -362,9 +383,7 @@ internal class OnlinePush {
return
@
lambda732
recallReminder
.
recalledMsgList
.
asSequence
().
mapNotNull
{
pkg
->
return
@
lambda732
recallReminder
.
recalledMsgList
.
asSequence
().
mapNotNull
{
pkg
->
when
{
when
{
pkg
.
authorUin
==
bot
.
id
&&
operator
.
id
==
bot
.
id
->
null
pkg
.
authorUin
==
bot
.
id
&&
operator
.
id
==
bot
.
id
->
null
group
.
lastRecalledMessageRandoms
.
remove
(
pkg
.
msgRandom
)
->
null
else
->
{
else
->
{
group
.
lastRecalledMessageRandoms
.
addLast
(
pkg
.
msgRandom
)
MessageRecallEvent
.
GroupRecall
(
bot
,
pkg
.
authorUin
,
pkg
.
msgRandom
,
pkg
.
time
,
operator
,
group
)
MessageRecallEvent
.
GroupRecall
(
bot
,
pkg
.
authorUin
,
pkg
.
msgRandom
,
pkg
.
time
,
operator
,
group
)
}
}
}
}
...
@@ -396,7 +415,7 @@ internal class OnlinePush {
...
@@ -396,7 +415,7 @@ internal class OnlinePush {
bot
.
friends
.
delegate
.
addLast
(
new
)
bot
.
friends
.
delegate
.
addLast
(
new
)
return
@
lambda528
sequenceOf
(
FriendAddEvent
(
new
))
return
@
lambda528
sequenceOf
(
FriendAddEvent
(
new
))
},
},
0
xE2L
to
lambda528
{
bot
->
0
xE2L
to
lambda528
{
// TODO: unknown. maybe messages.
// TODO: unknown. maybe messages.
// 0A 35 08 00 10 A2 FF 8C F0 03 1A 1B E5 90 8C E6 84 8F E4 BD A0 E7 9A 84 E5 8A A0 E5 A5 BD E5 8F 8B E8 AF B7 E6 B1 82 22 0C E6 BD 9C E6 B1 9F E7 BE A4 E5 8F 8B 28 01
// 0A 35 08 00 10 A2 FF 8C F0 03 1A 1B E5 90 8C E6 84 8F E4 BD A0 E7 9A 84 E5 8A A0 E5 A5 BD E5 8F 8B E8 AF B7 E6 B1 82 22 0C E6 BD 9C E6 B1 9F E7 BE A4 E5 8F 8B 28 01
// vProtobuf.loadAs(Msgtype0x210.serializer())
// vProtobuf.loadAs(Msgtype0x210.serializer())
...
@@ -468,7 +487,7 @@ internal class OnlinePush {
...
@@ -468,7 +487,7 @@ internal class OnlinePush {
override
suspend
fun
ByteReadPacket
.
decode
(
bot
:
QQAndroidBot
,
sequenceId
:
Int
):
Response
{
override
suspend
fun
ByteReadPacket
.
decode
(
bot
:
QQAndroidBot
,
sequenceId
:
Int
):
Response
{
val
reqPushMsg
=
decodeUniPacket
(
OnlinePushPack
.
SvcReqPushMsg
.
serializer
(),
"req"
)
val
reqPushMsg
=
decodeUniPacket
(
OnlinePushPack
.
SvcReqPushMsg
.
serializer
(),
"req"
)
val
packets
:
Sequence
<
Packet
>
=
reqPushMsg
.
vMsgInfos
.
deco
{
msgInfo
->
val
packets
:
Sequence
<
Packet
>
=
reqPushMsg
.
vMsgInfos
.
deco
(
bot
.
client
)
{
msgInfo
->
when
(
msgInfo
.
shMsgType
.
toInt
())
{
when
(
msgInfo
.
shMsgType
.
toInt
())
{
732
->
{
732
->
{
val
group
=
bot
.
getGroup
(
readUInt
().
toLong
())
val
group
=
bot
.
getGroup
(
readUInt
().
toLong
())
...
@@ -478,7 +497,7 @@ internal class OnlinePush {
...
@@ -478,7 +497,7 @@ internal class OnlinePush {
discardExact
(
1
)
discardExact
(
1
)
Transformers732
[
internalType
]
Transformers732
[
internalType
]
?.
let
{
it
(
this
@
deco
,
group
,
bot
)
}
?.
let
{
it
(
this
@
deco
,
group
as
GroupImpl
,
bot
)
}
?:
kotlin
.
run
{
?:
kotlin
.
run
{
bot
.
network
.
logger
.
debug
{
bot
.
network
.
logger
.
debug
{
"unknown group 732 type $internalType, data: "
+
readBytes
().
toUHexString
()
"unknown group 732 type $internalType, data: "
+
readBytes
().
toUHexString
()
...
@@ -507,11 +526,11 @@ internal class OnlinePush {
...
@@ -507,11 +526,11 @@ internal class OnlinePush {
}
}
}
}
}
}
return
Response
(
reqPushMsg
.
uin
,
reqPushMsg
.
svrip
?:
0
,
packets
)
return
Response
(
reqPushMsg
,
packets
)
}
}
@Suppress
(
"SpellCheckingInspection"
)
@Suppress
(
"SpellCheckingInspection"
)
internal
data class
Response
(
val
uin
:
Long
,
val
svrip
:
Int
,
val
sequence
:
Sequence
<
Packet
>)
:
internal
data class
Response
(
val
request
:
OnlinePushPack
.
SvcReqPushMsg
,
val
sequence
:
Sequence
<
Packet
>)
:
MultiPacketBySequence
<
Packet
>(
sequence
)
{
MultiPacketBySequence
<
Packet
>(
sequence
)
{
override
fun
toString
():
String
{
override
fun
toString
():
String
{
return
"OnlinePush.ReqPush.Response"
return
"OnlinePush.ReqPush.Response"
...
@@ -525,7 +544,7 @@ internal class OnlinePush {
...
@@ -525,7 +544,7 @@ internal class OnlinePush {
)
:
JceStruct
)
:
JceStruct
override
suspend
fun
QQAndroidBot
.
handle
(
packet
:
Response
,
sequenceId
:
Int
):
OutgoingPacket
?
{
override
suspend
fun
QQAndroidBot
.
handle
(
packet
:
Response
,
sequenceId
:
Int
):
OutgoingPacket
?
{
return
buildResponseUniPacket
(
client
,
sequenceId
=
sequenceId
)
{
return
buildResponseUniPacket
(
client
)
{
writeJceStruct
(
writeJceStruct
(
RequestPacket
.
serializer
(),
RequestPacket
.
serializer
(),
RequestPacket
(
RequestPacket
(
...
@@ -535,7 +554,24 @@ internal class OnlinePush {
...
@@ -535,7 +554,24 @@ internal class OnlinePush {
sBuffer
=
jceRequestSBuffer
(
sBuffer
=
jceRequestSBuffer
(
"resp"
,
"resp"
,
OnlinePushPack
.
SvcRespPushMsg
.
serializer
(),
OnlinePushPack
.
SvcRespPushMsg
.
serializer
(),
OnlinePushPack
.
SvcRespPushMsg
(
packet
.
uin
,
listOf
(),
packet
.
svrip
)
OnlinePushPack
.
SvcRespPushMsg
(
packet
.
request
.
uin
,
packet
.
request
.
vMsgInfos
.
map
{
msg
->
OnlinePushPack
.
DelMsgInfo
(
fromUin
=
msg
.
lFromUin
,
shMsgSeq
=
msg
.
shMsgSeq
,
vMsgCookies
=
msg
.
vMsgCookies
,
uMsgTime
=
0
,
clientIp
=
0
,
sendTime
=
0
,
ssoIp
=
0
,
ssoSeq
=
0
,
uAppId
=
0
,
uMsgType
=
0
,
wCmd
=
0
)
}
)
)
)
)
)
)
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment