1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2026-07-01 15:45:31 +00:00

refactor/fixes in rich parts

This commit is contained in:
2026-07-01 12:46:16 +06:00
parent b054f3d1b5
commit 390770ca80
7 changed files with 42 additions and 39 deletions

View File

@@ -35105,8 +35105,8 @@ public final class dev/inmo/tgbotapi/types/rich/RichBlockSectionHeading : dev/in
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichBlockSectionHeading;Ldev/inmo/tgbotapi/types/rich/RichText;IILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichBlockSectionHeading;
public fun equals (Ljava/lang/Object;)Z
public fun getHtml ()Ljava/lang/String;
public final fun getLevel ()I
public fun getMarkdown ()Ljava/lang/String;
public final fun getSize ()I
public final fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
@@ -35369,8 +35369,8 @@ public final class dev/inmo/tgbotapi/types/rich/RichBlocksBuilder {
public final fun divider ()V
public final fun footer (Ljava/lang/String;)V
public final fun footer (Lkotlin/jvm/functions/Function1;)V
public final fun heading (ILjava/lang/String;)V
public final fun heading (ILkotlin/jvm/functions/Function1;)V
public final fun heading (Ljava/lang/String;I)V
public final fun heading (Lkotlin/jvm/functions/Function1;I)V
public final fun list (Lkotlin/jvm/functions/Function1;)V
public final fun mathematicalExpression (Ljava/lang/String;)V
public final fun paragraph (Ljava/lang/String;)V
@@ -35589,8 +35589,8 @@ public final class dev/inmo/tgbotapi/types/rich/RichTextBuilder {
public final fun code (Ljava/lang/String;)V
public final fun code (Lkotlin/jvm/functions/Function1;)V
public final fun customEmoji-R1fjqgo (Ljava/lang/String;Ljava/lang/String;)V
public final fun dateTime (JLjava/lang/String;Ljava/lang/String;)V
public final fun dateTime (JLjava/lang/String;Lkotlin/jvm/functions/Function1;)V
public final fun dateTime (Ljava/lang/String;Ldev/inmo/tgbotapi/types/TelegramDate;Ljava/lang/String;)V
public final fun dateTime (Lkotlin/jvm/functions/Function1;Ldev/inmo/tgbotapi/types/TelegramDate;Ljava/lang/String;)V
public final fun email (Ljava/lang/String;Ljava/lang/String;)V
public final fun email (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
public final fun hashtag (Ljava/lang/String;Ljava/lang/String;)V
@@ -35735,12 +35735,12 @@ public final class dev/inmo/tgbotapi/types/rich/RichTextCustomEmoji$Companion {
public final class dev/inmo/tgbotapi/types/rich/RichTextDateTime : dev/inmo/tgbotapi/types/rich/RichTextEntity {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichTextDateTime$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;JLjava/lang/String;)V
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/TelegramDate;Ljava/lang/String;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()J
public final fun component2 ()Ldev/inmo/tgbotapi/types/TelegramDate;
public final fun component3 ()Ljava/lang/String;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;JLjava/lang/String;)Ldev/inmo/tgbotapi/types/rich/RichTextDateTime;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichTextDateTime;Ldev/inmo/tgbotapi/types/rich/RichText;JLjava/lang/String;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichTextDateTime;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/TelegramDate;Ljava/lang/String;)Ldev/inmo/tgbotapi/types/rich/RichTextDateTime;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichTextDateTime;Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/TelegramDate;Ljava/lang/String;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichTextDateTime;
public fun equals (Ljava/lang/Object;)Z
public final fun getDateTimeFormat ()Ljava/lang/String;
public fun getHtml ()Ljava/lang/String;
@@ -35748,7 +35748,7 @@ public final class dev/inmo/tgbotapi/types/rich/RichTextDateTime : dev/inmo/tgbo
public fun getRawText ()Ljava/lang/String;
public final fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun getType ()Ljava/lang/String;
public final fun getUnixTime ()J
public final fun getUnixTime ()Ldev/inmo/tgbotapi/types/TelegramDate;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
@@ -35765,8 +35765,8 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextDateTime$$seri
}
public final class dev/inmo/tgbotapi/types/rich/RichTextDateTime$Companion {
public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;JLjava/lang/String;)Ljava/lang/String;
public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;JLjava/lang/String;)Ljava/lang/String;
public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/TelegramDate;Ljava/lang/String;)Ljava/lang/String;
public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/TelegramDate;Ljava/lang/String;)Ljava/lang/String;
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}

View File

