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
eb024494
Commit
eb024494
authored
Oct 27, 2019
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More clear subject declaretion
parent
c63f54bc
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
15 additions
and
8 deletions
+15
-8
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribers.kt
...onMain/kotlin/net.mamoe.mirai/event/MessageSubscribers.kt
+3
-1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/Subscribers.kt
...rc/commonMain/kotlin/net.mamoe.mirai/event/Subscribers.kt
+2
-2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/internal/MessageDataInternal.kt
...n/net.mamoe.mirai/message/internal/MessageDataInternal.kt
+1
-0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/BotSession.kt
...c/commonMain/kotlin/net.mamoe.mirai/network/BotSession.kt
+4
-3
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/handler/TemporaryPacketHandler.kt
...ai/network/protocol/tim/handler/TemporaryPacketHandler.kt
+5
-2
No files found.
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribers.kt
View file @
eb024494
...
@@ -173,7 +173,9 @@ class MessageSubscribersBuilder<T : SenderAndMessage<*>>(
...
@@ -173,7 +173,9 @@ class MessageSubscribersBuilder<T : SenderAndMessage<*>>(
)
{
)
{
suspend
inline
fun
case
(
equals
:
String
,
trim
:
Boolean
=
true
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
equals
==
if
(
trim
)
it
.
trim
()
else
it
},
listener
)
suspend
inline
fun
case
(
equals
:
String
,
trim
:
Boolean
=
true
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
equals
==
if
(
trim
)
it
.
trim
()
else
it
},
listener
)
suspend
inline
fun
contains
(
value
:
String
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
value
in
it
},
listener
)
suspend
inline
fun
contains
(
value
:
String
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
value
in
it
},
listener
)
suspend
inline
fun
startsWith
(
start
:
String
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
it
.
startsWith
(
start
)
},
listener
)
suspend
inline
fun
startsWith
(
prefix
:
String
,
removePrefix
:
Boolean
=
false
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
it
.
startsWith
(
prefix
)
})
{
if
(
removePrefix
)
listener
.
invoke
(
this
,
this
.
message
.
stringValue
.
substringAfter
(
prefix
))
else
listener
(
this
)
}
suspend
inline
fun
endsWith
(
start
:
String
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
it
.
endsWith
(
start
)
},
listener
)
suspend
inline
fun
endsWith
(
start
:
String
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
it
.
endsWith
(
start
)
},
listener
)
suspend
inline
fun
sentBy
(
id
:
UInt
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
sender
.
id
==
id
},
listener
)
suspend
inline
fun
sentBy
(
id
:
UInt
,
noinline
listener
:
MessageListener
<
T
>)
=
content
({
sender
.
id
==
id
},
listener
)
suspend
inline
fun
sentBy
(
id
:
Long
,
noinline
listener
:
MessageListener
<
T
>)
=
sentBy
(
id
.
toUInt
(),
listener
)
suspend
inline
fun
sentBy
(
id
:
Long
,
noinline
listener
:
MessageListener
<
T
>)
=
sentBy
(
id
.
toUInt
(),
listener
)
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/Subscribers.kt
View file @
eb024494
...
@@ -121,9 +121,9 @@ suspend inline fun <reified E : Event> subscribeAll(noinline listeners: suspend
...
@@ -121,9 +121,9 @@ suspend inline fun <reified E : Event> subscribeAll(noinline listeners: suspend
*/
*/
@ListenersBuilderDsl
@ListenersBuilderDsl
@Suppress
(
"MemberVisibilityCanBePrivate"
,
"unused"
)
@Suppress
(
"MemberVisibilityCanBePrivate"
,
"unused"
)
inline
class
ListenerBuilder
<
out
E
:
Event
>(
class
ListenerBuilder
<
out
E
:
Event
>(
@PublishedApi
@PublishedApi
internal
inline
val
handlerConsumer
:
suspend
(
Listener
<
E
>)
->
Unit
internal
val
handlerConsumer
:
suspend
(
Listener
<
E
>)
->
Unit
)
{
)
{
suspend
inline
fun
handler
(
noinline
listener
:
suspend
(
E
)
->
ListeningStatus
)
{
suspend
inline
fun
handler
(
noinline
listener
:
suspend
(
E
)
->
ListeningStatus
)
{
handlerConsumer
(
Handler
(
listener
))
handlerConsumer
(
Handler
(
listener
))
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/internal/MessageDataInternal.kt
View file @
eb024494
...
@@ -208,6 +208,7 @@ fun MessageChain.toPacket(forGroup: Boolean): ByteReadPacket = buildPacket {
...
@@ -208,6 +208,7 @@ fun MessageChain.toPacket(forGroup: Boolean): ByteReadPacket = buildPacket {
writeByte
(
0
x02
)
writeByte
(
0
x02
)
//"46 52 25 46 60 30 59 4F 4A 5A 51 48 31 46 4A 53 4C 51 4C 4A 33 46 31 2E 6A 70 67".hexToBytes().stringOfWitch()
//"46 52 25 46 60 30 59 4F 4A 5A 51 48 31 46 4A 53 4C 51 4C 4A 33 46 31 2E 6A 70 67".hexToBytes().stringOfWitch()
// writeShortLVString(filename)//图片文件名 FR%F`0YOJZQH1FJSLQLJ3F1.jpg
// writeShortLVString(filename)//图片文件名 FR%F`0YOJZQH1FJSLQLJ3F1.jpg
require
(
id
.
value
.
length
==
37
)
{
"Illegal ImageId: ${id.value}"
}
writeShortLVString
(
id
.
value
.
substring
(
1
..
24
)
+
".gif"
)
//图片文件名. 后缀不影响. 但无后缀会导致 PC QQ 无法显示这个图片
writeShortLVString
(
id
.
value
.
substring
(
1
..
24
)
+
".gif"
)
//图片文件名. 后缀不影响. 但无后缀会导致 PC QQ 无法显示这个图片
writeHex
(
"03 00 04 00 00 02 A2 04"
)
writeHex
(
"03 00 04 00 00 02 A2 04"
)
writeShortLVString
(
id
.
value
)
writeShortLVString
(
id
.
value
)
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/BotSession.kt
View file @
eb024494
...
@@ -73,14 +73,15 @@ class BotSession(
...
@@ -73,14 +73,15 @@ class BotSession(
* ```
* ```
* @sample net.mamoe.mirai.network.protocol.tim.packet.action.uploadImage
* @sample net.mamoe.mirai.network.protocol.tim.packet.action.uploadImage
*
*
* @param checkSequence 是否期待 [ServerPacket.sequenceId] 与 [OutgoingPacket.sequenceId] 相同的包.
* @param P 期待的包
* @param P 期待的包
* @param handler 处理期待的包
* @param handler 处理期待的包
*
*
* @see Bot.withSession 转换接收器 (receiver, 即 `this` 的指向) 为 [BotSession]
* @see Bot.withSession 转换接收器 (receiver, 即 `this` 的指向) 为 [BotSession]
*/
*/
suspend
inline
fun
<
reified
P
:
ServerPacket
,
R
>
OutgoingPacket
.
sendAndExpect
(
noinline
handler
:
suspend
(
P
)
->
R
):
CompletableDeferred
<
R
>
{
suspend
inline
fun
<
reified
P
:
ServerPacket
,
R
>
OutgoingPacket
.
sendAndExpect
(
checkSequence
:
Boolean
=
true
,
noinline
handler
:
suspend
(
P
)
->
R
):
CompletableDeferred
<
R
>
{
val
deferred
:
CompletableDeferred
<
R
>
=
CompletableDeferred
(
coroutineContext
[
Job
])
val
deferred
:
CompletableDeferred
<
R
>
=
CompletableDeferred
(
coroutineContext
[
Job
])
bot
.
network
.
addHandler
(
TemporaryPacketHandler
(
P
::
class
,
deferred
,
this
@BotSession
).
also
{
bot
.
network
.
addHandler
(
TemporaryPacketHandler
(
P
::
class
,
deferred
,
this
@BotSession
,
checkSequence
).
also
{
it
.
toSend
(
this
)
it
.
toSend
(
this
)
it
.
onExpect
(
handler
)
it
.
onExpect
(
handler
)
})
})
...
@@ -91,7 +92,7 @@ class BotSession(
...
@@ -91,7 +92,7 @@ class BotSession(
* 发送一个数据包, 并期待接受一个特定的 [ServerPacket][P].
* 发送一个数据包, 并期待接受一个特定的 [ServerPacket][P].
* 您将能从本函数的返回值 [CompletableDeferred] 接收到所期待的 [P]
* 您将能从本函数的返回值 [CompletableDeferred] 接收到所期待的 [P]
*/
*/
suspend
inline
fun
<
reified
P
:
ServerPacket
>
OutgoingPacket
.
sendAndExpect
(
):
CompletableDeferred
<
P
>
=
sendAndExpect
<
P
,
P
>
{
it
}
suspend
inline
fun
<
reified
P
:
ServerPacket
>
OutgoingPacket
.
sendAndExpect
(
checkSequence
:
Boolean
=
true
):
CompletableDeferred
<
P
>
=
sendAndExpect
<
P
,
P
>(
checkSequence
)
{
it
}
suspend
inline
fun
OutgoingPacket
.
send
()
=
socket
.
sendPacket
(
this
)
suspend
inline
fun
OutgoingPacket
.
send
()
=
socket
.
sendPacket
(
this
)
}
}
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/handler/TemporaryPacketHandler.kt
View file @
eb024494
...
@@ -22,7 +22,8 @@ import kotlin.reflect.KClass
...
@@ -22,7 +22,8 @@ import kotlin.reflect.KClass
class
TemporaryPacketHandler
<
P
:
ServerPacket
,
R
>(
class
TemporaryPacketHandler
<
P
:
ServerPacket
,
R
>(
private
val
expectationClass
:
KClass
<
P
>,
private
val
expectationClass
:
KClass
<
P
>,
private
val
deferred
:
CompletableDeferred
<
R
>,
private
val
deferred
:
CompletableDeferred
<
R
>,
private
val
fromSession
:
BotSession
private
val
fromSession
:
BotSession
,
private
val
checkSequence
:
Boolean
)
{
)
{
private
lateinit
var
toSend
:
OutgoingPacket
private
lateinit
var
toSend
:
OutgoingPacket
...
@@ -45,7 +46,9 @@ class TemporaryPacketHandler<P : ServerPacket, R>(
...
@@ -45,7 +46,9 @@ class TemporaryPacketHandler<P : ServerPacket, R>(
session
.
socket
.
sendPacket
(
toSend
)
session
.
socket
.
sendPacket
(
toSend
)
}
}
suspend
fun
filter
(
session
:
BotSession
,
packet
:
ServerPacket
):
Boolean
=
expectationClass
.
isInstance
(
packet
)
&&
session
===
this
.
fromSession
@ExperimentalUnsignedTypes
fun
filter
(
session
:
BotSession
,
packet
:
ServerPacket
):
Boolean
=
expectationClass
.
isInstance
(
packet
)
&&
session
===
this
.
fromSession
&&
if
(
checkSequence
)
packet
.
sequenceId
==
toSend
.
sequenceId
else
true
suspend
fun
doReceive
(
packet
:
ServerPacket
)
{
suspend
fun
doReceive
(
packet
:
ServerPacket
)
{
@Suppress
(
"UNCHECKED_CAST"
)
@Suppress
(
"UNCHECKED_CAST"
)
...
...
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