MessageSubscribersBuilder

open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, RR>

消息订阅构造器

See also

Parameters

M

消息类型

R

消息监听器内部的返回值

Ret

每个 DSL 函数创建监听器之后的返回值

Types

Link copied to clipboard
inner class ListeningFilter

contains, startsWith 等 DSL 创建出的监听条件, 使用 invoke 将其注册给事件

Functions

Link copied to clipboard
open fun always(onEvent: MessageListener<M, RR>): Ret

无触发条件, 每次收到消息都执行 onEvent

Link copied to clipboard
fun at(target: Long): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun at(target: User): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

消息内容包含目标为 targetAt

Link copied to clipboard
fun atAll(): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
Link copied to clipboard
fun atBot(): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

消息内容包含目标为 BotAt

fun atBot(onEvent: suspend M.(String) -> R): Ret

消息内容包含目标为 BotAt, 就执行 onEvent

Link copied to clipboard
fun case(    equals: String,     ignoreCase: Boolean = false,     trim: Boolean = true): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun case(    equals: String,     ignoreCase: Boolean = false,     trim: Boolean = true,     onEvent: MessageListener<M, R>): Ret
Link copied to clipboard
fun contains(sub: String, ignoreCase: Boolean = false): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun contains(    sub: String,     ignoreCase: Boolean = false,     trim: Boolean = true,     onEvent: MessageListener<M, R>): Ret

消息内容包含 sub 中的任意一个元素

Link copied to clipboard
fun containsAll(    vararg sub: String,     ignoreCase: Boolean = false,     trim: Boolean = true): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
Link copied to clipboard
fun containsAny(    vararg sub: String,     ignoreCase: Boolean = false,     trim: Boolean = true): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
Link copied to clipboard
open infix fun String.containsReply(reply: String): Ret

消息内容包含 this 则回复 reply

open infix fun String.containsReply(replier: suspend M.(String) -> Any?): Ret

消息内容包含 this 则执行 replier 并将其返回值回复给发信对象.

Link copied to clipboard
fun content(filter: M.(String) -> Boolean): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

如果 filter 返回 true

Link copied to clipboard
fun endsWith(suffix: String, trim: Boolean = true): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun endsWith(    suffix: String,     removeSuffix: Boolean = true,     trim: Boolean = true,     onEvent: suspend M.(String) -> R): Ret

如果消息的结尾是 suffix

Link copied to clipboard
open infix fun String.endsWithReply(replier: suspend M.(String) -> Any?): Ret

不考虑空格, 消息内容this 结尾则执行 replier 并将其返回值回复给发信对象.

Link copied to clipboard
fun finding(regex: Regex): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

消息内容可由正则表达式查找(Regex.find)

@JvmName(name = "findingExtension")
infix fun Regex.finding(block: suspend M.(MatchResult) -> R): Ret

如果消息内容Regex.find 不为空

fun finding(regex: Regex, onEvent: suspend M.(MatchResult) -> Unit): Ret

消息内容可由正则表达式查找(Regex.find), 就执行 onEvent

Link copied to clipboard
open infix fun Regex.findingReply(replier: suspend M.(MatchResult) -> Any?): Ret

消息内容可由正则表达式查找(Regex.find), 则执行 replier 并将其返回值回复给发信对象.

Link copied to clipboard
inline fun <N : SingleMessage> has(): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

消息内容包含 N 类型的 Message

inline fun <N : SingleMessage> has(noinline onEvent: suspend M.(N) -> R): Ret
Link copied to clipboard
operator fun String.invoke(block: MessageListener<M, R>): Ret
Link copied to clipboard
open fun <N : Any> mapping(mapper: M.(String) -> N?, onEvent: suspend M.(N) -> R): Ret

如果 mapper 返回值非空, 就执行 onEvent

Link copied to clipboard
fun matching(regex: Regex): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

消息内容可由正则表达式匹配(Regex.matchEntire)

@JvmName(name = "matchingExtension")
infix fun Regex.matching(block: MessageListener<M, R>): Ret
fun matching(regex: Regex, onEvent: suspend M.(MatchResult) -> Unit): Ret

消息内容可由正则表达式匹配(Regex.matchEntire), 就执行 onEvent

Link copied to clipboard
open infix fun Regex.matchingReply(replier: suspend M.(MatchResult) -> Any?): Ret

消息内容可由正则表达式匹配(Regex.matchEntire), 则执行 replier 并将其返回值回复给发信对象.

Link copied to clipboard
open fun newListeningFilter(filter: M.(String) -> Boolean): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
Link copied to clipboard
open infix fun MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>.quoteReply(toReply: String): Ret
open infix fun MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>.quoteReply(toReply: Message): Ret

启动监听器, 在 Bot 未被禁言且消息满足条件 this 时引用回复原消息

open infix fun MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>.quoteReply(replier: suspend M.(String) -> Any?): Ret

启动监听器, 在 Bot 未被禁言且消息满足条件 this 时执行 replier 并以其返回值回复原消息 返回值 Unit 将被忽略, Message 将被直接回复, 其他内容将会 Any.toString 后发送

Link copied to clipboard
open infix fun String.reply(reply: String): Ret
open infix fun String.reply(reply: Message): Ret

当发送的消息内容为 this 就回复 reply

open infix fun String.reply(replier: suspend M.(String) -> Any?): Ret

当发送的消息内容为 this 就执行并回复 replier 的返回值

open infix fun MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>.reply(toReply: String): Ret
open infix fun MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>.reply(message: Message): Ret

启动监听器, 在 Bot 未被禁言且消息满足条件 this 时回复原消息

open infix fun MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>.reply(replier: suspend M.(String) -> Any?): Ret

启动监听器, 在 Bot 未被禁言且消息满足条件 this 时执行 replier 并以其返回值回复. 返回值 Unit 将被忽略, Message 将被直接回复, 其他内容将会 Any.toString 后发送.

Link copied to clipboard
fun sentBy(qq: Long): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun sentBy(friend: User): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun sentBy(qq: Long, onEvent: MessageListener<M, R>): Ret

如果是这个人发的消息. 消息可以是好友消息也可以是群消息

fun sentBy(name: String): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

如果是这个人发的消息. 消息目前只会是群消息

Link copied to clipboard

如果是管理员发的消息

Link copied to clipboard
fun sentByFriend(): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun sentByFriend(onEvent: MessageListener<FriendMessageEvent, R>): Ret

如果是好友发来的消息

Link copied to clipboard
fun sentByGroupTemp(): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

如果是群临时会话消息

Link copied to clipboard
fun sentByOperator(): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

如果是管理员或群主发的消息

Link copied to clipboard
fun sentByOwner(): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

如果是群主发的消息

Link copied to clipboard
fun sentByStranger(): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun sentByStranger(onEvent: MessageListener<StrangerMessageEvent, R>): Ret

如果是陌生人发来的消息

Link copied to clipboard
fun sentFrom(groupId: Long): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun sentFrom(group: Group): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>

如果是来自这个群的消息

Link copied to clipboard
fun startsWith(prefix: String, trim: Boolean = true): MessageSubscribersBuilder.ListeningFilter<M, Ret, R, RR>
fun startsWith(    prefix: String,     removePrefix: Boolean = true,     trim: Boolean = true,     onEvent: suspend M.(String) -> R): Ret

如果消息的前缀是 prefix

Properties

Link copied to clipboard
val subscriber: (M.(String) -> Boolean, MessageListener<M, RR>) -> Ret

invoke 这个 lambda 时, 它将会把 消息事件的处理器 注册给事件, 并返回注册完成返回的监听器.

Inheritors

Link copied to clipboard