@@ -72,14 +72,14 @@ data class RichBlockSectionHeading(
* Relative size of the text font; 1-6, 1 is the largest, 6 is the smallest.
*/
@SerialName(sizeField)
val size: Int
val level: Int
) : RichBlock {
@EncodeDefault
@SerialName(typeField)
override val type: String = TYPE
override val markdown: String = markdown(text, size)
override val html: String = html(text, size)
override val markdown: String = markdown(text, level)
override val html: String = html(text, level)
companion object {
const val TYPE = "heading"

View File

@@ -1,6 +1,7 @@
package dev.inmo.tgbotapi.types.rich
import dev.inmo.tgbotapi.types.CustomEmojiId
import dev.inmo.tgbotapi.types.TelegramDate
import dev.inmo.tgbotapi.types.chat.User
/**
@@ -56,12 +57,12 @@ class RichTextBuilder {
fun code(text: String) = add(RichTextCode(RichTextPlain(text)))
fun code(block: RichTextBuilder.() -> Unit) = add(RichTextCode(buildRichText(block)))
fun dateTime(unixTime: Long, dateTimeFormat: String, text: String) =
fun dateTime(text: String, unixTime: TelegramDate, dateTimeFormat: String) =
add(RichTextDateTime(RichTextPlain(text), unixTime, dateTimeFormat))
fun dateTime(unixTime: Long, dateTimeFormat: String, block: RichTextBuilder.() -> Unit) =
fun dateTime(unixTime: TelegramDate, dateTimeFormat: String, block: RichTextBuilder.() -> Unit) =
add(RichTextDateTime(buildRichText(block), unixTime, dateTimeFormat))
fun textMention(user: User, text: String) = add(RichTextTextMention(RichTextPlain(text), user))
fun textMention(text: String, user: User) = add(RichTextTextMention(RichTextPlain(text), user))
fun textMention(user: User, block: RichTextBuilder.() -> Unit) = add(RichTextTextMention(buildRichText(block), user))
fun customEmoji(customEmojiId: CustomEmojiId, alternativeText: String) =
@@ -69,44 +70,44 @@ class RichTextBuilder {
fun mathematicalExpression(expression: String) = add(RichTextMathematicalExpression(expression))
fun url(url: String, text: String) = add(RichTextUrl(RichTextPlain(text), url))
fun url(text: String, url: String) = add(RichTextUrl(RichTextPlain(text), url))
fun url(url: String, block: RichTextBuilder.() -> Unit) = add(RichTextUrl(buildRichText(block), url))
fun email(emailAddress: String, text: String) = add(RichTextEmailAddress(RichTextPlain(text), emailAddress))
fun email(text: String, emailAddress: String) = add(RichTextEmailAddress(RichTextPlain(text), emailAddress))
fun email(emailAddress: String, block: RichTextBuilder.() -> Unit) =
add(RichTextEmailAddress(buildRichText(block), emailAddress))
fun phone(phoneNumber: String, text: String) = add(RichTextPhoneNumber(RichTextPlain(text), phoneNumber))
fun phone(text: String, phoneNumber: String) = add(RichTextPhoneNumber(RichTextPlain(text), phoneNumber))
fun phone(phoneNumber: String, block: RichTextBuilder.() -> Unit) =
add(RichTextPhoneNumber(buildRichText(block), phoneNumber))
fun bankCard(bankCardNumber: String, text: String) = add(RichTextBankCardNumber(RichTextPlain(text), bankCardNumber))
fun bankCard(text: String, bankCardNumber: String) = add(RichTextBankCardNumber(RichTextPlain(text), bankCardNumber))
fun bankCard(bankCardNumber: String, block: RichTextBuilder.() -> Unit) =
add(RichTextBankCardNumber(buildRichText(block), bankCardNumber))
fun mention(username: String, text: String) = add(RichTextMention(RichTextPlain(text), username))
fun mention(text: String, username: String) = add(RichTextMention(RichTextPlain(text), username))
fun mention(username: String, block: RichTextBuilder.() -> Unit) = add(RichTextMention(buildRichText(block), username))
fun hashtag(hashtag: String, text: String) = add(RichTextHashtag(RichTextPlain(text), hashtag))
fun hashtag(text: String, hashtag: String) = add(RichTextHashtag(RichTextPlain(text), hashtag))
fun hashtag(hashtag: String, block: RichTextBuilder.() -> Unit) = add(RichTextHashtag(buildRichText(block), hashtag))
fun cashtag(cashtag: String, text: String) = add(RichTextCashtag(RichTextPlain(text), cashtag))
fun cashtag(text: String, cashtag: String) = add(RichTextCashtag(RichTextPlain(text), cashtag))
fun cashtag(cashtag: String, block: RichTextBuilder.() -> Unit) = add(RichTextCashtag(buildRichText(block), cashtag))
fun botCommand(botCommand: String, text: String) = add(RichTextBotCommand(RichTextPlain(text), botCommand))
fun botCommand(text: String, botCommand: String) = add(RichTextBotCommand(RichTextPlain(text), botCommand))
fun botCommand(botCommand: String, block: RichTextBuilder.() -> Unit) =
add(RichTextBotCommand(buildRichText(block), botCommand))
fun anchor(name: String) = add(RichTextAnchor(name))
fun anchorLink(anchorName: String, text: String) = add(RichTextAnchorLink(RichTextPlain(text), anchorName))
fun anchorLink(text: String, anchorName: String) = add(RichTextAnchorLink(RichTextPlain(text), anchorName))
fun anchorLink(anchorName: String, block: RichTextBuilder.() -> Unit) =
add(RichTextAnchorLink(buildRichText(block), anchorName))
fun reference(name: String, text: String) = add(RichTextReference(RichTextPlain(text), name))
fun reference(text: String, name: String) = add(RichTextReference(RichTextPlain(text), name))
fun reference(name: String, block: RichTextBuilder.() -> Unit) = add(RichTextReference(buildRichText(block), name))
fun referenceLink(referenceName: String, text: String) =
fun referenceLink(text: String, referenceName: String) =
add(RichTextReferenceLink(RichTextPlain(text), referenceName))
fun referenceLink(referenceName: String, block: RichTextBuilder.() -> Unit) =
add(RichTextReferenceLink(buildRichText(block), referenceName))
@@ -163,8 +164,8 @@ class RichBlocksBuilder {
fun paragraph(text: String) = add(RichBlockParagraph(RichTextPlain(text)))
fun paragraph(block: RichTextBuilder.() -> Unit) = add(RichBlockParagraph(buildRichText(block)))
fun heading(size: Int, text: String) = add(RichBlockSectionHeading(RichTextPlain(text), size))
fun heading(size: Int, block: RichTextBuilder.() -> Unit) = add(RichBlockSectionHeading(buildRichText(block), size))
fun heading(text: String, level: Int) = add(RichBlockSectionHeading(RichTextPlain(text), level))
fun heading(level: Int, block: RichTextBuilder.() -> Unit) = add(RichBlockSectionHeading(buildRichText(block), level))
fun preformatted(text: String, language: String? = null) = add(RichBlockPreformatted(RichTextPlain(text), language))

View File

@@ -16,6 +16,7 @@ import dev.inmo.tgbotapi.types.internalUserLinkBeginning
import dev.inmo.tgbotapi.types.nameField
import dev.inmo.tgbotapi.types.phoneNumberField
import dev.inmo.tgbotapi.types.referenceNameField
import dev.inmo.tgbotapi.types.TelegramDate
import dev.inmo.tgbotapi.types.textField
import dev.inmo.tgbotapi.types.typeField
import dev.inmo.tgbotapi.types.unixTimeField
@@ -262,7 +263,7 @@ data class RichTextDateTime(
@SerialName(textField)
val text: RichText,
@SerialName(unixTimeField)
val unixTime: Long,
val unixTime: TelegramDate,
@SerialName(dateTimeFormatField)
val dateTimeFormat: String
) : RichTextEntity {
@@ -276,10 +277,10 @@ data class RichTextDateTime(
companion object {
const val TYPE = "date_time"
fun markdown(text: RichText, unixTime: Long, dateTimeFormat: String): String =
"![${text.markdown}](tg://time?unix=$unixTime&format=$dateTimeFormat)"
fun html(text: RichText, unixTime: Long, dateTimeFormat: String): String =
"<tg-time unix=\"$unixTime\" format=\"$dateTimeFormat\">${text.html}</tg-time>"
fun markdown(text: RichText, unixTime: TelegramDate, dateTimeFormat: String): String =
"![${text.markdown}](tg://time?unix=${unixTime.date}&format=$dateTimeFormat)"
fun html(text: RichText, unixTime: TelegramDate, dateTimeFormat: String): String =
"<tg-time unix=\"${unixTime.date}\" format=\"$dateTimeFormat\">${text.html}</tg-time>"
}
}

View File

@@ -39,7 +39,7 @@ class RichMessageSerializationTest {
val heading = message.blocks[1] as RichBlockSectionHeading
assertEquals(RichTextPlain("Title"), heading.text)
assertEquals(1, heading.size)
assertEquals(1, heading.level)
assertTrue(message.blocks[2] is RichBlockDivider)

View File

@@ -39,7 +39,7 @@ class RichTextDslTest {
@Test
fun buildsBlocks() {
val blocks = buildRichBlocks {
heading(1, "Title")
heading("Title", 1)
paragraph {
plain("Hello ")
bold("world")

View File

@@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.types.rich
import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.CustomEmojiId
import dev.inmo.tgbotapi.types.RawChatId
import dev.inmo.tgbotapi.types.TelegramDate
import dev.inmo.tgbotapi.types.chat.CommonUser
import kotlin.test.Test
import kotlin.test.assertEquals
@@ -73,7 +74,7 @@ class RichTextFormattingTest {
@Test
fun dateTime() {
val entity = RichTextDateTime(RichTextPlain("now"), 1647531900L, "wDT")
val entity = RichTextDateTime(RichTextPlain("now"), TelegramDate(1647531900L), "wDT")
assertEquals("![now](tg://time?unix=1647531900&format=wDT)", entity.markdown)
assertEquals("<tg-time unix=\"1647531900\" format=\"wDT\">now</tg-time>", entity.html)
}