MessageSubscribersBuilder

消息订阅构造器

Parameters

M

消息类型

R

消息监听器内部的返回值

Ret

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

See also

Inheritors

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
Link copied to clipboard
Link copied to clipboard

消息内容包含目标为 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, 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

如果 filter 返回 true

Link copied to clipboard
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

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

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

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

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

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

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

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

Link copied to clipboard

消息内容包含 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

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

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

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

Link copied to clipboard
@JvmName(name = "matchingExtension")
infix fun Regex.matching(block: MessageListener<M, R>): Ret
Link copied to clipboard
open infix fun Regex.matchingReply(replier: suspend M.(MatchResult) -> Any?): Ret

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

Link copied to clipboard

启动监听器, 在 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 的返回值

启动监听器, 在 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, onEvent: MessageListener<M, R>): Ret

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

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

Link copied to clipboard

如果是管理员发的消息

Link copied to clipboard
Link copied to clipboard

如果是群临时会话消息

Link copied to clipboard

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

Link copied to clipboard

如果是群主发的消息

Link copied to clipboard
Link copied to clipboard

如果是来自这个群的消息

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

如果消息的前缀是 prefix

Properties

Link copied to clipboard

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