mirror of
https://github.com/mamoe/mirai.git
synced 2025-04-25 04:50:26 +08:00
Rename toChain
to asMessageChain
, add more java-friendly apis
This commit is contained in:
parent
b62bb72b04
commit
8042249f51
mirai-core-qqandroid/src/jvmTest/kotlin/test
mirai-core/src/commonMain/kotlin/net.mamoe.mirai
@ -7,8 +7,11 @@
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
@file:Suppress("EXPERIMENTAL_API_USAGE")
|
||||
|
||||
package test
|
||||
|
||||
import net.mamoe.mirai.utils.MiraiDebugAPI
|
||||
import net.mamoe.mirai.utils.cryptor.ProtoType
|
||||
import net.mamoe.mirai.utils.cryptor.protoFieldNumber
|
||||
import java.io.File
|
||||
@ -364,6 +367,7 @@ fun String.getNumericalValue(): Int? {
|
||||
return this.filter { it in '0'..'9' }.toDoubleOrNull()?.toInt()
|
||||
}
|
||||
|
||||
@UseExperimental(MiraiDebugAPI::class)
|
||||
fun ProtoType.mapToKotlinType(): String {
|
||||
return when (this) {
|
||||
ProtoType.VAR_INT -> "Int"
|
||||
|
@ -140,7 +140,7 @@ fun Contact.recallIn(
|
||||
*/
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
suspend inline fun <C : Contact> C.sendMessage(message: Message): MessageReceipt<C> =
|
||||
sendMessage(message.toChain()) as? MessageReceipt<C> ?: error("Internal class cast mistake")
|
||||
sendMessage(message.asMessageChain()) as? MessageReceipt<C> ?: error("Internal class cast mistake")
|
||||
|
||||
/**
|
||||
* @see Contact.sendMessage
|
||||
|
@ -76,10 +76,14 @@ abstract class MessagePacketBase<TSender : QQ, TSubject : Contact> : Packet, Bot
|
||||
* 对于好友消息事件, 这个方法将会给好友 ([subject]) 发送消息
|
||||
* 对于群消息事件, 这个方法将会给群 ([subject]) 发送消息
|
||||
*/
|
||||
suspend inline fun reply(message: MessageChain): MessageReceipt<TSubject> = subject.sendMessage(message) as MessageReceipt<TSubject>
|
||||
suspend inline fun reply(message: MessageChain): MessageReceipt<TSubject> =
|
||||
subject.sendMessage(message) as MessageReceipt<TSubject>
|
||||
|
||||
suspend inline fun reply(message: Message): MessageReceipt<TSubject> = subject.sendMessage(message.toChain()) as MessageReceipt<TSubject>
|
||||
suspend inline fun reply(plain: String): MessageReceipt<TSubject> = subject.sendMessage(plain.toMessage().toChain()) as MessageReceipt<TSubject>
|
||||
suspend inline fun reply(message: Message): MessageReceipt<TSubject> =
|
||||
subject.sendMessage(message.asMessageChain()) as MessageReceipt<TSubject>
|
||||
|
||||
suspend inline fun reply(plain: String): MessageReceipt<TSubject> =
|
||||
subject.sendMessage(plain.toMessage().asMessageChain()) as MessageReceipt<TSubject>
|
||||
|
||||
@JvmName("reply1")
|
||||
suspend inline fun String.reply(): MessageReceipt<TSubject> = reply(this)
|
||||
|
@ -107,10 +107,10 @@ inline val MessageReceipt<*>.sourceSequenceId: Int get() = this.source.sequenceI
|
||||
inline val MessageReceipt<*>.sourceTime: Long get() = this.source.time
|
||||
|
||||
suspend inline fun MessageReceipt<out Contact>.quoteReply(message: Message) {
|
||||
return this.quoteReply(message.toChain())
|
||||
return this.quoteReply(message.asMessageChain())
|
||||
}
|
||||
|
||||
suspend inline fun MessageReceipt<out Contact>.quoteReply(message: String) {
|
||||
return this.quoteReply(message.toMessage().toChain())
|
||||
return this.quoteReply(message.toMessage().asMessageChain())
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ import kotlin.reflect.KProperty
|
||||
* 要获取更多信息, 请查看 [Message]
|
||||
*
|
||||
* @see buildMessageChain 构造一个 [MessageChain]
|
||||
* @see toChain 将单个 [Message] 转换为 [MessageChain]
|
||||
* @see asMessageChain 将单个 [Message] 转换为 [MessageChain]
|
||||
* @see asMessageChain 将 [Iterable] 或 [Sequence] 委托为 [MessageChain]
|
||||
*
|
||||
* @see foreachContent 遍历内容
|
||||
@ -188,7 +188,7 @@ inline fun <reified T : Message> MessageChain.orNull(): OrNullDelegate<T?> = OrN
|
||||
inline fun <reified T : Message?> MessageChain.orElse(
|
||||
lazyDefault: () -> T
|
||||
): OrNullDelegate<T> =
|
||||
OrNullDelegate<T>(this.firstOrNull<T>() ?: lazyDefault())
|
||||
OrNullDelegate(this.firstOrNull<T>() ?: lazyDefault())
|
||||
|
||||
// endregion delegate
|
||||
|
||||
@ -204,12 +204,15 @@ inline fun <reified T : Message?> MessageChain.orElse(
|
||||
@JvmName("newChain")
|
||||
@JsName("newChain")
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun Message.toChain(): MessageChain = when (this) {
|
||||
fun Message.asMessageChain(): MessageChain = when (this) {
|
||||
is MessageChain -> this
|
||||
is CombinedMessage -> (this as Iterable<Message>).asMessageChain()
|
||||
else -> SingleMessageChainImpl(this as SingleMessage)
|
||||
}
|
||||
|
||||
@Deprecated("use asMessageChain instead", ReplaceWith("this.asMessageChain()"), DeprecationLevel.ERROR)
|
||||
fun Message.toChain(): MessageChain = this.asMessageChain()
|
||||
|
||||
/**
|
||||
* 直接将 [this] 委托为一个 [MessageChain]
|
||||
*/
|
||||
@ -220,7 +223,7 @@ fun Collection<SingleMessage>.asMessageChain(): MessageChain = MessageChainImplB
|
||||
* 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain]
|
||||
*/
|
||||
@JvmName("newChain")
|
||||
@JsName("newChain")
|
||||
// @JsName("newChain")
|
||||
fun Collection<Message>.asMessageChain(): MessageChain = MessageChainImplBySequence(this.flatten())
|
||||
|
||||
/**
|
||||
@ -235,7 +238,7 @@ inline fun MessageChain.asMessageChain(): MessageChain = this // 避免套娃
|
||||
* 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain]
|
||||
*/
|
||||
@JvmName("newChain")
|
||||
@JsName("newChain")
|
||||
// @JsName("newChain")
|
||||
fun Iterable<Message>.asMessageChain(): MessageChain = MessageChainImplBySequence(this.flatten())
|
||||
|
||||
/**
|
||||
@ -248,9 +251,29 @@ fun Sequence<SingleMessage>.asMessageChain(): MessageChain = MessageChainImplByS
|
||||
* 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain]
|
||||
*/
|
||||
@JvmName("newChain")
|
||||
@JsName("newChain")
|
||||
// @JsName("newChain")
|
||||
fun Sequence<Message>.asMessageChain(): MessageChain = MessageChainImplBySequence(this.flatten())
|
||||
|
||||
/**
|
||||
* 构造一个 [MessageChain]
|
||||
* 为提供更好的 Java API.
|
||||
*/
|
||||
@Suppress("FunctionName")
|
||||
@JvmName("newChain")
|
||||
fun _____newChain______(vararg messages: Message): MessageChain {
|
||||
return messages.asIterable().asMessageChain()
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造一个 [MessageChain]
|
||||
* 为提供更好的 Java API.
|
||||
*/
|
||||
@Suppress("FunctionName")
|
||||
@JvmName("newChain")
|
||||
fun _____newChain______(messages: String): MessageChain {
|
||||
return messages.toMessage().asMessageChain()
|
||||
}
|
||||
|
||||
/**
|
||||
* 扁平化消息序列.
|
||||
*
|
||||
@ -265,8 +288,8 @@ fun Sequence<Message>.asMessageChain(): MessageChain = MessageChainImplBySequenc
|
||||
*/
|
||||
fun Iterable<Message>.flatten(): Sequence<SingleMessage> = asSequence().flatten()
|
||||
|
||||
@JsName("flatten1") // avoid platform declare clash
|
||||
@JvmName("flatten1")
|
||||
// @JsName("flatten1")
|
||||
@JvmName("flatten1")// avoid platform declare clash
|
||||
@JvmSynthetic
|
||||
fun Iterable<SingleMessage>.flatten(): Sequence<SingleMessage> = this.asSequence() // fast path
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user