From 347168411759effd728fe0ddf0c59dca0a58fd34 Mon Sep 17 00:00:00 2001 From: Him188 Date: Wed, 22 Apr 2020 12:41:43 +0800 Subject: [PATCH] Add more DSL clauses --- .../event/MessageSubscribersBuilder.kt | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribersBuilder.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribersBuilder.kt index c2cb244cd..9a7e750dd 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribersBuilder.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribersBuilder.kt @@ -15,18 +15,13 @@ package net.mamoe.mirai.event import net.mamoe.mirai.Bot -import net.mamoe.mirai.contact.isAdministrator -import net.mamoe.mirai.contact.isOperator -import net.mamoe.mirai.contact.isOwner +import net.mamoe.mirai.contact.* import net.mamoe.mirai.event.internal.* import net.mamoe.mirai.message.ContactMessage import net.mamoe.mirai.message.FriendMessage import net.mamoe.mirai.message.GroupMessage 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.firstIsInstance -import net.mamoe.mirai.message.data.firstIsInstanceOrNull +import net.mamoe.mirai.message.data.* import net.mamoe.mirai.utils.PlannedRemoval import kotlin.js.JsName import kotlin.jvm.JvmName @@ -184,7 +179,8 @@ open class MessageSubscribersBuilder( /** [消息内容][Message.contentToString]包含 [sub] */ @MessageDsl - fun contains(sub: String): ListeningFilter = content { sub in it } + @JvmOverloads // bin comp + fun contains(sub: String, ignoreCase: Boolean = false): ListeningFilter = content { it.contains(sub, ignoreCase) } /** * [消息内容][Message.contentToString]包含 [sub] 中的任意一个元素 @@ -243,6 +239,10 @@ open class MessageSubscribersBuilder( @MessageDsl fun sentBy(qq: Long): ListeningFilter = content { sender.id == qq } + /** 如果是这个人发的消息. 消息可以是好友消息也可以是群消息 */ + @MessageDsl + fun sentBy(friend: QQ): ListeningFilter = content { sender.id == friend.id } + /** 如果是这个人发的消息. 消息可以是好友消息也可以是群消息 */ @MessageDsl fun sentBy(qq: Long, onEvent: MessageListener): Ret = content { this.sender.id == qq }.invoke(onEvent) @@ -276,10 +276,26 @@ open class MessageSubscribersBuilder( @MessageDsl fun sentFrom(groupId: Long): ListeningFilter = content { this is GroupMessage && group.id == groupId } + /** 如果是来自这个群的消息 */ + @MessageDsl + fun sentFrom(group: Group): ListeningFilter = content { this is GroupMessage && group.id == group.id } + /** [消息内容][Message.contentToString]包含目标为 [Bot] 的 [At] */ @MessageDsl fun atBot(): ListeningFilter = content { message.firstIsInstanceOrNull()?.target == bot.id } + /** [消息内容][Message.contentToString]包含 [AtAll] */ + @MessageDsl + fun atAll(): ListeningFilter = content { message.firstIsInstanceOrNull() != null } + + /** [消息内容][Message.contentToString]包含 [AtAll] */ + @MessageDsl + fun at(target: Long): ListeningFilter = content { message.firstIsInstanceOrNull()?.target == target } + + /** [消息内容][Message.contentToString]包含目标为 [target] 的 [At] */ + @MessageDsl + fun at(target: QQ): ListeningFilter = content { message.firstIsInstanceOrNull()?.target == target.id } + /** [消息内容][Message.contentToString]包含目标为 [Bot] 的 [At], 就执行 [onEvent] */ @MessageDsl fun atBot(onEvent: @MessageDsl suspend M.(String) -> R): Ret =