Commit 8042249f authored by Him188's avatar Him188

Rename `toChain` to `asMessageChain`, add more java-friendly apis

parent b62bb72b
...@@ -7,8 +7,11 @@ ...@@ -7,8 +7,11 @@
* https://github.com/mamoe/mirai/blob/master/LICENSE * https://github.com/mamoe/mirai/blob/master/LICENSE
*/ */
@file:Suppress("EXPERIMENTAL_API_USAGE")
package test package test
import net.mamoe.mirai.utils.MiraiDebugAPI
import net.mamoe.mirai.utils.cryptor.ProtoType import net.mamoe.mirai.utils.cryptor.ProtoType
import net.mamoe.mirai.utils.cryptor.protoFieldNumber import net.mamoe.mirai.utils.cryptor.protoFieldNumber
import java.io.File import java.io.File
...@@ -364,6 +367,7 @@ fun String.getNumericalValue(): Int? { ...@@ -364,6 +367,7 @@ fun String.getNumericalValue(): Int? {
return this.filter { it in '0'..'9' }.toDoubleOrNull()?.toInt() return this.filter { it in '0'..'9' }.toDoubleOrNull()?.toInt()
} }
@UseExperimental(MiraiDebugAPI::class)
fun ProtoType.mapToKotlinType(): String { fun ProtoType.mapToKotlinType(): String {
return when (this) { return when (this) {
ProtoType.VAR_INT -> "Int" ProtoType.VAR_INT -> "Int"
......
...@@ -140,7 +140,7 @@ fun Contact.recallIn( ...@@ -140,7 +140,7 @@ fun Contact.recallIn(
*/ */
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
suspend inline fun <C : Contact> C.sendMessage(message: Message): MessageReceipt<C> = 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 * @see Contact.sendMessage
......
...@@ -76,10 +76,14 @@ abstract class MessagePacketBase<TSender : QQ, TSubject : Contact> : Packet, Bot ...@@ -76,10 +76,14 @@ abstract class MessagePacketBase<TSender : QQ, TSubject : Contact> : Packet, Bot
* 对于好友消息事件, 这个方法将会给好友 ([subject]) 发送消息 * 对于好友消息事件, 这个方法将会给好友 ([subject]) 发送消息
* 对于群消息事件, 这个方法将会给群 ([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(message: Message): MessageReceipt<TSubject> =
suspend inline fun reply(plain: String): MessageReceipt<TSubject> = subject.sendMessage(plain.toMessage().toChain()) as 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") @JvmName("reply1")
suspend inline fun String.reply(): MessageReceipt<TSubject> = reply(this) suspend inline fun String.reply(): MessageReceipt<TSubject> = reply(this)
......
...@@ -107,10 +107,10 @@ inline val MessageReceipt<*>.sourceSequenceId: Int get() = this.source.sequenceI ...@@ -107,10 +107,10 @@ inline val MessageReceipt<*>.sourceSequenceId: Int get() = this.source.sequenceI
inline val MessageReceipt<*>.sourceTime: Long get() = this.source.time inline val MessageReceipt<*>.sourceTime: Long get() = this.source.time
suspend inline fun MessageReceipt<out Contact>.quoteReply(message: Message) { 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) { 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 ...@@ -31,7 +31,7 @@ import kotlin.reflect.KProperty
* 要获取更多信息, 请查看 [Message] * 要获取更多信息, 请查看 [Message]
* *
* @see buildMessageChain 构造一个 [MessageChain] * @see buildMessageChain 构造一个 [MessageChain]
* @see toChain 将单个 [Message] 转换为 [MessageChain] * @see asMessageChain 将单个 [Message] 转换为 [MessageChain]
* @see asMessageChain 将 [Iterable] 或 [Sequence] 委托为 [MessageChain] * @see asMessageChain 将 [Iterable] 或 [Sequence] 委托为 [MessageChain]
* *
* @see foreachContent 遍历内容 * @see foreachContent 遍历内容
...@@ -188,7 +188,7 @@ inline fun <reified T : Message> MessageChain.orNull(): OrNullDelegate<T?> = OrN ...@@ -188,7 +188,7 @@ inline fun <reified T : Message> MessageChain.orNull(): OrNullDelegate<T?> = OrN
inline fun <reified T : Message?> MessageChain.orElse( inline fun <reified T : Message?> MessageChain.orElse(
lazyDefault: () -> T lazyDefault: () -> T
): OrNullDelegate<T> = ): OrNullDelegate<T> =
OrNullDelegate<T>(this.firstOrNull<T>() ?: lazyDefault()) OrNullDelegate(this.firstOrNull<T>() ?: lazyDefault())
// endregion delegate // endregion delegate
...@@ -204,12 +204,15 @@ inline fun <reified T : Message?> MessageChain.orElse( ...@@ -204,12 +204,15 @@ inline fun <reified T : Message?> MessageChain.orElse(
@JvmName("newChain") @JvmName("newChain")
@JsName("newChain") @JsName("newChain")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
fun Message.toChain(): MessageChain = when (this) { fun Message.asMessageChain(): MessageChain = when (this) {
is MessageChain -> this is MessageChain -> this
is CombinedMessage -> (this as Iterable<Message>).asMessageChain() is CombinedMessage -> (this as Iterable<Message>).asMessageChain()
else -> SingleMessageChainImpl(this as SingleMessage) else -> SingleMessageChainImpl(this as SingleMessage)
} }
@Deprecated("use asMessageChain instead", ReplaceWith("this.asMessageChain()"), DeprecationLevel.ERROR)
fun Message.toChain(): MessageChain = this.asMessageChain()
/** /**
* 直接将 [this] 委托为一个 [MessageChain] * 直接将 [this] 委托为一个 [MessageChain]
*/ */
...@@ -220,7 +223,7 @@ fun Collection<SingleMessage>.asMessageChain(): MessageChain = MessageChainImplB ...@@ -220,7 +223,7 @@ fun Collection<SingleMessage>.asMessageChain(): MessageChain = MessageChainImplB
* 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain] * 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain]
*/ */
@JvmName("newChain") @JvmName("newChain")
@JsName("newChain") // @JsName("newChain")
fun Collection<Message>.asMessageChain(): MessageChain = MessageChainImplBySequence(this.flatten()) fun Collection<Message>.asMessageChain(): MessageChain = MessageChainImplBySequence(this.flatten())
/** /**
...@@ -235,7 +238,7 @@ inline fun MessageChain.asMessageChain(): MessageChain = this // 避免套娃 ...@@ -235,7 +238,7 @@ inline fun MessageChain.asMessageChain(): MessageChain = this // 避免套娃
* 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain] * 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain]
*/ */
@JvmName("newChain") @JvmName("newChain")
@JsName("newChain") // @JsName("newChain")
fun Iterable<Message>.asMessageChain(): MessageChain = MessageChainImplBySequence(this.flatten()) fun Iterable<Message>.asMessageChain(): MessageChain = MessageChainImplBySequence(this.flatten())
/** /**
...@@ -248,9 +251,29 @@ fun Sequence<SingleMessage>.asMessageChain(): MessageChain = MessageChainImplByS ...@@ -248,9 +251,29 @@ fun Sequence<SingleMessage>.asMessageChain(): MessageChain = MessageChainImplByS
* 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain] * 将 [this] [扁平化后][flatten] 委托为一个 [MessageChain]
*/ */
@JvmName("newChain") @JvmName("newChain")
@JsName("newChain") // @JsName("newChain")
fun Sequence<Message>.asMessageChain(): MessageChain = MessageChainImplBySequence(this.flatten()) 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 ...@@ -265,8 +288,8 @@ fun Sequence<Message>.asMessageChain(): MessageChain = MessageChainImplBySequenc
*/ */
fun Iterable<Message>.flatten(): Sequence<SingleMessage> = asSequence().flatten() fun Iterable<Message>.flatten(): Sequence<SingleMessage> = asSequence().flatten()
@JsName("flatten1") // avoid platform declare clash // @JsName("flatten1")
@JvmName("flatten1") @JvmName("flatten1")// avoid platform declare clash
@JvmSynthetic @JvmSynthetic
fun Iterable<SingleMessage>.flatten(): Sequence<SingleMessage> = this.asSequence() // fast path fun Iterable<SingleMessage>.flatten(): Sequence<SingleMessage> = this.asSequence() // fast path
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment