diff --git a/buildSrc/src/main/kotlin/P.kt b/buildSrc/src/main/kotlin/P.kt index 2c1227b28..f81c153ef 100644 --- a/buildSrc/src/main/kotlin/P.kt +++ b/buildSrc/src/main/kotlin/P.kt @@ -53,7 +53,7 @@ sealed class P(override val group: String) : ProjectDetail() { companion object { const val VERSION = "4.2.0" const val SNAPSHOT_VERSION = "$VERSION-SNAPSHOT" - const val NEXT_VERSION = "4.2.0" + const val NEXT_VERSION = "4.3.0" const val NEXT_SNAPSHOT_VERSION = "$NEXT_VERSION-SNAPSHOT" const val GROUP = "love.forte.simbot" diff --git a/simbot-api/api/simbot-api.api b/simbot-api/api/simbot-api.api index 9dfa60b93..af47d344a 100644 --- a/simbot-api/api/simbot-api.api +++ b/simbot-api/api/simbot-api.api @@ -1830,7 +1830,7 @@ public final class love/forte/simbot/message/AtAll : love/forte/simbot/message/M public fun toString ()Ljava/lang/String; } -public final class love/forte/simbot/message/Emoji : love/forte/simbot/message/EmoticonMessage { +public final class love/forte/simbot/message/Emoji : love/forte/simbot/message/EmoticonMessage, love/forte/simbot/message/StandardMessage { public static final field Companion Llove/forte/simbot/message/Emoji$Companion; public fun (Llove/forte/simbot/common/id/ID;)V public final fun component1 ()Llove/forte/simbot/common/id/ID; @@ -1860,7 +1860,7 @@ public final class love/forte/simbot/message/Emoji$Companion { public abstract interface class love/forte/simbot/message/EmoticonMessage : love/forte/simbot/message/StandardMessage { } -public final class love/forte/simbot/message/Face : love/forte/simbot/message/EmoticonMessage { +public final class love/forte/simbot/message/Face : love/forte/simbot/message/EmoticonMessage, love/forte/simbot/message/StandardMessage { public static final field Companion Llove/forte/simbot/message/Face$Companion; public fun (Llove/forte/simbot/common/id/ID;)V public final fun component1 ()Llove/forte/simbot/common/id/ID; @@ -2319,7 +2319,11 @@ public final class love/forte/simbot/message/Text$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public abstract interface class love/forte/simbot/message/UrlAwareImage : love/forte/simbot/message/Image { +public abstract interface class love/forte/simbot/message/UrlAwareImage : love/forte/simbot/message/Image, love/forte/simbot/message/UrlAwareMessage { + public abstract synthetic fun url (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public abstract interface class love/forte/simbot/message/UrlAwareMessage { public fun getUrl ()Ljava/lang/String; public fun getUrlAsync ()Ljava/util/concurrent/CompletableFuture; public fun getUrlReserve ()Llove/forte/simbot/suspendrunner/reserve/SuspendReserve; diff --git a/simbot-api/src/commonMain/kotlin/love/forte/simbot/message/StandardMessages.kt b/simbot-api/src/commonMain/kotlin/love/forte/simbot/message/StandardMessages.kt index 37afc1c59..d823ab005 100644 --- a/simbot-api/src/commonMain/kotlin/love/forte/simbot/message/StandardMessages.kt +++ b/simbot-api/src/commonMain/kotlin/love/forte/simbot/message/StandardMessages.kt @@ -228,7 +228,13 @@ public data object AtAll : MentionMessage /** * 一个图片消息元素类型。 * - * 图片消息可能被分为 [离线图片][OfflineImage] 和 [远端图片][RemoteImage]。 + * 图片消息可能被分为 [离线图片][OfflineImage] + * 和 [远端图片][RemoteImage]。 + * + * 在不同的平台中,图片的表现方式或实现方式千变万化, + * 它们的类型很可能并非标准消息类型中提供的已知类型。 + * 对于实现者,应当尽可能支持 [UrlAwareImage] + * 来表示一个能够得到 URL 信息的图片。 * * @see OfflineImage * @see RemoteImage @@ -250,12 +256,12 @@ public interface IDAwareImage : Image { * 一个可以感知或获取到 url 信息的 [Image]。 * */ -@STP -public interface UrlAwareImage : Image { +public interface UrlAwareImage : Image, UrlAwareMessage { /** - * 获取到这个图片的链接字符串。 + * 获取或查询此图片的链接。 */ - public suspend fun url(): String + @JvmSynthetic + override suspend fun url(): String } @@ -437,13 +443,27 @@ public interface EmoticonMessage : StandardMessage */ @Serializable @SerialName("m.std.emoji") -public data class Emoji(public val id: ID) : EmoticonMessage +public data class Emoji(public val id: ID) : StandardMessage, EmoticonMessage /** * 一个表情。一般代表平台提供的自带系统表情。 */ @Serializable @SerialName("m.std.face") -public data class Face(public val id: ID) : EmoticonMessage +public data class Face(public val id: ID) : StandardMessage, EmoticonMessage //endregion + +/** + * 表示为一个可以得知 URL 地址的消息元素, + * 例如 [UrlAwareImage]。 + * + * @since 4.3.0 + */ +@STP +public interface UrlAwareMessage { + /** + * 获取到链接字符串。 + */ + public suspend fun url(): String +} diff --git a/website b/website index b307a0836..ea9774ca8 160000 --- a/website +++ b/website @@ -1 +1 @@ -Subproject commit b307a08362449a74633cad601609f6a8b62abf69 +Subproject commit ea9774ca8e1d6c09e5fc843e72dc282d82887c00