mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-02 22:02:25 +08:00
Add atBot
DSL
This commit is contained in:
parent
c5df5fa122
commit
e279e79b63
@ -24,8 +24,10 @@ import net.mamoe.mirai.message.ContactMessage
|
|||||||
import net.mamoe.mirai.message.FriendMessage
|
import net.mamoe.mirai.message.FriendMessage
|
||||||
import net.mamoe.mirai.message.GroupMessage
|
import net.mamoe.mirai.message.GroupMessage
|
||||||
import net.mamoe.mirai.message.TempMessage
|
import net.mamoe.mirai.message.TempMessage
|
||||||
|
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.utils.SinceMirai
|
import net.mamoe.mirai.utils.SinceMirai
|
||||||
import kotlin.contracts.ExperimentalContracts
|
import kotlin.contracts.ExperimentalContracts
|
||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
@ -677,6 +679,18 @@ open class MessageSubscribersBuilder<M : ContactMessage, out Ret, R : RR, RR>(
|
|||||||
fun sentFrom(groupId: Long, onEvent: MessageListener<GroupMessage, R>): Ret =
|
fun sentFrom(groupId: Long, onEvent: MessageListener<GroupMessage, R>): Ret =
|
||||||
content({ this is GroupMessage && this.group.id == groupId }) { onEvent(this as GroupMessage, it) }
|
content({ this is GroupMessage && this.group.id == groupId }) { onEvent(this as GroupMessage, it) }
|
||||||
|
|
||||||
|
/** 如果消息内容包含目标为 [Bot] 的 [At] */
|
||||||
|
@MessageDsl
|
||||||
|
fun atBot(): ListeningFilter =
|
||||||
|
content { message.firstIsInstanceOrNull<At>()?.target == bot.id }
|
||||||
|
|
||||||
|
/** 如果消息内容包含目标为 [Bot] 的 [At], 就执行 [onEvent] */
|
||||||
|
@MessageDsl
|
||||||
|
@SinceMirai("0.30.0")
|
||||||
|
fun atBot(onEvent: @MessageDsl suspend M.(String) -> R): Ret =
|
||||||
|
content({ message.firstIsInstanceOrNull<At>()?.target == bot.id },
|
||||||
|
{ onEvent.invoke(this, message.contentToString()) })
|
||||||
|
|
||||||
/** 如果消息内容包含 [N] 类型的 [Message] */
|
/** 如果消息内容包含 [N] 类型的 [Message] */
|
||||||
@MessageDsl
|
@MessageDsl
|
||||||
inline fun <reified N : Message> has(): ListeningFilter = content { message.any { it is N } }
|
inline fun <reified N : Message> has(): ListeningFilter = content { message.any { it is N } }
|
||||||
|
Loading…
Reference in New Issue
Block a user