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
776e5915
Commit
776e5915
authored
Feb 21, 2020
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support MemberLeaveEvent.Quit, close #51
parent
2eaf4d5f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
47 additions
and
12 deletions
+47
-12
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
+37
-10
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt
...mmonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt
+10
-2
No files found.
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt
View file @
776e5915
...
...
@@ -13,6 +13,7 @@ package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive
import
kotlinx.io.core.ByteReadPacket
import
kotlinx.io.core.readBytes
import
kotlinx.io.core.readUByte
import
kotlinx.io.core.readUInt
import
net.mamoe.mirai.contact.MemberPermission
import
net.mamoe.mirai.data.MultiPacket
...
...
@@ -111,17 +112,43 @@ internal class OnlinePush {
}
}
34
->
{
readUInt
().
toLong
()
// uin or code ?
if
(
readByte
().
toInt
()
==
1
)
{
val
target
=
readUInt
().
toLong
()
val
groupUin
=
content
.
fromUin
/* quit
27 0B 60 E7
01
2F 55 7C B8
82
00 30 42 33 32 46 30 38 33 32 39 32 35 30 31 39 33 45 46 32 45 30 36 35 41 35 41 33 42 37 35 43 41 34 46 37 42 38 42 38 42 44 43 35 35 34 35 44 38 30
*/
/* kick
27 0B 60 E7
01
A8 32 51 A1
83 3E 03 3F A2 06 B4 B4 BD A8 D5 DF 00 30 39 32 46 45 30 36 31 41 33 37 36 43 44 35 37 35 37 39 45 37 32 34 44 37 37 30 36 46 39 39 43 35 35 33 33 31 34 44 32 44 46 35 45 42 43 31 31 36
*/
readUInt
().
toLong
()
// group, uin or code ?
bot
.
getGroupByUin
(
groupUin
).
let
{
group
->
val
member
=
group
.
getOrNull
(
target
)
as
?
MemberImpl
?:
return
NoPacket
this
.
discardExact
(
1
)
return
MemberLeaveEvent
.
Kick
(
member
.
also
{
group
.
members
.
delegate
.
remove
(
member
)
},
group
.
members
[
readUInt
().
toLong
()])
discardExact
(
1
)
val
target
=
readUInt
().
toLong
()
val
type
=
readUByte
().
toInt
()
val
operator
=
readUInt
().
toLong
()
val
groupUin
=
content
.
fromUin
when
(
type
)
{
0
x82
->
{
bot
.
getGroupByUin
(
groupUin
).
let
{
group
->
val
member
=
group
.
getOrNull
(
target
)
as
?
MemberImpl
?:
return
NoPacket
return
MemberLeaveEvent
.
Quit
(
member
.
also
{
group
.
members
.
delegate
.
remove
(
member
)
})
}
}
0
x83
->
{
bot
.
getGroupByUin
(
groupUin
).
let
{
group
->
val
member
=
group
.
getOrNull
(
target
)
as
?
MemberImpl
?:
return
NoPacket
return
MemberLeaveEvent
.
Kick
(
member
.
also
{
group
.
members
.
delegate
.
remove
(
member
)
},
group
.
members
[
operator
])
}
}
}
}
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt
View file @
776e5915
...
...
@@ -295,12 +295,20 @@ sealed class MemberLeaveEvent : GroupMemberEvent {
* 操作人. 为 null 则是机器人操作
*/
val
operator
:
Member
?
)
:
MemberLeaveEvent
(),
Packet
)
:
MemberLeaveEvent
(),
Packet
{
override
fun
toString
():
String
{
return
"MemberLeaveEvent.Kick(member=$member, operator=$operator)"
}
}
/**
* 成员主动离开
*/
data class
Quit
(
override
val
member
:
Member
)
:
MemberLeaveEvent
()
data class
Quit
(
override
val
member
:
Member
)
:
MemberLeaveEvent
(),
Packet
{
override
fun
toString
():
String
{
return
"MemberLeaveEvent.Quit(member=$member)"
}
}
}
val
MemberLeaveEvent
.
Kick
.
isByBot
:
Boolean
get
()
=
operator
!=
null
...
...
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