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
eeb1f89d
Commit
eeb1f89d
authored
Apr 14, 2020
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Simplify DSL
parent
b6677e1e
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
139 additions
and
106 deletions
+139
-106
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscribeMessages.kt
...monMain/kotlin/net.mamoe.mirai/event/subscribeMessages.kt
+139
-106
No files found.
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscribeMessages.kt
View file @
eeb1f89d
...
@@ -28,6 +28,7 @@ import net.mamoe.mirai.message.data.At
...
@@ -28,6 +28,7 @@ import net.mamoe.mirai.message.data.At
import
net.mamoe.mirai.message.data.Message
import
net.mamoe.mirai.message.data.Message
import
net.mamoe.mirai.message.data.firstIsInstance
import
net.mamoe.mirai.message.data.firstIsInstance
import
net.mamoe.mirai.message.data.firstIsInstanceOrNull
import
net.mamoe.mirai.message.data.firstIsInstanceOrNull
import
net.mamoe.mirai.utils.PlannedRemoval
import
net.mamoe.mirai.utils.SinceMirai
import
net.mamoe.mirai.utils.SinceMirai
import
kotlin.contracts.ExperimentalContracts
import
kotlin.contracts.ExperimentalContracts
import
kotlin.contracts.InvocationKind
import
kotlin.contracts.InvocationKind
...
@@ -36,6 +37,7 @@ import kotlin.coroutines.CoroutineContext
...
@@ -36,6 +37,7 @@ import kotlin.coroutines.CoroutineContext
import
kotlin.coroutines.EmptyCoroutineContext
import
kotlin.coroutines.EmptyCoroutineContext
import
kotlin.js.JsName
import
kotlin.js.JsName
import
kotlin.jvm.JvmName
import
kotlin.jvm.JvmName
import
kotlin.jvm.JvmOverloads
typealias
MessagePacketSubscribersBuilder
=
MessageSubscribersBuilder
<
ContactMessage
,
Listener
<
ContactMessage
>,
Unit
,
Unit
>
typealias
MessagePacketSubscribersBuilder
=
MessageSubscribersBuilder
<
ContactMessage
,
Listener
<
ContactMessage
>,
Unit
,
Unit
>
...
@@ -448,14 +450,6 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -448,14 +450,6 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
}
}
/** 如果消息内容 `==` [equals] */
/** 如果消息内容 `==` [equals] */
@MessageDsl
@JvmName
(
"case1"
)
@JsName
(
"case1"
)
@SinceMirai
(
"0.29.0"
)
infix
fun
String
.
`->`(
block
:
MessageListener
<
M
,
R
>):
Ret
{
return
case
(
this
,
onEvent
=
block
)
}
/** 如果消息内容 `==` [equals] */
/** 如果消息内容 `==` [equals] */
@MessageDsl
@MessageDsl
@SinceMirai
(
"0.37.1"
)
@SinceMirai
(
"0.37.1"
)
...
@@ -476,9 +470,9 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -476,9 +470,9 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
onEvent
:
MessageListener
<
M
,
R
>
onEvent
:
MessageListener
<
M
,
R
>
):
Ret
{
):
Ret
{
val
toCheck
=
if
(
trim
)
equals
.
trim
()
else
equals
val
toCheck
=
if
(
trim
)
equals
.
trim
()
else
equals
return
content
({
(
if
(
trim
)
it
.
trim
()
else
it
).
equals
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
,
{
return
content
({
(
if
(
trim
)
it
.
trim
()
else
it
).
equals
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
)
{
onEvent
(
this
,
this
.
message
.
contentToString
())
onEvent
(
this
,
this
.
message
.
contentToString
())
}
)
}
}
}
/** 如果消息内容包含 [sub] */
/** 如果消息内容包含 [sub] */
...
@@ -497,66 +491,34 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -497,66 +491,34 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
):
Ret
{
):
Ret
{
return
if
(
trim
)
{
return
if
(
trim
)
{
val
toCheck
=
sub
.
trim
()
val
toCheck
=
sub
.
trim
()
content
({
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
,
{
content
({
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
)
{
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
}
)
}
}
else
{
}
else
{
content
({
it
.
contains
(
sub
,
ignoreCase
=
ignoreCase
)
}
,
{
content
({
it
.
contains
(
sub
,
ignoreCase
=
ignoreCase
)
}
)
{
onEvent
(
this
,
this
.
message
.
contentToString
())
onEvent
(
this
,
this
.
message
.
contentToString
())
}
)
}
}
}
}
}
/** 如果消息内容包含 [sub] */
/** 如果消息内容包含 [sub] */
@JvmOverloads
@MessageDsl
@MessageDsl
fun
containsAny
(
vararg
sub
:
String
):
ListeningFilter
=
content
{
sub
.
any
{
item
->
item
in
it
}
}
fun
containsAny
(
vararg
sub
:
String
,
ignoreCase
:
Boolean
=
false
,
trim
:
Boolean
=
true
):
ListeningFilter
=
if
(
trim
)
{
/** 如果消息内容包含 [sub] 中的任意一个元素 */
@MessageDsl
fun
containsAny
(
vararg
sub
:
String
,
ignoreCase
:
Boolean
=
false
,
trim
:
Boolean
=
true
,
onEvent
:
MessageListener
<
M
,
R
>
):
Ret
{
return
if
(
trim
)
{
val
list
=
sub
.
map
{
it
.
trim
()
}
val
list
=
sub
.
map
{
it
.
trim
()
}
content
({
content
{
list
.
any
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
}
list
.
any
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
}
else
content
{
sub
.
any
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
}
},
{
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
})
}
else
{
content
({
sub
.
any
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
},
{
onEvent
(
this
,
this
.
message
.
contentToString
())
})
}
}
/** 如果消息内容包含 [sub] */
/** 如果消息内容包含 [sub] */
@JvmOverloads
@MessageDsl
@MessageDsl
fun
containsAll
(
vararg
sub
:
String
):
ListeningFilter
=
content
{
sub
.
all
{
item
->
item
in
it
}
}
fun
containsAll
(
vararg
sub
:
String
,
ignoreCase
:
Boolean
=
false
,
trim
:
Boolean
=
true
):
ListeningFilter
=
if
(
trim
)
{
/**
* 如果消息内容包含 [sub] 中的任意一个元素
*/
@MessageDsl
fun
containsAll
(
vararg
sub
:
String
,
ignoreCase
:
Boolean
=
false
,
trim
:
Boolean
=
true
,
onEvent
:
MessageListener
<
M
,
R
>
):
Ret
{
return
if
(
trim
)
{
val
list
=
sub
.
map
{
it
.
trim
()
}
val
list
=
sub
.
map
{
it
.
trim
()
}
content
({
list
.
all
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
},
content
{
list
.
all
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
}
{
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
})
}
else
{
}
else
{
content
({
sub
.
all
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
},
content
{
sub
.
all
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
}
{
onEvent
(
this
,
this
.
message
.
contentToString
())
})
}
}
}
/** 如果消息的前缀是 [prefix] */
/** 如果消息的前缀是 [prefix] */
...
@@ -576,15 +538,13 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -576,15 +538,13 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
):
Ret
{
):
Ret
{
return
if
(
trim
)
{
return
if
(
trim
)
{
val
toCheck
=
prefix
.
trim
()
val
toCheck
=
prefix
.
trim
()
content
({
it
.
trimStart
().
startsWith
(
toCheck
)
}
,
{
content
({
it
.
trimStart
().
startsWith
(
toCheck
)
}
)
{
if
(
removePrefix
)
this
.
onEvent
(
this
.
message
.
contentToString
().
substringAfter
(
toCheck
).
trim
())
if
(
removePrefix
)
this
.
onEvent
(
this
.
message
.
contentToString
().
substringAfter
(
toCheck
).
trim
())
else
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
else
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
})
}
}
else
{
}
else
content
({
it
.
startsWith
(
prefix
)
})
{
content
({
it
.
startsWith
(
prefix
)
},
{
if
(
removePrefix
)
this
.
onEvent
(
this
.
message
.
contentToString
().
removePrefix
(
prefix
))
if
(
removePrefix
)
this
.
onEvent
(
this
.
message
.
contentToString
().
removePrefix
(
prefix
))
else
onEvent
(
this
,
this
.
message
.
contentToString
())
else
onEvent
(
this
,
this
.
message
.
contentToString
())
})
}
}
}
}
...
@@ -602,15 +562,15 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -602,15 +562,15 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
):
Ret
{
):
Ret
{
return
if
(
trim
)
{
return
if
(
trim
)
{
val
toCheck
=
suffix
.
trim
()
val
toCheck
=
suffix
.
trim
()
content
({
it
.
trimEnd
().
endsWith
(
toCheck
)
}
,
{
content
({
it
.
trimEnd
().
endsWith
(
toCheck
)
}
)
{
if
(
removeSuffix
)
this
.
onEvent
(
this
.
message
.
contentToString
().
removeSuffix
(
toCheck
).
trim
())
if
(
removeSuffix
)
this
.
onEvent
(
this
.
message
.
contentToString
().
removeSuffix
(
toCheck
).
trim
())
else
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
else
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
}
)
}
}
else
{
}
else
{
content
({
it
.
endsWith
(
suffix
)
}
,
{
content
({
it
.
endsWith
(
suffix
)
}
)
{
if
(
removeSuffix
)
this
.
onEvent
(
this
.
message
.
contentToString
().
removeSuffix
(
suffix
))
if
(
removeSuffix
)
this
.
onEvent
(
this
.
message
.
contentToString
().
removeSuffix
(
suffix
))
else
onEvent
(
this
,
this
.
message
.
contentToString
())
else
onEvent
(
this
,
this
.
message
.
contentToString
())
}
)
}
}
}
}
}
...
@@ -618,18 +578,13 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -618,18 +578,13 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
@MessageDsl
@MessageDsl
fun
sentBy
(
name
:
String
):
ListeningFilter
=
content
{
this
is
GroupMessage
&&
this
.
senderName
==
name
}
fun
sentBy
(
name
:
String
):
ListeningFilter
=
content
{
this
is
GroupMessage
&&
this
.
senderName
==
name
}
/** 如果是这个人发的消息. 消息目前只会是群消息 */
@MessageDsl
fun
sentBy
(
name
:
String
,
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
({
(
this
as
?
GroupMessage
)
?.
senderName
==
name
},
onEvent
)
/** 如果是这个人发的消息. 消息可以是好友消息也可以是群消息 */
/** 如果是这个人发的消息. 消息可以是好友消息也可以是群消息 */
@MessageDsl
@MessageDsl
fun
sentBy
(
qq
:
Long
):
ListeningFilter
=
content
{
sender
.
id
==
qq
}
fun
sentBy
(
qq
:
Long
):
ListeningFilter
=
content
{
sender
.
id
==
qq
}
/** 如果是这个人发的消息. 消息可以是好友消息也可以是群消息 */
/** 如果是这个人发的消息. 消息可以是好友消息也可以是群消息 */
@MessageDsl
@MessageDsl
fun
sentBy
(
qq
:
Long
,
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
({
this
.
sender
.
id
==
qq
},
onEvent
)
fun
sentBy
(
qq
:
Long
,
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
{
this
.
sender
.
id
==
qq
}.
invoke
(
onEvent
)
/** 如果是好友发来的消息 */
/** 如果是好友发来的消息 */
@MessageDsl
@MessageDsl
...
@@ -651,41 +606,21 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -651,41 +606,21 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
fun
sentByOperator
():
ListeningFilter
=
fun
sentByOperator
():
ListeningFilter
=
content
{
this
is
GroupMessage
&&
sender
.
permission
.
isOperator
()
}
content
{
this
is
GroupMessage
&&
sender
.
permission
.
isOperator
()
}
/** 如果是管理员或群主发的消息 */
@MessageDsl
fun
sentByOperator
(
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
({
this
is
GroupMessage
&&
this
.
sender
.
isOperator
()
},
onEvent
)
/** 如果是管理员发的消息 */
/** 如果是管理员发的消息 */
@MessageDsl
@MessageDsl
fun
sentByAdministrator
():
ListeningFilter
=
fun
sentByAdministrator
():
ListeningFilter
=
content
{
this
is
GroupMessage
&&
sender
.
permission
.
isAdministrator
()
}
content
{
this
is
GroupMessage
&&
sender
.
permission
.
isAdministrator
()
}
/** 如果是管理员发的消息 */
@MessageDsl
fun
sentByAdministrator
(
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
({
this
is
GroupMessage
&&
this
.
sender
.
isAdministrator
()
},
onEvent
)
/** 如果是群主发的消息 */
/** 如果是群主发的消息 */
@MessageDsl
@MessageDsl
fun
sentByOwner
():
ListeningFilter
=
fun
sentByOwner
():
ListeningFilter
=
content
{
this
is
GroupMessage
&&
sender
.
isOwner
()
}
content
{
this
is
GroupMessage
&&
sender
.
isOwner
()
}
/** 如果是群主发的消息 */
@MessageDsl
fun
sentByOwner
(
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
({
this
is
GroupMessage
&&
this
.
sender
.
isOwner
()
},
onEvent
)
/** 如果是来自这个群的消息 */
/** 如果是来自这个群的消息 */
@MessageDsl
@MessageDsl
fun
sentFrom
(
groupId
:
Long
):
ListeningFilter
=
fun
sentFrom
(
groupId
:
Long
):
ListeningFilter
=
content
{
this
is
GroupMessage
&&
group
.
id
==
groupId
}
content
{
this
is
GroupMessage
&&
group
.
id
==
groupId
}
/** 如果是来自这个群的消息, 就执行 [onEvent] */
@MessageDsl
fun
sentFrom
(
groupId
:
Long
,
onEvent
:
MessageListener
<
GroupMessage
,
R
>):
Ret
=
content
({
this
is
GroupMessage
&&
this
.
group
.
id
==
groupId
})
{
onEvent
(
this
as
GroupMessage
,
it
)
}
/** 如果消息内容包含目标为 [Bot] 的 [At] */
/** 如果消息内容包含目标为 [Bot] 的 [At] */
@MessageDsl
@MessageDsl
fun
atBot
():
ListeningFilter
=
fun
atBot
():
ListeningFilter
=
...
@@ -695,18 +630,18 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -695,18 +630,18 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
@MessageDsl
@MessageDsl
@SinceMirai
(
"0.30.0"
)
@SinceMirai
(
"0.30.0"
)
fun
atBot
(
onEvent
:
@MessageDsl
suspend
M
.(
String
)
->
R
):
Ret
=
fun
atBot
(
onEvent
:
@MessageDsl
suspend
M
.(
String
)
->
R
):
Ret
=
content
({
message
.
firstIsInstanceOrNull
<
At
>()
?.
target
==
bot
.
id
},
content
{
message
.
firstIsInstanceOrNull
<
At
>()
?.
target
==
bot
.
id
}.
invoke
{
{
onEvent
.
invoke
(
this
,
message
.
contentToString
())
})
onEvent
.
invoke
(
this
,
message
.
contentToString
())
}
/** 如果消息内容包含 [N] 类型的 [Message] */
@MessageDsl
inline
fun
<
reified
N
:
Message
>
has
():
ListeningFilter
=
content
{
message
.
any
{
it
is
N
}
}
/** 如果消息内容包含 [M] 类型的 [Message], 就执行 [onEvent] */
@MessageDsl
@MessageDsl
@SinceMirai
(
"0.30.0"
)
@SinceMirai
(
"0.30.0"
)
inline
fun
<
reified
N
:
Message
>
has
(
noinline
onEvent
:
@MessageDsl
suspend
M
.(
N
)
->
R
):
Ret
=
inline
fun
<
reified
N
:
Message
>
has
(
noinline
onEvent
:
@MessageDsl
suspend
M
.(
N
)
->
R
):
Ret
=
content
({
message
.
any
{
it
is
N
}
},
{
onEvent
.
invoke
(
this
,
message
.
firstIsInstance
())
})
content
{
message
.
any
{
it
is
N
}
}.
invoke
{
onEvent
.
invoke
(
this
,
message
.
firstIsInstance
())
}
/** 如果消息内容包含 [N] 类型的 [Message] */
@MessageDsl
inline
fun
<
reified
N
:
Message
>
has
():
ListeningFilter
=
content
{
message
.
any
{
it
is
N
}
}
/** 如果 [mapper] 返回值非空, 就执行 [onEvent] */
/** 如果 [mapper] 返回值非空, 就执行 [onEvent] */
@MessageDsl
@MessageDsl
...
@@ -718,11 +653,6 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -718,11 +653,6 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
@MessageDsl
@MessageDsl
fun
content
(
filter
:
M
.(
String
)
->
Boolean
):
ListeningFilter
=
newListeningFilter
(
filter
)
fun
content
(
filter
:
M
.(
String
)
->
Boolean
):
ListeningFilter
=
newListeningFilter
(
filter
)
/** 如果 [filter] 返回 `true` 就执行 `onEvent`*/
@MessageDsl
fun
content
(
filter
:
M
.(
String
)
->
Boolean
,
onEvent
:
MessageListener
<
M
,
RR
>):
Ret
=
subscriber
(
filter
)
{
onEvent
(
this
,
it
)
}
/** 如果消息内容可由正则表达式匹配([Regex.matchEntire]) */
/** 如果消息内容可由正则表达式匹配([Regex.matchEntire]) */
@MessageDsl
@MessageDsl
fun
matching
(
regex
:
Regex
):
ListeningFilter
=
content
{
regex
.
matchEntire
(
it
)
!=
null
}
fun
matching
(
regex
:
Regex
):
ListeningFilter
=
content
{
regex
.
matchEntire
(
it
)
!=
null
}
...
@@ -794,6 +724,8 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -794,6 +724,8 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
*
*
* @param replier 若返回 [Message] 则直接发送; 若返回 [Unit] 则不回复; 其他类型则 [Any.toString] 后回复
* @param replier 若返回 [Message] 则直接发送; 若返回 [Unit] 则不回复; 其他类型则 [Any.toString] 后回复
*/
*/
@PlannedRemoval
(
"1.0.0"
)
@Deprecated
(
"use startsWith on your own"
,
replaceWith
=
ReplaceWith
(
"startsWith(this, true, true, replier)"
))
@MessageDsl
@MessageDsl
open
infix
fun
String
.
startsWithReply
(
replier
:
@MessageDsl
suspend
M
.(
String
)
->
Any
?):
Ret
{
open
infix
fun
String
.
startsWithReply
(
replier
:
@MessageDsl
suspend
M
.(
String
)
->
Any
?):
Ret
{
val
toCheck
=
this
.
trimStart
()
val
toCheck
=
this
.
trimStart
()
...
@@ -869,6 +801,107 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
...
@@ -869,6 +801,107 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
return
stub
return
stub
}
}
////////////////////
//// DEPRECATED ////
////////////////////
@PlannedRemoval
(
"1.0.0"
)
@Deprecated
(
"for binary compatibility"
,
level
=
DeprecationLevel
.
HIDDEN
)
@MessageDsl
fun
contains
(
message
:
Message
,
onEvent
:
MessageListener
<
M
,
R
>):
Ret
{
return
content
({
this
.
message
.
any
{
it
==
message
}
},
onEvent
)
}
@MessageDsl
@JvmName
(
"case1"
)
@JsName
(
"case1"
)
@PlannedRemoval
(
"1.0.0"
)
@SinceMirai
(
"0.29.0"
)
@Deprecated
(
"use String.invoke"
,
level
=
DeprecationLevel
.
ERROR
,
replaceWith
=
ReplaceWith
(
"this(block)"
))
infix
fun
String
.
`->`(
block
:
MessageListener
<
M
,
R
>):
Ret
{
return
this
(
block
)
}
@PlannedRemoval
(
"1.0.0"
)
@Deprecated
(
"for binary compatibility"
,
level
=
DeprecationLevel
.
HIDDEN
)
@MessageDsl
fun
containsAll
(
vararg
sub
:
String
,
ignoreCase
:
Boolean
=
false
,
trim
:
Boolean
=
true
,
onEvent
:
MessageListener
<
M
,
R
>
):
Ret
{
return
if
(
trim
)
{
val
list
=
sub
.
map
{
it
.
trim
()
}
content
({
list
.
all
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
},
{
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
})
}
else
{
content
({
sub
.
all
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
},
{
onEvent
(
this
,
this
.
message
.
contentToString
())
})
}
}
@PlannedRemoval
(
"1.0.0"
)
@Deprecated
(
"for binary compatibility"
,
level
=
DeprecationLevel
.
HIDDEN
)
@MessageDsl
fun
containsAny
(
vararg
sub
:
String
,
ignoreCase
:
Boolean
=
false
,
trim
:
Boolean
=
true
,
onEvent
:
MessageListener
<
M
,
R
>
):
Ret
{
return
if
(
trim
)
{
val
list
=
sub
.
map
{
it
.
trim
()
}
content
({
list
.
any
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
},
{
onEvent
(
this
,
this
.
message
.
contentToString
().
trim
())
})
}
else
{
content
({
sub
.
any
{
toCheck
->
it
.
contains
(
toCheck
,
ignoreCase
=
ignoreCase
)
}
},
{
onEvent
(
this
,
this
.
message
.
contentToString
())
})
}
}
@PlannedRemoval
(
"1.0.0"
)
@Deprecated
(
"for binary compatibility"
,
level
=
DeprecationLevel
.
HIDDEN
)
@MessageDsl
fun
sentBy
(
name
:
String
,
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
({
(
this
as
?
GroupMessage
)
?.
senderName
==
name
},
onEvent
)
@PlannedRemoval
(
"1.0.0"
)
@Deprecated
(
"for binary compatibility"
,
level
=
DeprecationLevel
.
HIDDEN
)
@MessageDsl
fun
sentByOperator
(
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
({
this
is
GroupMessage
&&
this
.
sender
.
isOperator
()
},
onEvent
)
@PlannedRemoval
(
"1.0.0"
)
@Deprecated
(
"for binary compatibility"
,
level
=
DeprecationLevel
.
HIDDEN
)
@MessageDsl
fun
sentByAdministrator
(
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
({
this
is
GroupMessage
&&
this
.
sender
.
isAdministrator
()
},
onEvent
)
@PlannedRemoval
(
"1.0.0"
)
@Deprecated
(
"for binary compatibility"
,
level
=
DeprecationLevel
.
HIDDEN
)
@MessageDsl
fun
sentByOwner
(
onEvent
:
MessageListener
<
M
,
R
>):
Ret
=
content
({
this
is
GroupMessage
&&
this
.
sender
.
isOwner
()
},
onEvent
)
@PlannedRemoval
(
"1.0.0"
)
@Deprecated
(
"for binary compatibility"
,
level
=
DeprecationLevel
.
HIDDEN
)
@MessageDsl
fun
sentFrom
(
groupId
:
Long
,
onEvent
:
MessageListener
<
GroupMessage
,
R
>):
Ret
=
content
({
this
is
GroupMessage
&&
this
.
group
.
id
==
groupId
})
{
onEvent
(
this
as
GroupMessage
,
it
)
}
@MessageDsl
internal
fun
content
(
filter
:
M
.(
String
)
->
Boolean
,
onEvent
:
MessageListener
<
M
,
RR
>):
Ret
=
subscriber
(
filter
)
{
onEvent
(
this
,
it
)
}
}
}
/**
/**
...
...
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