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
867b2c89
Commit
867b2c89
authored
Feb 07, 2020
by
Him188
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
e7bff905
8de1fe91
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
93 additions
and
6 deletions
+93
-6
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt
...ommonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt
+10
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/OIDB.kt
...mamoe/mirai/qqandroid/network/protocol/data/proto/OIDB.kt
+33
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt
.../mirai/qqandroid/network/protocol/packet/PacketFactory.kt
+2
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/TroopManagement.kt
...qqandroid/network/protocol/packet/chat/TroopManagement.kt
+46
-4
mirai-core-qqandroid/src/jvmTest/kotlin/test/ProtoBufDataClassGenerator.kt
...oid/src/jvmTest/kotlin/test/ProtoBufDataClassGenerator.kt
+1
-1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt
...e/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt
+1
-0
No files found.
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt
View file @
867b2c89
...
...
@@ -204,6 +204,16 @@ internal class MemberImpl(
return
mute
(
0
)
}
override
suspend
fun
kick
(
message
:
String
):
Boolean
{
bot
.
network
.
run
{
return
TroopManagement
.
Kick
(
client
=
bot
.
client
,
member
=
this
@MemberImpl
,
message
=
message
).
sendAndExpect
<
TroopManagement
.
Kick
.
Response
>().
success
}
}
override
fun
equals
(
other
:
Any
?):
Boolean
{
if
(
this
===
other
)
return
true
return
other
is
Member
&&
other
.
id
==
this
.
id
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/OIDB.kt
View file @
867b2c89
...
...
@@ -5,6 +5,39 @@ import kotlinx.serialization.Serializable
import
net.mamoe.mirai.qqandroid.io.ProtoBuf
import
net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
@Serializable
class
Oidb0x8a0
:
ProtoBuf
{
@Serializable
class
RspBody
(
@SerialId
(
1
)
val
optUint64GroupCode
:
Long
=
0L
,
@SerialId
(
2
)
val
msgKickResult
:
List
<
Oidb0x8a0
.
KickResult
>?
=
null
)
:
ProtoBuf
@Serializable
class
KickResult
(
@SerialId
(
1
)
val
optUint32Result
:
Int
=
0
,
@SerialId
(
2
)
val
optUint64MemberUin
:
Long
=
0L
)
:
ProtoBuf
@Serializable
class
KickMemberInfo
(
@SerialId
(
1
)
val
optUint32Operate
:
Int
=
0
,
@SerialId
(
2
)
val
optUint64MemberUin
:
Long
=
0L
,
@SerialId
(
3
)
val
optUint32Flag
:
Int
=
0
,
@SerialId
(
4
)
val
optBytesMsg
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
@Serializable
class
ReqBody
(
@SerialId
(
1
)
val
optUint64GroupCode
:
Long
=
0L
,
@SerialId
(
2
)
val
msgKickList
:
List
<
Oidb0x8a0
.
KickMemberInfo
>?
=
null
,
@SerialId
(
3
)
val
kickList
:
List
<
Long
>?
=
null
,
@SerialId
(
4
)
val
kickFlag
:
Int
=
0
,
@SerialId
(
5
)
val
kickMsg
:
ByteArray
=
EMPTY_BYTE_ARRAY
)
:
ProtoBuf
}
@Serializable
class
Oidb0x8fc
:
ProtoBuf
{
@Serializable
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt
View file @
867b2c89
...
...
@@ -125,7 +125,8 @@ internal object KnownPacketFactories {
TroopManagement
.
Mute
,
TroopManagement
.
GroupOperation
,
TroopManagement
.
GetGroupOperationInfo
,
TroopManagement
.
EditGroupNametag
TroopManagement
.
EditGroupNametag
,
TroopManagement
.
Kick
)
object
IncomingFactories
:
List
<
IncomingPacketFactory
<
*
>>
by
mutableListOf
(
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/TroopManagement.kt
View file @
867b2c89
...
...
@@ -13,14 +13,12 @@ import net.mamoe.mirai.qqandroid.network.QQAndroidClient
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.ModifyGroupCardReq
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.stUinInfo
import
net.mamoe.mirai.qqandroid.network.protocol.data.proto.Oidb0x88d
import
net.mamoe.mirai.qqandroid.network.protocol.data.proto.Oidb0x89a
import
net.mamoe.mirai.qqandroid.network.protocol.data.proto.Oidb0x8fc
import
net.mamoe.mirai.qqandroid.network.protocol.data.proto.OidbSso
import
net.mamoe.mirai.qqandroid.network.protocol.data.proto.*
import
net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import
net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory
import
net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.chat.TroopManagement.GetGroupOperationInfo.decode
import
net.mamoe.mirai.utils.daysToSeconds
import
net.mamoe.mirai.utils.io.encodeToString
...
...
@@ -131,6 +129,50 @@ internal object TroopManagement {
}
}
internal
object
Kick
:
OutgoingPacketFactory
<
Kick
.
Response
>(
"OidbSvc.0x8a0_0"
)
{
override
suspend
fun
ByteReadPacket
.
decode
(
bot
:
QQAndroidBot
):
Response
{
return
Response
(
this
.
readBytes
().
loadAs
(
OidbSso
.
OIDBSSOPkg
.
serializer
()).
bodybuffer
.
loadAs
(
Oidb0x8a0
.
RspBody
.
serializer
()).
msgKickResult
!!
[
0
].
optUint32Result
==
1
)
}
class
Response
(
val
success
:
Boolean
)
:
Packet
{
override
fun
toString
():
String
{
return
"Response(Kick Member)"
}
}
operator
fun
invoke
(
client
:
QQAndroidClient
,
member
:
Member
,
message
:
String
):
OutgoingPacket
{
return
buildOutgoingUniPacket
(
client
)
{
writeProtoBuf
(
OidbSso
.
OIDBSSOPkg
.
serializer
(),
OidbSso
.
OIDBSSOPkg
(
command
=
2208
,
serviceType
=
0
,
//或者1
result
=
0
,
bodybuffer
=
Oidb0x8a0
.
ReqBody
(
optUint64GroupCode
=
member
.
group
.
id
,
msgKickList
=
listOf
(
Oidb0x8a0
.
KickMemberInfo
(
optUint32Operate
=
5
,
optUint64MemberUin
=
member
.
id
,
optUint32Flag
=
1
//或者0
)
),
kickMsg
=
message
.
toByteArray
()
).
toByteArray
(
Oidb0x8a0
.
ReqBody
.
serializer
())
)
)
}
}
}
internal
object
GroupOperation
:
OutgoingPacketFactory
<
GroupOperation
.
Response
>(
"OidbSvc.0x89a_0"
)
{
override
suspend
fun
ByteReadPacket
.
decode
(
bot
:
QQAndroidBot
):
Response
{
return
Response
...
...
mirai-core-qqandroid/src/jvmTest/kotlin/test/ProtoBufDataClassGenerator.kt
View file @
867b2c89
...
...
@@ -16,7 +16,7 @@ fun main() {
println
(
File
(
"""
E:\Projects\QQAndroidFF\app\src\main\java\tencent\im\cs\cmd0x352
/Users/jiahua.liu/Desktop/QQAndroid-F/app/src/main/java/tencent/im/oidb/cmd0x8a0/
"""
.
trimIndent
()
)
.
generateUnarrangedClasses
().
toMutableList
().
arrangeClasses
().
joinToString
(
"\n\n"
)
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt
View file @
867b2c89
...
...
@@ -52,6 +52,7 @@ interface Member : QQ, Contact {
*/
suspend
fun
unmute
():
Boolean
suspend
fun
kick
(
message
:
String
=
""
):
Boolean
/**
* 当且仅当 `[other] is [Member] && [other].id == this.id && [other].group == this.group` 时为 true
*/
...
...
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