From e61b05815301bc846b1aa204e028e7ca0f63fdeb Mon Sep 17 00:00:00 2001 From: Hamusuta0320 <55654842+Hamusuta0320@users.noreply.github.com> Date: Sat, 12 Aug 2023 14:05:38 +0800 Subject: [PATCH] =?UTF-8?q?[core]=20=E4=BF=AE=E5=A4=8D=E4=BB=8E=E5=8F=AF?= =?UTF-8?q?=E7=A1=AE=E5=AE=9A=E5=9B=BE=E7=89=87=E7=B1=BB=E5=9E=8B=E7=9A=84?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E7=BB=84=E6=88=90=E7=9A=84=20mirai?= =?UTF-8?q?=20code=20=E6=9E=84=E9=80=A0=E7=9A=84=E5=9B=BE=E7=89=87=20type?= =?UTF-8?q?=20=E4=B8=BA=20UNKNOW=20=E6=88=96=E4=B8=8E=E6=9C=9F=E6=9C=9B?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=B8=8D=E4=B8=80=E8=87=B4=20(#2761)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [core]修复从可确定图片类型的字符串组成的mirai code构造的图片type为UNKNOW或与期望类型不一致 * [core]修复从可确定图片类型的字符串组成的mirai code构造的图片type为UNKNOW或与期望类型不一致 * [core]修复从可确定图片类型的字符串组成的mirai code构造的图片type为UNKNOW或与期望类型不一致 * Update mirai-core-api/src/commonMain/kotlin/message/data/Image.kt --------- Co-authored-by: Him188 --- .../commonMain/kotlin/message/data/Image.kt | 4 +- .../kotlin/message/ImageBuilderTest.kt | 54 +++++++++++++++++-- .../protocol/impl/LongMessageProtocolTest.kt | 4 +- 3 files changed, 56 insertions(+), 6 deletions(-) diff --git a/mirai-core-api/src/commonMain/kotlin/message/data/Image.kt b/mirai-core-api/src/commonMain/kotlin/message/data/Image.kt index 75163ff7cde..c84286ba90a 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/data/Image.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/data/Image.kt @@ -306,7 +306,6 @@ public interface Image : Message, MessageContent, CodableMessage { * @see Image.imageType */ public var type: ImageType = ImageType.UNKNOWN - /** * @see Image.width */ @@ -324,6 +323,9 @@ public interface Image : Message, MessageContent, CodableMessage { public fun build(): Image { + if (type == ImageType.UNKNOWN) { + type = ImageType.match(imageId.split(".").last()) + } @OptIn(MiraiInternalApi::class) return InternalImageProtocol.instance.createImage( imageId = imageId, diff --git a/mirai-core/src/commonTest/kotlin/message/ImageBuilderTest.kt b/mirai-core/src/commonTest/kotlin/message/ImageBuilderTest.kt index 07694390698..1efef4a2a30 100644 --- a/mirai-core/src/commonTest/kotlin/message/ImageBuilderTest.kt +++ b/mirai-core/src/commonTest/kotlin/message/ImageBuilderTest.kt @@ -19,6 +19,10 @@ import kotlin.test.assertEquals internal class ImageBuilderTest : AbstractTest() { companion object { private const val IMAGE_ID = "{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.jpg" + private const val IMAGE_ID_PNG = "{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.png" + private const val IMAGE_ID_BMP = "{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.bmp" + private const val IMAGE_ID_GIF = "{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.gif" + private const val IMAGE_ID_UNKNOW = "/01E9451B-70ED-EAE3-B37C-101F1EEBF5B5" } @Test @@ -57,6 +61,50 @@ internal class ImageBuilderTest : AbstractTest() { assertEquals(0, width) assertEquals(0, height) assertEquals(0, size) + assertEquals(ImageType.JPG, imageType) + assertEquals(false, isEmoji) + } + } + + @Test + fun imageType() { + Image(IMAGE_ID).run { + assertEquals(IMAGE_ID, imageId) + assertEquals(0, width) + assertEquals(0, height) + assertEquals(0, size) + assertEquals(ImageType.JPG, imageType) + assertEquals(false, isEmoji) + } + Image(IMAGE_ID_PNG).run { + assertEquals(IMAGE_ID_PNG, imageId) + assertEquals(0, width) + assertEquals(0, height) + assertEquals(0, size) + assertEquals(ImageType.PNG, imageType) + assertEquals(false, isEmoji) + } + Image(IMAGE_ID_BMP).run { + assertEquals(IMAGE_ID_BMP, imageId) + assertEquals(0, width) + assertEquals(0, height) + assertEquals(0, size) + assertEquals(ImageType.BMP, imageType) + assertEquals(false, isEmoji) + } + Image(IMAGE_ID_GIF).run { + assertEquals(IMAGE_ID_GIF, imageId) + assertEquals(0, width) + assertEquals(0, height) + assertEquals(0, size) + assertEquals(ImageType.GIF, imageType) + assertEquals(false, isEmoji) + } + Image(IMAGE_ID_UNKNOW).run { + assertEquals(IMAGE_ID_UNKNOW, imageId) + assertEquals(0, width) + assertEquals(0, height) + assertEquals(0, size) assertEquals(ImageType.UNKNOWN, imageType) assertEquals(false, isEmoji) } @@ -71,7 +119,7 @@ internal class ImageBuilderTest : AbstractTest() { assertEquals(0, width) assertEquals(0, height) assertEquals(0, size) - assertEquals(ImageType.UNKNOWN, imageType) + assertEquals(ImageType.JPG, imageType) assertEquals(false, isEmoji) } Image.fromId(IMAGE_ID).run { @@ -79,7 +127,7 @@ internal class ImageBuilderTest : AbstractTest() { assertEquals(0, width) assertEquals(0, height) assertEquals(0, size) - assertEquals(ImageType.UNKNOWN, imageType) + assertEquals(ImageType.JPG, imageType) assertEquals(false, isEmoji) } Image(IMAGE_ID).run { @@ -87,7 +135,7 @@ internal class ImageBuilderTest : AbstractTest() { assertEquals(0, width) assertEquals(0, height) assertEquals(0, size) - assertEquals(ImageType.UNKNOWN, imageType) + assertEquals(ImageType.JPG, imageType) assertEquals(false, isEmoji) } Image(IMAGE_ID) { diff --git a/mirai-core/src/commonTest/kotlin/message/protocol/impl/LongMessageProtocolTest.kt b/mirai-core/src/commonTest/kotlin/message/protocol/impl/LongMessageProtocolTest.kt index 5010e119c43..5feb3baf33f 100644 --- a/mirai-core/src/commonTest/kotlin/message/protocol/impl/LongMessageProtocolTest.kt +++ b/mirai-core/src/commonTest/kotlin/message/protocol/impl/LongMessageProtocolTest.kt @@ -76,7 +76,7 @@ internal class LongMessageProtocolTest : AbstractMessageProtocolTest() { @@ -86,7 +86,7 @@ internal class LongMessageProtocolTest : AbstractMessageProtocolTest() { - """.trimIndent(), "(size=1)DBD2AB20196EEB631C95DEF40E20C709" + """.trimIndent(), "(size=1)6C6FD4AEC362AA8E54058A27B422FA42" ) + IgnoreLengthCheck + ForceAsLongMessage, context.currentMessageChain ) }