From 0bafde1498d93ca7f1e2afbbd6f8d892e415042b Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 21:34:32 +0200 Subject: [PATCH 01/21] Added the classes RichText, RichTextBold, RichTextItalic, RichTextUnderline, RichTextStrikethrough, RichTextSpoiler, RichTextDateTime, RichTextTextMention, RichTextSubscript, RichTextSuperscript, RichTextMarked, RichTextCode, RichTextCustomEmoji, RichTextMathematicalExpression, RichTextUrl, RichTextEmailAddress, RichTextPhoneNumber, RichTextBankCardNumber, RichTextMention, RichTextHashtag, RichTextCashtag, RichTextBotCommand, RichTextAnchor, RichTextAnchorLink, RichTextReference and RichTextReferenceLink, which represent different types of rich formatted text. --- .../model/richmessages/richtext/RichText.kt | 5 ++ .../richmessages/richtext/RichTextAnchor.kt | 7 +++ .../richtext/RichTextAnchorLink.kt | 8 +++ .../richmessages/richtext/RichTextArray.kt | 19 ++++++ .../richtext/RichTextBankCardNumber.kt | 8 +++ .../richmessages/richtext/RichTextBold.kt | 7 +++ .../richtext/RichTextBotCommand.kt | 8 +++ .../richmessages/richtext/RichTextCashtag.kt | 8 +++ .../richmessages/richtext/RichTextCode.kt | 7 +++ .../richtext/RichTextCustomEmoji.kt | 8 +++ .../richmessages/richtext/RichTextDateTime.kt | 9 +++ .../richtext/RichTextEmailAddress.kt | 8 +++ .../richmessages/richtext/RichTextHashtag.kt | 8 +++ .../richmessages/richtext/RichTextItalic.kt | 7 +++ .../richmessages/richtext/RichTextMarked.kt | 7 +++ .../RichTextMathematicalExpression.kt | 7 +++ .../richmessages/richtext/RichTextMention.kt | 8 +++ .../richtext/RichTextPhoneNumber.kt | 8 +++ .../richmessages/richtext/RichTextPlain.kt | 7 +++ .../richtext/RichTextReference.kt | 8 +++ .../richtext/RichTextReferenceLink.kt | 8 +++ .../richmessages/richtext/RichTextSpoiler.kt | 7 +++ .../richtext/RichTextStrikethrough.kt | 7 +++ .../richtext/RichTextSubscript.kt | 7 +++ .../richtext/RichTextSuperscript.kt | 7 +++ .../richtext/RichTextTextMention.kt | 10 ++++ .../richmessages/richtext/RichTextType.kt | 30 ++++++++++ .../richtext/RichTextUnderline.kt | 7 +++ .../richmessages/richtext/RichTextUnknown.kt | 15 +++++ .../richmessages/richtext/RichTextUrl.kt | 8 +++ .../utility/gson/RichTextTypeAdapter.kt | 60 +++++++++++++++++++ 31 files changed, 328 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichText.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextArray.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPlain.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnknown.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichText.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichText.kt new file mode 100644 index 00000000..8f78aee7 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichText.kt @@ -0,0 +1,5 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +interface RichText { + val type: String +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt new file mode 100644 index 00000000..57a3191c --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextAnchor( + @get:JvmName("name") val name: String +) : RichText { + override val type: String get() = RichTextType.ANCHOR +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt new file mode 100644 index 00000000..15759d4d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextAnchorLink( + @get:JvmName("text") val text: RichText, + @get:JvmName("anchorName") val anchorName: String +) : RichText { + override val type: String get() = RichTextType.ANCHOR_LINK +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextArray.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextArray.kt new file mode 100644 index 00000000..19a508a7 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextArray.kt @@ -0,0 +1,19 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +class RichTextArray( + @get:JvmName("elements") val elements: Array +) : RichText { + + override val type: String get() = "array" + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichTextArray + return elements.contentEquals(other.elements) + } + + override fun hashCode(): Int = elements.contentHashCode() + + override fun toString(): String = "RichTextArray(elements=${elements.contentToString()})" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt new file mode 100644 index 00000000..e30a640b --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextBankCardNumber( + @get:JvmName("text") val text: RichText, + @get:JvmName("bankCardNumber") val bankCardNumber: String +) : RichText { + override val type: String get() = RichTextType.BANK_CARD_NUMBER +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt new file mode 100644 index 00000000..abe83868 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextBold( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.BOLD +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt new file mode 100644 index 00000000..2ccfa481 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextBotCommand( + @get:JvmName("text") val text: RichText, + @get:JvmName("botCommand") val botCommand: String +) : RichText { + override val type: String get() = RichTextType.BOT_COMMAND +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt new file mode 100644 index 00000000..2ee11987 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextCashtag( + @get:JvmName("text") val text: RichText, + @get:JvmName("cashtag") val cashtag: String +) : RichText { + override val type: String get() = RichTextType.CASHTAG +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt new file mode 100644 index 00000000..a43219bb --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextCode( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.CODE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt new file mode 100644 index 00000000..6f35924a --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextCustomEmoji( + @get:JvmName("customEmojiId") val customEmojiId: String, + @get:JvmName("alternativeText") val alternativeText: String +) : RichText { + override val type: String get() = RichTextType.CUSTOM_EMOJI +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt new file mode 100644 index 00000000..ff5c1d82 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt @@ -0,0 +1,9 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextDateTime( + @get:JvmName("text") val text: RichText, + @get:JvmName("unixTime") val unixTime: Long, + @get:JvmName("dateTimeFormat") val dateTimeFormat: String +) : RichText { + override val type: String get() = RichTextType.DATE_TIME +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt new file mode 100644 index 00000000..4acad159 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextEmailAddress( + @get:JvmName("text") val text: RichText, + @get:JvmName("emailAddress") val emailAddress: String +) : RichText { + override val type: String get() = RichTextType.EMAIL_ADDRESS +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt new file mode 100644 index 00000000..ccc8dc23 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextHashtag( + @get:JvmName("text") val text: RichText, + @get:JvmName("hashtag") val hashtag: String +) : RichText { + override val type: String get() = RichTextType.HASHTAG +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt new file mode 100644 index 00000000..d8d19b32 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextItalic( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.ITALIC +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt new file mode 100644 index 00000000..5e964d97 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextMarked( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.MARKED +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt new file mode 100644 index 00000000..8cae1cf2 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextMathematicalExpression( + @get:JvmName("expression") val expression: String +) : RichText { + override val type: String get() = RichTextType.MATHEMATICAL_EXPRESSION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt new file mode 100644 index 00000000..d354e098 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextMention( + @get:JvmName("text") val text: RichText, + @get:JvmName("username") val username: String +) : RichText { + override val type: String get() = RichTextType.MENTION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt new file mode 100644 index 00000000..60a5b71b --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextPhoneNumber( + @get:JvmName("text") val text: RichText, + @get:JvmName("phoneNumber") val phoneNumber: String +) : RichText { + override val type: String get() = RichTextType.PHONE_NUMBER +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPlain.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPlain.kt new file mode 100644 index 00000000..788f8c76 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPlain.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextPlain( + @get:JvmName("text") val text: String +) : RichText { + override val type: String get() = "plain" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt new file mode 100644 index 00000000..09700dbc --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextReference( + @get:JvmName("text") val text: RichText, + @get:JvmName("name") val name: String +) : RichText { + override val type: String get() = RichTextType.REFERENCE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt new file mode 100644 index 00000000..35f1a3c9 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextReferenceLink( + @get:JvmName("text") val text: RichText, + @get:JvmName("referenceName") val referenceName: String +) : RichText { + override val type: String get() = RichTextType.REFERENCE_LINK +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt new file mode 100644 index 00000000..e3138bb4 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextSpoiler( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.SPOILER +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt new file mode 100644 index 00000000..932a2a1f --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextStrikethrough( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.STRIKETHROUGH +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt new file mode 100644 index 00000000..118ad673 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextSubscript( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.SUBSCRIPT +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt new file mode 100644 index 00000000..5118f307 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextSuperscript( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.SUPERSCRIPT +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt new file mode 100644 index 00000000..f3d0c640 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +import com.pengrad.telegrambot.model.User + +data class RichTextTextMention( + @get:JvmName("text") val text: RichText, + @get:JvmName("user") val user: User +) : RichText { + override val type: String get() = RichTextType.TEXT_MENTION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt new file mode 100644 index 00000000..429d79d9 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt @@ -0,0 +1,30 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +object RichTextType { + const val BOLD = "bold" + const val ITALIC = "italic" + const val UNDERLINE = "underline" + const val STRIKETHROUGH = "strikethrough" + const val SPOILER = "spoiler" + const val DATE_TIME = "date_time" + const val TEXT_MENTION = "text_mention" + const val SUBSCRIPT = "subscript" + const val SUPERSCRIPT = "superscript" + const val MARKED = "marked" + const val CODE = "code" + const val CUSTOM_EMOJI = "custom_emoji" + const val MATHEMATICAL_EXPRESSION = "mathematical_expression" + const val URL = "url" + const val EMAIL_ADDRESS = "email_address" + const val PHONE_NUMBER = "phone_number" + const val BANK_CARD_NUMBER = "bank_card_number" + const val MENTION = "mention" + const val HASHTAG = "hashtag" + const val CASHTAG = "cashtag" + const val BOT_COMMAND = "bot_command" + const val ANCHOR = "anchor" + const val ANCHOR_LINK = "anchor_link" + const val REFERENCE = "reference" + const val REFERENCE_LINK = "reference_link" + const val UNKNOWN = "unknown" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt new file mode 100644 index 00000000..fb0fba3e --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextUnderline( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.UNDERLINE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnknown.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnknown.kt new file mode 100644 index 00000000..deae2b77 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnknown.kt @@ -0,0 +1,15 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +class RichTextUnknown(override val type: String = RichTextType.UNKNOWN) : RichText { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichTextUnknown + return type == other.type + } + + override fun hashCode(): Int = type.hashCode() + + override fun toString(): String = "RichTextUnknown(type='$type')" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt new file mode 100644 index 00000000..0fda6a55 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextUrl( + @get:JvmName("text") val text: RichText, + @get:JvmName("url") val url: String +) : RichText { + override val type: String get() = RichTextType.URL +} diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt new file mode 100644 index 00000000..a7fc3975 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt @@ -0,0 +1,60 @@ +package com.pengrad.telegrambot.utility.gson + +import com.google.gson.JsonDeserializationContext +import com.google.gson.JsonDeserializer +import com.google.gson.JsonElement +import com.google.gson.JsonParseException +import com.pengrad.telegrambot.model.richmessages.richtext.* +import java.lang.reflect.Type + +object RichTextTypeAdapter : JsonDeserializer { + + private val typeMapping = mapOf( + RichTextType.BOLD to RichTextBold::class, + RichTextType.ITALIC to RichTextItalic::class, + RichTextType.UNDERLINE to RichTextUnderline::class, + RichTextType.STRIKETHROUGH to RichTextStrikethrough::class, + RichTextType.SPOILER to RichTextSpoiler::class, + RichTextType.DATE_TIME to RichTextDateTime::class, + RichTextType.TEXT_MENTION to RichTextTextMention::class, + RichTextType.SUBSCRIPT to RichTextSubscript::class, + RichTextType.SUPERSCRIPT to RichTextSuperscript::class, + RichTextType.MARKED to RichTextMarked::class, + RichTextType.CODE to RichTextCode::class, + RichTextType.CUSTOM_EMOJI to RichTextCustomEmoji::class, + RichTextType.MATHEMATICAL_EXPRESSION to RichTextMathematicalExpression::class, + RichTextType.URL to RichTextUrl::class, + RichTextType.EMAIL_ADDRESS to RichTextEmailAddress::class, + RichTextType.PHONE_NUMBER to RichTextPhoneNumber::class, + RichTextType.BANK_CARD_NUMBER to RichTextBankCardNumber::class, + RichTextType.MENTION to RichTextMention::class, + RichTextType.HASHTAG to RichTextHashtag::class, + RichTextType.CASHTAG to RichTextCashtag::class, + RichTextType.BOT_COMMAND to RichTextBotCommand::class, + RichTextType.ANCHOR to RichTextAnchor::class, + RichTextType.ANCHOR_LINK to RichTextAnchorLink::class, + RichTextType.REFERENCE to RichTextReference::class, + RichTextType.REFERENCE_LINK to RichTextReferenceLink::class + ) + + @Throws(JsonParseException::class) + override fun deserialize(element: JsonElement, type: Type, context: JsonDeserializationContext): RichText { + return when { + element.isJsonPrimitive -> RichTextPlain(element.asString) + element.isJsonArray -> { + val elements = element.asJsonArray + .map { context.deserialize(it, RichText::class.java) } + .toTypedArray() + RichTextArray(elements) + } + element.isJsonObject -> { + val obj = element.asJsonObject + val discriminator = obj.getAsJsonPrimitive("type")?.asString ?: RichTextType.UNKNOWN + typeMapping[discriminator]?.let { + context.deserialize(obj, it.java) + } ?: RichTextUnknown(discriminator) + } + else -> RichTextUnknown(RichTextType.UNKNOWN) + } + } +} From ebb7218bd150cbf5a85ace0765492d40a893e69a Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 21:34:43 +0200 Subject: [PATCH 02/21] Added the class RichBlockCaption, which represents the caption of a rich formatted text. --- .../model/richmessages/richblock/RichBlockCaption.kt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCaption.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCaption.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCaption.kt new file mode 100644 index 00000000..6b1966ee --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCaption.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockCaption( + @get:JvmName("text") val text: RichText, + @get:JvmName("credit") val credit: RichText? = null +) From 4858fac76c9b5e5047497640022954710f9a7e14 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 21:34:58 +0200 Subject: [PATCH 03/21] Added the class RichBlockTableCell, which represents a cell in a table. --- .../richmessages/richblock/RichBlockTableCell.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTableCell.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTableCell.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTableCell.kt new file mode 100644 index 00000000..15c22caf --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTableCell.kt @@ -0,0 +1,12 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockTableCell( + @get:JvmName("text") val text: RichText? = null, + @get:JvmName("isHeader") val isHeader: Boolean? = null, + @get:JvmName("colspan") val colspan: Int? = null, + @get:JvmName("rowspan") val rowspan: Int? = null, + @get:JvmName("align") val align: String? = null, + @get:JvmName("valign") val valign: String? = null +) From fad2fe75178de35bfd8d99e129af01a279a1db27 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 21:44:51 +0200 Subject: [PATCH 04/21] Added the classes RichBlock, RichBlockParagraph, RichBlockSectionHeading, RichBlockPreformatted, RichBlockFooter, RichBlockDivider, RichBlockMathematicalExpression, RichBlockAnchor, RichBlockList, RichBlockBlockQuotation, RichBlockPullQuotation, RichBlockCollage, RichBlockSlideshow, RichBlockTable, RichBlockDetails, RichBlockMap, RichBlockAnimation, RichBlockAudio, RichBlockPhoto, RichBlockVideo, RichBlockVoiceNote and RichBlockThinking, which represent different types of blocks in a rich formatted message. --- .../model/richmessages/richblock/RichBlock.kt | 5 +++ .../richmessages/richblock/RichBlockAnchor.kt | 7 +++ .../richblock/RichBlockAnimation.kt | 11 +++++ .../richmessages/richblock/RichBlockAudio.kt | 10 +++++ .../richblock/RichBlockBlockQuotation.kt | 26 +++++++++++ .../richblock/RichBlockCollage.kt | 24 ++++++++++ .../richblock/RichBlockDetails.kt | 28 ++++++++++++ .../richblock/RichBlockDivider.kt | 14 ++++++ .../richmessages/richblock/RichBlockFooter.kt | 9 ++++ .../richmessages/richblock/RichBlockList.kt | 19 ++++++++ .../richblock/RichBlockListItem.kt | 36 +++++++++++++++ .../richmessages/richblock/RichBlockMap.kt | 13 ++++++ .../RichBlockMathematicalExpression.kt | 7 +++ .../richblock/RichBlockParagraph.kt | 9 ++++ .../richmessages/richblock/RichBlockPhoto.kt | 28 ++++++++++++ .../richblock/RichBlockPreformatted.kt | 10 +++++ .../richblock/RichBlockPullQuotation.kt | 10 +++++ .../richblock/RichBlockSectionHeading.kt | 10 +++++ .../richblock/RichBlockSlideshow.kt | 24 ++++++++++ .../richmessages/richblock/RichBlockTable.kt | 33 ++++++++++++++ .../richblock/RichBlockThinking.kt | 9 ++++ .../richmessages/richblock/RichBlockType.kt | 26 +++++++++++ .../richblock/RichBlockUnknown.kt | 15 +++++++ .../richmessages/richblock/RichBlockVideo.kt | 11 +++++ .../richblock/RichBlockVoiceNote.kt | 10 +++++ .../utility/gson/RichBlockTypeAdapter.kt | 44 +++++++++++++++++++ 26 files changed, 448 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlock.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnchor.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnimation.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAudio.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockBlockQuotation.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCollage.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDetails.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDivider.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockFooter.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockList.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockListItem.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMap.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMathematicalExpression.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockParagraph.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPhoto.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPreformatted.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPullQuotation.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSectionHeading.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSlideshow.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockThinking.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockUnknown.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVideo.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVoiceNote.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlock.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlock.kt new file mode 100644 index 00000000..1531c09a --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlock.kt @@ -0,0 +1,5 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +interface RichBlock { + val type: String +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnchor.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnchor.kt new file mode 100644 index 00000000..5b6fe16a --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnchor.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +data class RichBlockAnchor( + @get:JvmName("name") val name: String +) : RichBlock { + override val type: String get() = RichBlockType.ANCHOR +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnimation.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnimation.kt new file mode 100644 index 00000000..bbfaf988 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnimation.kt @@ -0,0 +1,11 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Animation + +data class RichBlockAnimation( + @get:JvmName("animation") val animation: Animation, + @get:JvmName("hasSpoiler") val hasSpoiler: Boolean? = null, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.ANIMATION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAudio.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAudio.kt new file mode 100644 index 00000000..c7804cc5 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAudio.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Audio + +data class RichBlockAudio( + @get:JvmName("audio") val audio: Audio, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.AUDIO +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockBlockQuotation.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockBlockQuotation.kt new file mode 100644 index 00000000..0ead7f7d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockBlockQuotation.kt @@ -0,0 +1,26 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +class RichBlockBlockQuotation( + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("credit") val credit: RichText? = null +) : RichBlock { + + override val type: String get() = RichBlockType.BLOCKQUOTE + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockBlockQuotation + return blocks.contentEquals(other.blocks) && credit == other.credit + } + + override fun hashCode(): Int { + var result = blocks.contentHashCode() + result = 31 * result + (credit?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockBlockQuotation(blocks=${blocks.contentToString()}, credit=$credit)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCollage.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCollage.kt new file mode 100644 index 00000000..07d7abd9 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCollage.kt @@ -0,0 +1,24 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockCollage( + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + + override val type: String get() = RichBlockType.COLLAGE + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockCollage + return blocks.contentEquals(other.blocks) && caption == other.caption + } + + override fun hashCode(): Int { + var result = blocks.contentHashCode() + result = 31 * result + (caption?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockCollage(blocks=${blocks.contentToString()}, caption=$caption)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDetails.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDetails.kt new file mode 100644 index 00000000..d34a9530 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDetails.kt @@ -0,0 +1,28 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +class RichBlockDetails( + @get:JvmName("summary") val summary: RichText, + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("isOpen") val isOpen: Boolean? = null +) : RichBlock { + + override val type: String get() = RichBlockType.DETAILS + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockDetails + return summary == other.summary && blocks.contentEquals(other.blocks) && isOpen == other.isOpen + } + + override fun hashCode(): Int { + var result = summary.hashCode() + result = 31 * result + blocks.contentHashCode() + result = 31 * result + (isOpen?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockDetails(summary=$summary, blocks=${blocks.contentToString()}, isOpen=$isOpen)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDivider.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDivider.kt new file mode 100644 index 00000000..9162c225 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDivider.kt @@ -0,0 +1,14 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockDivider : RichBlock { + override val type: String get() = RichBlockType.DIVIDER + + override fun equals(other: Any?): Boolean { + if (this === other) return true + return other is RichBlockDivider + } + + override fun hashCode(): Int = type.hashCode() + + override fun toString(): String = "RichBlockDivider()" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockFooter.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockFooter.kt new file mode 100644 index 00000000..cf7fce61 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockFooter.kt @@ -0,0 +1,9 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockFooter( + @get:JvmName("text") val text: RichText +) : RichBlock { + override val type: String get() = RichBlockType.FOOTER +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockList.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockList.kt new file mode 100644 index 00000000..f1332c32 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockList.kt @@ -0,0 +1,19 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockList( + @get:JvmName("items") val items: Array +) : RichBlock { + + override val type: String get() = RichBlockType.LIST + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockList + return items.contentEquals(other.items) + } + + override fun hashCode(): Int = items.contentHashCode() + + override fun toString(): String = "RichBlockList(items=${items.contentToString()})" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockListItem.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockListItem.kt new file mode 100644 index 00000000..619d9985 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockListItem.kt @@ -0,0 +1,36 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockListItem( + @get:JvmName("label") val label: String, + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("hasCheckbox") val hasCheckbox: Boolean? = null, + @get:JvmName("isChecked") val isChecked: Boolean? = null, + @get:JvmName("value") val value: Int? = null, + @get:JvmName("type") val type: String? = null +) { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockListItem + return label == other.label && + blocks.contentEquals(other.blocks) && + hasCheckbox == other.hasCheckbox && + isChecked == other.isChecked && + value == other.value && + type == other.type + } + + override fun hashCode(): Int { + var result = label.hashCode() + result = 31 * result + blocks.contentHashCode() + result = 31 * result + (hasCheckbox?.hashCode() ?: 0) + result = 31 * result + (isChecked?.hashCode() ?: 0) + result = 31 * result + (value ?: 0) + result = 31 * result + (type?.hashCode() ?: 0) + return result + } + + override fun toString(): String = + "RichBlockListItem(label='$label', blocks=${blocks.contentToString()}, hasCheckbox=$hasCheckbox, isChecked=$isChecked, value=$value, type=$type)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMap.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMap.kt new file mode 100644 index 00000000..970ab347 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMap.kt @@ -0,0 +1,13 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Location + +data class RichBlockMap( + @get:JvmName("location") val location: Location, + @get:JvmName("zoom") val zoom: Int, + @get:JvmName("width") val width: Int, + @get:JvmName("height") val height: Int, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.MAP +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMathematicalExpression.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMathematicalExpression.kt new file mode 100644 index 00000000..66cdb94e --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMathematicalExpression.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +data class RichBlockMathematicalExpression( + @get:JvmName("expression") val expression: String +) : RichBlock { + override val type: String get() = RichBlockType.MATHEMATICAL_EXPRESSION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockParagraph.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockParagraph.kt new file mode 100644 index 00000000..5fa2c51c --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockParagraph.kt @@ -0,0 +1,9 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockParagraph( + @get:JvmName("text") val text: RichText +) : RichBlock { + override val type: String get() = RichBlockType.PARAGRAPH +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPhoto.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPhoto.kt new file mode 100644 index 00000000..de5816b0 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPhoto.kt @@ -0,0 +1,28 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.PhotoSize + +class RichBlockPhoto( + @get:JvmName("photo") val photo: Array, + @get:JvmName("hasSpoiler") val hasSpoiler: Boolean? = null, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + + override val type: String get() = RichBlockType.PHOTO + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockPhoto + return photo.contentEquals(other.photo) && hasSpoiler == other.hasSpoiler && caption == other.caption + } + + override fun hashCode(): Int { + var result = photo.contentHashCode() + result = 31 * result + (hasSpoiler?.hashCode() ?: 0) + result = 31 * result + (caption?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockPhoto(photo=${photo.contentToString()}, hasSpoiler=$hasSpoiler, caption=$caption)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPreformatted.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPreformatted.kt new file mode 100644 index 00000000..fc8f3aac --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPreformatted.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockPreformatted( + @get:JvmName("text") val text: RichText, + @get:JvmName("language") val language: String? = null +) : RichBlock { + override val type: String get() = RichBlockType.PRE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPullQuotation.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPullQuotation.kt new file mode 100644 index 00000000..49aa118c --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPullQuotation.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockPullQuotation( + @get:JvmName("text") val text: RichText, + @get:JvmName("credit") val credit: RichText? = null +) : RichBlock { + override val type: String get() = RichBlockType.PULLQUOTE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSectionHeading.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSectionHeading.kt new file mode 100644 index 00000000..4d352390 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSectionHeading.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockSectionHeading( + @get:JvmName("text") val text: RichText, + @get:JvmName("size") val size: Int +) : RichBlock { + override val type: String get() = RichBlockType.HEADING +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSlideshow.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSlideshow.kt new file mode 100644 index 00000000..e7193a91 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSlideshow.kt @@ -0,0 +1,24 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockSlideshow( + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + + override val type: String get() = RichBlockType.SLIDESHOW + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockSlideshow + return blocks.contentEquals(other.blocks) && caption == other.caption + } + + override fun hashCode(): Int { + var result = blocks.contentHashCode() + result = 31 * result + (caption?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockSlideshow(blocks=${blocks.contentToString()}, caption=$caption)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt new file mode 100644 index 00000000..40952095 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt @@ -0,0 +1,33 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +class RichBlockTable( + @get:JvmName("cells") val cells: Array>, + @get:JvmName("isBordered") val isBordered: Boolean? = null, + @get:JvmName("isStriped") val isStriped: Boolean? = null, + @get:JvmName("caption") val caption: RichText? = null +) : RichBlock { + + override val type: String get() = RichBlockType.TABLE + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockTable + return cells.contentDeepEquals(other.cells) && + isBordered == other.isBordered && + isStriped == other.isStriped && + caption == other.caption + } + + override fun hashCode(): Int { + var result = cells.contentDeepHashCode() + result = 31 * result + (isBordered?.hashCode() ?: 0) + result = 31 * result + (isStriped?.hashCode() ?: 0) + result = 31 * result + (caption?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockTable(cells=${cells.contentDeepToString()}, isBordered=$isBordered, isStriped=$isStriped, caption=$caption)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockThinking.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockThinking.kt new file mode 100644 index 00000000..0dfebf77 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockThinking.kt @@ -0,0 +1,9 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockThinking( + @get:JvmName("text") val text: RichText +) : RichBlock { + override val type: String get() = RichBlockType.THINKING +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt new file mode 100644 index 00000000..7408aa18 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt @@ -0,0 +1,26 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +object RichBlockType { + const val PARAGRAPH = "paragraph" + const val HEADING = "heading" + const val PRE = "pre" + const val FOOTER = "footer" + const val DIVIDER = "divider" + const val MATHEMATICAL_EXPRESSION = "mathematical_expression" + const val ANCHOR = "anchor" + const val LIST = "list" + const val BLOCKQUOTE = "blockquote" + const val PULLQUOTE = "pullquote" + const val COLLAGE = "collage" + const val SLIDESHOW = "slideshow" + const val TABLE = "table" + const val DETAILS = "details" + const val MAP = "map" + const val ANIMATION = "animation" + const val AUDIO = "audio" + const val PHOTO = "photo" + const val VIDEO = "video" + const val VOICE_NOTE = "voice_note" + const val THINKING = "thinking" + const val UNKNOWN = "unknown" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockUnknown.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockUnknown.kt new file mode 100644 index 00000000..9e11df6e --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockUnknown.kt @@ -0,0 +1,15 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockUnknown(override val type: String = RichBlockType.UNKNOWN) : RichBlock { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockUnknown + return type == other.type + } + + override fun hashCode(): Int = type.hashCode() + + override fun toString(): String = "RichBlockUnknown(type='$type')" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVideo.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVideo.kt new file mode 100644 index 00000000..12c72a32 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVideo.kt @@ -0,0 +1,11 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Video + +data class RichBlockVideo( + @get:JvmName("video") val video: Video, + @get:JvmName("hasSpoiler") val hasSpoiler: Boolean? = null, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.VIDEO +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVoiceNote.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVoiceNote.kt new file mode 100644 index 00000000..9d8c0c8a --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVoiceNote.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Voice + +data class RichBlockVoiceNote( + @get:JvmName("voiceNote") val voiceNote: Voice, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.VOICE_NOTE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt new file mode 100644 index 00000000..53b81263 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.pengrad.telegrambot.utility.gson + +import com.google.gson.JsonDeserializationContext +import com.google.gson.JsonDeserializer +import com.google.gson.JsonElement +import com.google.gson.JsonParseException +import com.pengrad.telegrambot.model.richmessages.richblock.* +import java.lang.reflect.Type + +object RichBlockTypeAdapter : JsonDeserializer { + + private val typeMapping = mapOf( + RichBlockType.PARAGRAPH to RichBlockParagraph::class, + RichBlockType.HEADING to RichBlockSectionHeading::class, + RichBlockType.PRE to RichBlockPreformatted::class, + RichBlockType.FOOTER to RichBlockFooter::class, + RichBlockType.DIVIDER to RichBlockDivider::class, + RichBlockType.MATHEMATICAL_EXPRESSION to RichBlockMathematicalExpression::class, + RichBlockType.ANCHOR to RichBlockAnchor::class, + RichBlockType.LIST to RichBlockList::class, + RichBlockType.BLOCKQUOTE to RichBlockBlockQuotation::class, + RichBlockType.PULLQUOTE to RichBlockPullQuotation::class, + RichBlockType.COLLAGE to RichBlockCollage::class, + RichBlockType.SLIDESHOW to RichBlockSlideshow::class, + RichBlockType.TABLE to RichBlockTable::class, + RichBlockType.DETAILS to RichBlockDetails::class, + RichBlockType.MAP to RichBlockMap::class, + RichBlockType.ANIMATION to RichBlockAnimation::class, + RichBlockType.AUDIO to RichBlockAudio::class, + RichBlockType.PHOTO to RichBlockPhoto::class, + RichBlockType.VIDEO to RichBlockVideo::class, + RichBlockType.VOICE_NOTE to RichBlockVoiceNote::class, + RichBlockType.THINKING to RichBlockThinking::class + ) + + @Throws(JsonParseException::class) + override fun deserialize(element: JsonElement, type: Type, context: JsonDeserializationContext): RichBlock { + val obj = element.asJsonObject + val discriminator = obj.getAsJsonPrimitive("type")?.asString ?: RichBlockType.UNKNOWN + return typeMapping[discriminator]?.let { + context.deserialize(obj, it.java) + } ?: RichBlockUnknown(discriminator) + } +} From 86842696bdfca91a6e3caa1c65a142dcb02473a7 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 21:45:11 +0200 Subject: [PATCH 05/21] Register RichText and RichBlock adapters --- .../main/java/com/pengrad/telegrambot/utility/BotUtils.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java b/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java index 323a79e0..640786b4 100644 --- a/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java +++ b/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java @@ -12,6 +12,8 @@ import com.pengrad.telegrambot.model.message.origin.MessageOrigin; import com.pengrad.telegrambot.model.paidmedia.PaidMedia; import com.pengrad.telegrambot.model.reaction.ReactionType; +import com.pengrad.telegrambot.model.richmessages.richblock.RichBlock; +import com.pengrad.telegrambot.model.richmessages.richtext.RichText; import com.pengrad.telegrambot.model.stars.partner.TransactionPartner; import com.pengrad.telegrambot.model.stars.withdrawal.RevenueWithdrawalState; import com.pengrad.telegrambot.utility.gson.*; @@ -40,6 +42,8 @@ private BotUtils() {} .registerTypeAdapter(TransactionPartner.class, TransactionPartnerTypeAdapter.INSTANCE) .registerTypeAdapter(PaidMedia.class, new PaidMediaTypeAdapter()) .registerTypeAdapter(OwnedGift.class, new OwnedGiftTypeAdapter()) + .registerTypeAdapter(RichText.class, RichTextTypeAdapter.INSTANCE) + .registerTypeAdapter(RichBlock.class, RichBlockTypeAdapter.INSTANCE) .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .create(); From 885275a32eaea2339a2cb3a834159c9a0776ed34 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 21:46:08 +0200 Subject: [PATCH 06/21] Added the class RichMessage, which represents a rich formatted message. --- .../model/richmessages/RichMessage.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessage.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessage.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessage.kt new file mode 100644 index 00000000..12eb2c83 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessage.kt @@ -0,0 +1,24 @@ +package com.pengrad.telegrambot.model.richmessages + +import com.pengrad.telegrambot.model.richmessages.richblock.RichBlock + +class RichMessage( + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("isRtl") val isRtl: Boolean? = null +) { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichMessage + return blocks.contentEquals(other.blocks) && isRtl == other.isRtl + } + + override fun hashCode(): Int { + var result = blocks.contentHashCode() + result = 31 * result + (isRtl?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichMessage(blocks=${blocks.contentToString()}, isRtl=$isRtl)" +} From f54280328c875b1f2775d2bb5a010eacc435b224 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 21:49:04 +0200 Subject: [PATCH 07/21] Added the field rich_message to the class Message. --- .../main/java/com/pengrad/telegrambot/model/Message.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Message.java b/library/src/main/java/com/pengrad/telegrambot/model/Message.java index 9606ea51..8aebc1b0 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/Message.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/Message.java @@ -17,6 +17,7 @@ import com.pengrad.telegrambot.model.message.origin.*; import com.pengrad.telegrambot.model.paidmedia.PaidMediaInfo; import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup; +import com.pengrad.telegrambot.model.richmessages.RichMessage; import com.pengrad.telegrambot.model.stars.DirectMessagePriceChanged; import com.pengrad.telegrambot.model.stars.PaidMessagePriceChanged; import com.pengrad.telegrambot.model.suggestedposts.*; @@ -64,6 +65,7 @@ public class Message extends MaybeInaccessibleMessage implements Serializable { private LinkPreviewOptions link_preview_options; private SuggestedPostInfo suggested_post_info; private String effect_id; + private RichMessage rich_message; private Audio audio; private PaidMediaInfo paid_media; private Document document; @@ -270,6 +272,10 @@ public String effectId() { return effect_id; } + public RichMessage richMessage() { + return rich_message; + } + public Audio audio() { return audio; } @@ -650,6 +656,7 @@ public boolean equals(Object o) { Objects.equals(link_preview_options, message.link_preview_options) && Objects.equals(suggested_post_info, message.suggested_post_info) && Objects.equals(effect_id, message.effect_id) && + Objects.equals(rich_message, message.rich_message) && Objects.equals(audio, message.audio) && Objects.equals(paid_media, message.paid_media) && Objects.equals(document, message.document) && @@ -774,6 +781,7 @@ public String toString() { ", link_preview_options=" + link_preview_options + ", suggested_post_info=" + suggested_post_info + ", effect_id=" + effect_id + + ", rich_message=" + rich_message + ", audio=" + audio + ", paid_media=" + paid_media + ", document=" + document + From 6548bb3a7025b1508c0390dd7ceed7cd9c95982a Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:05:32 +0200 Subject: [PATCH 08/21] Added the classes InputRichMessage and InputRichMessageContent --- .../request/richmessages/InputRichMessage.kt | 45 +++++++++++++++++++ .../richmessages/InputRichMessageContent.kt | 19 ++++++++ 2 files changed, 64 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageContent.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt new file mode 100644 index 00000000..ec61a5d2 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt @@ -0,0 +1,45 @@ +package com.pengrad.telegrambot.model.request.richmessages + +class InputRichMessage private constructor( + @get:JvmName("html") var html: String?, + @get:JvmName("markdown") var markdown: String?, + @get:JvmName("isRtl") var isRtl: Boolean?, + @get:JvmName("skipEntityDetection") var skipEntityDetection: Boolean? +) { + + constructor() : this( + html = null, + markdown = null, + isRtl = null, + skipEntityDetection = null + ) + + fun html(html: String) = apply { this.html = html } + + fun markdown(markdown: String) = apply { this.markdown = markdown } + + fun isRtl(isRtl: Boolean) = apply { this.isRtl = isRtl } + + fun skipEntityDetection(skipEntityDetection: Boolean) = apply { this.skipEntityDetection = skipEntityDetection } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as InputRichMessage + return html == other.html && + markdown == other.markdown && + isRtl == other.isRtl && + skipEntityDetection == other.skipEntityDetection + } + + override fun hashCode(): Int { + var result = html?.hashCode() ?: 0 + result = 31 * result + (markdown?.hashCode() ?: 0) + result = 31 * result + (isRtl?.hashCode() ?: 0) + result = 31 * result + (skipEntityDetection?.hashCode() ?: 0) + return result + } + + override fun toString(): String = + "InputRichMessage(html=$html, markdown=$markdown, isRtl=$isRtl, skipEntityDetection=$skipEntityDetection)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageContent.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageContent.kt new file mode 100644 index 00000000..8350bcde --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageContent.kt @@ -0,0 +1,19 @@ +package com.pengrad.telegrambot.model.request.richmessages + +import com.pengrad.telegrambot.model.request.InputMessageContent + +class InputRichMessageContent( + @get:JvmName("richMessage") val richMessage: InputRichMessage +) : InputMessageContent() { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as InputRichMessageContent + return richMessage == other.richMessage + } + + override fun hashCode(): Int = richMessage.hashCode() + + override fun toString(): String = "InputRichMessageContent(richMessage=$richMessage)" +} From db07de9b1890d2aa4afdf0cb8db55078934ebb87 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:08:00 +0200 Subject: [PATCH 09/21] Added the method sendRichMessage, allowing bots to send rich messages. --- .../request/richmessages/SendRichMessage.kt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt new file mode 100644 index 00000000..72fa1f9f --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt @@ -0,0 +1,40 @@ +package com.pengrad.telegrambot.request.richmessages + +import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage +import com.pengrad.telegrambot.request.AbstractSendRequest +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +@Suppress("unused") +class SendRichMessage private constructor( + chatId: Long? = null, + channelUsername: String? = null, + richMessage: InputRichMessage +) : AbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername +) { + + constructor(chatId: Long, richMessage: InputRichMessage) : this( + chatId = chatId, + channelUsername = null, + richMessage = richMessage + ) + + constructor(channelUsername: String, richMessage: InputRichMessage) : this( + chatId = null, + channelUsername = channelUsername, + richMessage = richMessage + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendRichMessage(chatId, richMessage)")) + constructor(chatId: Any, richMessage: InputRichMessage) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + richMessage = richMessage + ) { + checkDeprecatedConstructorParameters() + } + + val richMessage: InputRichMessage by requestParameter(richMessage) +} From 19f2b5600d279b28f843373c71eb3920f8b09252 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:08:08 +0200 Subject: [PATCH 10/21] Added the method sendRichMessageDraft, allowing bots to stream partial rich messages. --- .../richmessages/SendRichMessageDraft.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt new file mode 100644 index 00000000..5285729d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt @@ -0,0 +1,23 @@ +package com.pengrad.telegrambot.request.richmessages + +import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage +import com.pengrad.telegrambot.request.KBaseRequest +import com.pengrad.telegrambot.response.BaseResponse +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +@Suppress("unused") +class SendRichMessageDraft( + chatId: Long, + draftId: Int, + richMessage: InputRichMessage +) : KBaseRequest(BaseResponse::class) { + + val chatId: Long by requestParameter(chatId) + val draftId: Int by requestParameter(draftId) + val richMessage: InputRichMessage by requestParameter(richMessage) + + var messageThreadId: Long? by optionalRequestParameter() + + fun messageThreadId(messageThreadId: Long) = applySelf { this.messageThreadId = messageThreadId } +} From 5c7a8b514401ee095b9dded2846f2ef625c70cf2 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:09:24 +0200 Subject: [PATCH 11/21] Added the parameter rich_message to the method editMessageText, allowing bots to edit rich messages. --- .../com/pengrad/telegrambot/request/EditMessageText.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java b/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java index 1443e0dd..0153d211 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java @@ -4,6 +4,7 @@ import com.pengrad.telegrambot.model.MessageEntity; import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup; import com.pengrad.telegrambot.model.request.ParseMode; +import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage; import com.pengrad.telegrambot.response.BaseResponse; import com.pengrad.telegrambot.response.SendResponse; @@ -43,4 +44,8 @@ public EditMessageText businessConnectionId(String businessConnectionId) { return add("business_connection_id", businessConnectionId); } + public EditMessageText richMessage(InputRichMessage richMessage) { + return add("rich_message", richMessage); + } + } From 7d4b211ebd56f9a174abd18bc4f7b80690187624 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:12:35 +0200 Subject: [PATCH 12/21] Added the field supports_join_request_queries to the class User. --- .../main/java/com/pengrad/telegrambot/model/User.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/User.java b/library/src/main/java/com/pengrad/telegrambot/model/User.java index 89629475..f10bb890 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/User.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/User.java @@ -27,6 +27,7 @@ public class User implements Serializable { private Boolean allows_users_to_create_topics; private Boolean can_manage_bots; private Boolean supports_guest_queries; + private Boolean supports_join_request_queries; private User() { } @@ -103,6 +104,10 @@ public Boolean supportsGuestQueries() { return supports_guest_queries != null && supports_guest_queries; } + public Boolean supportsJoinRequestQueries() { + return supports_join_request_queries != null && supports_join_request_queries; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -116,7 +121,8 @@ public boolean equals(Object o) { && Objects.equals(has_main_web_app, user.has_main_web_app) && Objects.equals(has_topics_enabled, user.has_topics_enabled) && Objects.equals(allows_users_to_create_topics, user.allows_users_to_create_topics) && Objects.equals(can_manage_bots, user.can_manage_bots) - && Objects.equals(supports_guest_queries, user.supports_guest_queries); + && Objects.equals(supports_guest_queries, user.supports_guest_queries) + && Objects.equals(supports_join_request_queries, user.supports_join_request_queries); } @Override @@ -144,6 +150,7 @@ public String toString() { ", allows_users_to_create_topics=" + allows_users_to_create_topics + ", can_manage_bots=" + can_manage_bots + ", supports_guest_queries=" + supports_guest_queries + + ", supports_join_request_queries=" + supports_join_request_queries + '}'; } } \ No newline at end of file From 51b235d904e133c00135c5610bd9f1e1ab54dd38 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:13:30 +0200 Subject: [PATCH 13/21] Added the field guard_bot to the class ChatFullInfo. --- .../java/com/pengrad/telegrambot/model/ChatFullInfo.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java index e928a1b7..8de790db 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java @@ -79,6 +79,7 @@ public enum Type { private Integer paid_message_star_count; private UniqueGiftColors unique_gift_colors; private Audio first_profile_audio; + private User guard_bot; public Long id() { return id; @@ -283,6 +284,10 @@ public Audio firstProfileAudio() { return first_profile_audio; } + public User guardBot() { + return guard_bot; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -338,7 +343,8 @@ public boolean equals(Object o) { Objects.equals(rating, chat.rating) && Objects.equals(paid_message_star_count, chat.paid_message_star_count) && Objects.equals(unique_gift_colors, chat.unique_gift_colors) && - Objects.equals(first_profile_audio, chat.first_profile_audio); + Objects.equals(first_profile_audio, chat.first_profile_audio) && + Objects.equals(guard_bot, chat.guard_bot); } @Override @@ -400,6 +406,7 @@ public String toString() { ", paid_message_star_count=" + paid_message_star_count + ", unique_gift_colors=" + unique_gift_colors + ", first_profile_audio=" + first_profile_audio + + ", guard_bot=" + guard_bot + '}'; } } From f37fab7c0a9f89c37f06d8370a7e0d1256900261 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:14:29 +0200 Subject: [PATCH 14/21] Added the field query_id to the class ChatJoinRequest. --- .../com/pengrad/telegrambot/model/ChatJoinRequest.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java index b067670f..27afb9cf 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java @@ -16,6 +16,7 @@ public class ChatJoinRequest implements Serializable { private Integer date; private String bio; private ChatInviteLink invite_link; + private String query_id; public Chat chat() { return chat; @@ -41,6 +42,9 @@ public ChatInviteLink inviteLink() { return invite_link; } + public String queryId() { + return query_id; + } @Override public boolean equals(Object o) { @@ -52,12 +56,13 @@ public boolean equals(Object o) { Objects.equals(user_chat_id, that.user_chat_id) && Objects.equals(date, that.date) && Objects.equals(bio, that.bio) && - Objects.equals(invite_link, that.invite_link); + Objects.equals(invite_link, that.invite_link) && + Objects.equals(query_id, that.query_id); } @Override public int hashCode() { - return Objects.hash(chat, from, user_chat_id, date, bio, invite_link); + return Objects.hash(chat, from, user_chat_id, date, bio, invite_link, query_id); } @Override @@ -69,6 +74,7 @@ public String toString() { ", date=" + date + ", bio=" + bio + ", invite_link=" + invite_link + + ", query_id=" + query_id + '}'; } } From dee414cb6358c9562d45d690fde6c8b2db5bec47 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:16:01 +0200 Subject: [PATCH 15/21] Added the method answerChatJoinRequestQuery. --- .../request/AnswerChatJoinRequestQuery.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/AnswerChatJoinRequestQuery.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/AnswerChatJoinRequestQuery.kt b/library/src/main/java/com/pengrad/telegrambot/request/AnswerChatJoinRequestQuery.kt new file mode 100644 index 00000000..8d7207f9 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/AnswerChatJoinRequestQuery.kt @@ -0,0 +1,14 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.response.BaseResponse +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class AnswerChatJoinRequestQuery( + chatJoinRequestQueryId: String, + result: String, +) : KBaseRequest(BaseResponse::class) { + + val chatJoinRequestQueryId: String by requestParameter(chatJoinRequestQueryId) + val result: String by requestParameter(result) + +} From 59fb8f317c5f08a3e0225fe4ca7fac88f69da2da Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:18:00 +0200 Subject: [PATCH 16/21] Added the method sendChatJoinRequestWebApp. --- .../request/SendChatJoinRequestWebApp.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendChatJoinRequestWebApp.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendChatJoinRequestWebApp.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendChatJoinRequestWebApp.kt new file mode 100644 index 00000000..6dfe8e16 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendChatJoinRequestWebApp.kt @@ -0,0 +1,14 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.response.BaseResponse +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class SendChatJoinRequestWebApp( + chatJoinRequestQueryId: String, + webAppUrl: String, +) : KBaseRequest(BaseResponse::class) { + + val chatJoinRequestQueryId: String by requestParameter(chatJoinRequestQueryId) + val webAppUrl: String by requestParameter(webAppUrl) + +} From 681e4bf42fe84feeca2155e65fa149b45f91cc80 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:19:28 +0200 Subject: [PATCH 17/21] Added the class Link and the field link to the class PollMedia. --- library/src/main/java/com/pengrad/telegrambot/model/Link.kt | 5 +++++ .../src/main/java/com/pengrad/telegrambot/model/PollMedia.kt | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/Link.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Link.kt b/library/src/main/java/com/pengrad/telegrambot/model/Link.kt new file mode 100644 index 00000000..05a5353d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/Link.kt @@ -0,0 +1,5 @@ +package com.pengrad.telegrambot.model + +data class Link( + @get:JvmName("url") val url: String, +) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/PollMedia.kt b/library/src/main/java/com/pengrad/telegrambot/model/PollMedia.kt index fa569af3..67fc35a8 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/PollMedia.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/PollMedia.kt @@ -10,6 +10,7 @@ data class PollMedia( @get:JvmName("sticker") val sticker: Sticker? = null, @get:JvmName("venue") val venue: Venue? = null, @get:JvmName("video") val video: Video? = null, + @get:JvmName("link") val link: Link? = null, ) { override fun equals(other: Any?): Boolean { if (this === other) return true @@ -22,7 +23,8 @@ data class PollMedia( photo contentEquals other.photo && sticker == other.sticker && venue == other.venue && - video == other.video + video == other.video && + link == other.link } override fun hashCode(): Int { @@ -35,6 +37,7 @@ data class PollMedia( result = 31 * result + (sticker?.hashCode() ?: 0) result = 31 * result + (venue?.hashCode() ?: 0) result = 31 * result + (video?.hashCode() ?: 0) + result = 31 * result + (link?.hashCode() ?: 0) return result } } From bcb5d156a5d3328c5e6bcb7bfcb95744b347b793 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:21:17 +0200 Subject: [PATCH 18/21] Added the class InputMediaLink and allowed it to be used as InputPollOptionMedia. --- .../telegrambot/model/request/InputMediaLink.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaLink.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaLink.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaLink.kt new file mode 100644 index 00000000..bf42933b --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaLink.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.request + +import java.io.Serializable + +class InputMediaLink( + val url: String, +) : InputPollOptionMedia, Serializable { + + val type: String = "link" +} From 043e8b79e0434951fe886e248cd4fcc4536c5343 Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:28:54 +0200 Subject: [PATCH 19/21] v10.1 --- README.md | 6 +++--- gradle.properties | 2 +- pom.xml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c9ae45cb..1e6c446c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![codecov](https://codecov.io/gh/pengrad/java-telegram-bot-api/branch/master/graph/badge.svg)](https://codecov.io/gh/pengrad/java-telegram-bot-api) Java library for interacting with [Telegram Bot API](https://core.telegram.org/bots/api) -- Full support of all Bot API 10.0 methods +- Full support of all Bot API 10.1 methods - Telegram [Passport](https://core.telegram.org/passport) and Decryption API - Bot [Payments](https://core.telegram.org/bots/payments) - [Gaming Platform](https://telegram.org/blog/games) @@ -13,14 +13,14 @@ Java library for interacting with [Telegram Bot API](https://core.telegram.org/b Gradle: ```groovy -implementation 'com.github.pengrad:java-telegram-bot-api:10.0.0' +implementation 'com.github.pengrad:java-telegram-bot-api:10.1.0' ``` Maven: ```xml com.github.pengrad java-telegram-bot-api - 10.0.0 + 10.1.0 ``` [JAR with all dependencies on release page](https://github.com/pengrad/java-telegram-bot-api/releases) diff --git a/gradle.properties b/gradle.properties index 69db2f62..4be86b11 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ GROUP=com.github.pengrad -VERSION_NAME=10.0.0 +VERSION_NAME=10.1.0 POM_DESCRIPTION=Java API for Telegram Bot API POM_URL=https://github.com/pengrad/java-telegram-bot-api/ diff --git a/pom.xml b/pom.xml index 23269862..41763de9 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 4.0.0 com.github.pengrad java-telegram-bot-api - 10.0.0 + 10.1.0 JavaTelegramBotApi Java API for Telegram Bot API https://github.com/pengrad/java-telegram-bot-api/ From 7a012d8ee751350f8753382c55d2cd99abb3527a Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:38:48 +0200 Subject: [PATCH 20/21] EditMessageText: add constructors for InputRichMessage --- .../pengrad/telegrambot/request/EditMessageText.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java b/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java index 0153d211..4a3aeb28 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java @@ -24,6 +24,16 @@ public EditMessageText(String inlineMessageId, String text) { add("inline_message_id", inlineMessageId).add("text", text); } + public EditMessageText(Object chatId, int messageId, InputRichMessage richMessage) { + super(SendResponse.class); + add("chat_id", chatId).add("message_id", messageId).add("rich_message", richMessage); + } + + public EditMessageText(String inlineMessageId, InputRichMessage richMessage) { + super(BaseResponse.class); + add("inline_message_id", inlineMessageId).add("rich_message", richMessage); + } + public EditMessageText parseMode(ParseMode parseMode) { return add("parse_mode", parseMode.name()); } From 94161df6f91991998a7c0975522eee7fc84b846d Mon Sep 17 00:00:00 2001 From: Mirco Ianese Date: Thu, 11 Jun 2026 22:47:23 +0200 Subject: [PATCH 21/21] Updated all timestamp fields from Integer to Long (since are unix timestamps) --- .../com/pengrad/telegrambot/model/ChatFullInfo.java | 4 ++-- .../com/pengrad/telegrambot/model/ChatInviteLink.java | 4 ++-- .../com/pengrad/telegrambot/model/ChatJoinRequest.java | 4 ++-- .../java/com/pengrad/telegrambot/model/ChatMember.java | 4 ++-- .../pengrad/telegrambot/model/ChatMemberUpdated.java | 4 ++-- .../java/com/pengrad/telegrambot/model/Message.java | 6 +++--- .../com/pengrad/telegrambot/model/MessageEntity.java | 6 +++--- .../telegrambot/model/MessageReactionCountUpdated.java | 4 ++-- .../telegrambot/model/MessageReactionUpdated.java | 4 ++-- .../main/java/com/pengrad/telegrambot/model/Poll.java | 4 ++-- .../java/com/pengrad/telegrambot/model/PollOption.java | 4 ++-- .../pengrad/telegrambot/model/PreparedInlineMessage.kt | 2 +- .../com/pengrad/telegrambot/model/SuccessfulPayment.kt | 2 +- .../pengrad/telegrambot/model/VideoChatScheduled.java | 4 ++-- .../com/pengrad/telegrambot/model/WebhookInfo.java | 8 ++++---- .../telegrambot/model/business/BusinessConnection.java | 4 ++-- .../pengrad/telegrambot/model/chatboost/ChatBoost.java | 8 ++++---- .../telegrambot/model/chatboost/ChatBoostRemoved.java | 4 ++-- .../telegrambot/model/checklist/ChecklistTask.kt | 2 +- .../pengrad/telegrambot/model/giveaway/Giveaway.java | 4 ++-- .../telegrambot/model/giveaway/GiveawayWinners.java | 4 ++-- .../model/message/MaybeInaccessibleMessage.java | 4 ++-- .../model/message/origin/MessageOrigin.java | 4 ++-- .../pengrad/telegrambot/model/stars/StarTransaction.kt | 2 +- .../withdrawal/RevenueWithdrawalStateSucceeded.java | 4 ++-- .../com/pengrad/telegrambot/passport/PassportFile.java | 4 ++-- .../com/pengrad/telegrambot/request/BanChatMember.java | 2 +- .../telegrambot/request/CreateChatInviteLink.java | 2 +- .../telegrambot/request/EditChatInviteLink.java | 2 +- .../telegrambot/request/RestrictChatMember.java | 2 +- .../pengrad/telegrambot/request/SetUserEmojiStatus.kt | 4 ++-- .../java/com/pengrad/telegrambot/TelegramBotTest.java | 10 +++++----- 32 files changed, 65 insertions(+), 65 deletions(-) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java index 8de790db..af73d609 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java @@ -51,7 +51,7 @@ public enum Type { private Integer profile_accent_color_id; private String profile_background_custom_emoji_id; private String emoji_status_custom_emoji_id; - private Integer emoji_status_expiration_date; + private Long emoji_status_expiration_date; private String bio; private Boolean has_private_forwards; private Boolean has_restricted_voice_and_video_messages; @@ -173,7 +173,7 @@ public String emojiStatusCustomEmojiId() { return emoji_status_custom_emoji_id; } - public Integer emojiStatusExpirationDate() { + public Long emojiStatusExpirationDate() { return emoji_status_expiration_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatInviteLink.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatInviteLink.java index f5c58458..cccab235 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatInviteLink.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatInviteLink.java @@ -16,7 +16,7 @@ public class ChatInviteLink implements Serializable { private Boolean is_primary; private Boolean is_revoked; private String name; - private Integer expire_date; + private Long expire_date; private Integer member_limit; private Integer pending_join_request_count; @@ -45,7 +45,7 @@ public String name() { return name; } - public Integer expireDate() { + public Long expireDate() { return expire_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java index 27afb9cf..5d4ecc24 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java @@ -13,7 +13,7 @@ public class ChatJoinRequest implements Serializable { private Chat chat; private User from; private Long user_chat_id; - private Integer date; + private Long date; private String bio; private ChatInviteLink invite_link; private String query_id; @@ -30,7 +30,7 @@ public Long userChatId() { return user_chat_id; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java index f3c2131f..5ee8e175 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java @@ -19,7 +19,7 @@ public enum Status { private String custom_title; private Boolean is_anonymous; - private Integer until_date; + private Long until_date; private Boolean can_be_edited; private Boolean can_manage_chat; private Boolean can_post_messages; @@ -70,7 +70,7 @@ public Boolean isAnonymous() { return is_anonymous != null && is_anonymous; } - public Integer untilDate() { + public Long untilDate() { return until_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatMemberUpdated.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatMemberUpdated.java index 10ec6ac4..56559427 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatMemberUpdated.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatMemberUpdated.java @@ -12,7 +12,7 @@ public class ChatMemberUpdated implements Serializable { private Chat chat; private User from; - private Integer date; + private Long date; private ChatMember old_chat_member; private ChatMember new_chat_member; private ChatInviteLink invite_link; @@ -27,7 +27,7 @@ public User from() { return from; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Message.java b/library/src/main/java/com/pengrad/telegrambot/model/Message.java index 8aebc1b0..03756586 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/Message.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/Message.java @@ -51,7 +51,7 @@ public class Message extends MaybeInaccessibleMessage implements Serializable { private Story reply_to_story; private Integer reply_to_checklist_task_id; private User via_bot; - private Integer edit_date; + private Long edit_date; private Boolean has_protected_content; private Boolean is_from_offline; private Boolean is_paid_post; @@ -215,7 +215,7 @@ public User viaBot() { return via_bot; } - public Integer editDate() { + public Long editDate() { return edit_date; } @@ -613,7 +613,7 @@ void setMessageId(Integer messageId) { /** * Only for backwards-compatibility with MaybeInaccessibleMessage */ - void setDate(Integer date) { + void setDate(Long date) { this.date = date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java b/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java index 9f2e8bbf..095a6328 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java @@ -22,7 +22,7 @@ public enum Type { private User user; private String language; private String custom_emoji_id; - private Integer unix_time; + private Long unix_time; private String date_time_format; private MessageEntity() { @@ -62,7 +62,7 @@ public String customEmojiId() { return custom_emoji_id; } - public Integer unixTime() { + public Long unixTime() { return unix_time; } @@ -90,7 +90,7 @@ public MessageEntity customEmojiId(String custom_emoji_id) { return this; } - public MessageEntity unixTime(Integer unix_time) { + public MessageEntity unixTime(Long unix_time) { this.unix_time = unix_time; return this; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionCountUpdated.java b/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionCountUpdated.java index 55a38694..5dcdade6 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionCountUpdated.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionCountUpdated.java @@ -9,7 +9,7 @@ public class MessageReactionCountUpdated { private Chat chat; private Integer message_id; - private Integer date; + private Long date; private ReactionCount[] reactions; public Chat chat() { @@ -20,7 +20,7 @@ public Integer messageId() { return message_id; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionUpdated.java b/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionUpdated.java index 73e60f52..68c91072 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionUpdated.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionUpdated.java @@ -11,7 +11,7 @@ public class MessageReactionUpdated { private Integer message_id; private User user; private Chat actor_chat; - private Integer date; + private Long date; private ReactionType[] old_reaction; private ReactionType[] new_reaction; @@ -31,7 +31,7 @@ public Chat actorChat() { return actor_chat; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Poll.java b/library/src/main/java/com/pengrad/telegrambot/model/Poll.java index bdd6f2c3..42d8286c 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/Poll.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/Poll.java @@ -28,7 +28,7 @@ public enum Type { private String explanation; private MessageEntity[] explanation_entities; private Integer open_period; - private Integer close_date; + private Long close_date; private String description; private MessageEntity[] description_entities; private PollMedia media; @@ -96,7 +96,7 @@ public Integer openPeriod() { return open_period; } - public Integer closeDate() { + public Long closeDate() { return close_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/PollOption.java b/library/src/main/java/com/pengrad/telegrambot/model/PollOption.java index c7413918..86e3c7f9 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/PollOption.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/PollOption.java @@ -17,7 +17,7 @@ public class PollOption implements Serializable { private MessageEntity[] text_entities; private User added_by_user; private Chat added_by_chat; - private Integer addition_date; + private Long addition_date; private PollMedia media; public String persistentId() { @@ -44,7 +44,7 @@ public Chat addedByChat() { return added_by_chat; } - public Integer additionDate() { + public Long additionDate() { return addition_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/PreparedInlineMessage.kt b/library/src/main/java/com/pengrad/telegrambot/model/PreparedInlineMessage.kt index 7c68320a..e59dc795 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/PreparedInlineMessage.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/PreparedInlineMessage.kt @@ -2,5 +2,5 @@ package com.pengrad.telegrambot.model data class PreparedInlineMessage( @get:JvmName("id") val id: String, - @get:JvmName("expirationDate") val expirationDate: Int + @get:JvmName("expirationDate") val expirationDate: Long ) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/SuccessfulPayment.kt b/library/src/main/java/com/pengrad/telegrambot/model/SuccessfulPayment.kt index a888f036..16d85dce 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/SuccessfulPayment.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/SuccessfulPayment.kt @@ -4,7 +4,7 @@ data class SuccessfulPayment( @get:JvmName("currency") val currency: String, @get:JvmName("totalAmount") val totalAmount: Int, @get:JvmName("invoicePayload") val invoicePayload: String, - @get:JvmName("subscriptionExpirationDate") val subscriptionExpirationDate: Int? = null, + @get:JvmName("subscriptionExpirationDate") val subscriptionExpirationDate: Long? = null, @get:JvmName("isRecurring") val isRecurring: Boolean? = null, @get:JvmName("isFirstRecurring") val isFirstRecurring: Boolean? = null, @get:JvmName("shippingOptionId") val shippingOptionId: String? = null, diff --git a/library/src/main/java/com/pengrad/telegrambot/model/VideoChatScheduled.java b/library/src/main/java/com/pengrad/telegrambot/model/VideoChatScheduled.java index 857d0c78..8bff858e 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/VideoChatScheduled.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/VideoChatScheduled.java @@ -7,9 +7,9 @@ public class VideoChatScheduled implements Serializable { private final static long serialVersionUID = 0L; - private Integer start_date; + private Long start_date; - public Integer startDate() { + public Long startDate() { return start_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/WebhookInfo.java b/library/src/main/java/com/pengrad/telegrambot/model/WebhookInfo.java index d3b0c968..7c4c3d49 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/WebhookInfo.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/WebhookInfo.java @@ -15,9 +15,9 @@ public class WebhookInfo implements Serializable { private Boolean has_custom_certificate; private Integer pending_update_count; private String ip_address; - private Integer last_error_date; + private Long last_error_date; private String last_error_message; - private Integer last_synchronization_error_date; + private Long last_synchronization_error_date; private Integer max_connections; private String[] allowed_updates; @@ -37,7 +37,7 @@ public String ipAddress() { return ip_address; } - public Integer lastErrorDate() { + public Long lastErrorDate() { return last_error_date; } @@ -45,7 +45,7 @@ public String lastErrorMessage() { return last_error_message; } - public Integer lastSynchronizationErrorDate() { + public Long lastSynchronizationErrorDate() { return last_synchronization_error_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/business/BusinessConnection.java b/library/src/main/java/com/pengrad/telegrambot/model/business/BusinessConnection.java index 36809eb8..eb2cc212 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/business/BusinessConnection.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/business/BusinessConnection.java @@ -9,7 +9,7 @@ public class BusinessConnection { private String id; private User user; private Long user_chat_id; - private Integer date; + private Long date; private BusinessBotRights rights; private Boolean is_enabled; @@ -25,7 +25,7 @@ public Long userChatId() { return user_chat_id; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoost.java b/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoost.java index 97bb9c83..8f6e5f04 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoost.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoost.java @@ -7,19 +7,19 @@ public class ChatBoost { private String boost_id; - private Integer add_date; - private Integer expiration_date; + private Long add_date; + private Long expiration_date; private ChatBoostSource source; public String boostId() { return boost_id; } - public Integer addDate() { + public Long addDate() { return add_date; } - public Integer expirationDate() { + public Long expirationDate() { return expiration_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoostRemoved.java b/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoostRemoved.java index 02f5bd0e..b3b2f01f 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoostRemoved.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoostRemoved.java @@ -9,7 +9,7 @@ public class ChatBoostRemoved { private Chat chat; private String boost_id; - private Integer remove_date; + private Long remove_date; private ChatBoostSource source; public Chat chat() { @@ -20,7 +20,7 @@ public String boostId() { return boost_id; } - public Integer removeDate() { + public Long removeDate() { return remove_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/checklist/ChecklistTask.kt b/library/src/main/java/com/pengrad/telegrambot/model/checklist/ChecklistTask.kt index e236b4b6..fce40378 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/checklist/ChecklistTask.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/checklist/ChecklistTask.kt @@ -11,7 +11,7 @@ data class ChecklistTask( @get:JvmName("textEntities") val textEntities: Array?, @get:JvmName("completedByUser") val completedByUser: User?, @get:JvmName("completedByChat") val completedByChat: Chat? = null, - @get:JvmName("completionDate") val completionDate: Int? + @get:JvmName("completionDate") val completionDate: Long? ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/model/giveaway/Giveaway.java b/library/src/main/java/com/pengrad/telegrambot/model/giveaway/Giveaway.java index 0a40a104..d9b4d797 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/giveaway/Giveaway.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/giveaway/Giveaway.java @@ -12,7 +12,7 @@ public class Giveaway implements Serializable { private final static long serialVersionUID = 0L; private Chat[] chats; - private Integer winners_selection_date; + private Long winners_selection_date; private Integer winner_count; private Boolean only_new_members; private Boolean has_public_winners; @@ -24,7 +24,7 @@ public class Giveaway implements Serializable { public Chat[] chats() { return chats; } - public Integer winnersSelectionDate() { + public Long winnersSelectionDate() { return winners_selection_date; } public Integer winnerCount() { diff --git a/library/src/main/java/com/pengrad/telegrambot/model/giveaway/GiveawayWinners.java b/library/src/main/java/com/pengrad/telegrambot/model/giveaway/GiveawayWinners.java index 3f8feff6..9fafce42 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/giveaway/GiveawayWinners.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/giveaway/GiveawayWinners.java @@ -13,7 +13,7 @@ public class GiveawayWinners implements Serializable { private Chat chat; private Integer giveaway_message_id; - private Integer winners_selection_date; + private Long winners_selection_date; private Integer winner_count; private User[] winners; private Integer additional_chat_count; @@ -32,7 +32,7 @@ public Integer giveawayMessageId() { return giveaway_message_id; } - public Integer winnersSelectionDate() { + public Long winnersSelectionDate() { return winners_selection_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/message/MaybeInaccessibleMessage.java b/library/src/main/java/com/pengrad/telegrambot/model/message/MaybeInaccessibleMessage.java index 4dc9511c..a91975eb 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/message/MaybeInaccessibleMessage.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/message/MaybeInaccessibleMessage.java @@ -8,7 +8,7 @@ public class MaybeInaccessibleMessage { protected Chat chat; protected Integer message_id; - protected Integer date; + protected Long date; public Chat chat() { return chat; @@ -18,7 +18,7 @@ public Integer messageId() { return message_id; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/message/origin/MessageOrigin.java b/library/src/main/java/com/pengrad/telegrambot/model/message/origin/MessageOrigin.java index a5c9f253..97333b8c 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/message/origin/MessageOrigin.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/message/origin/MessageOrigin.java @@ -7,7 +7,7 @@ public class MessageOrigin implements Serializable { private final static long serialVersionUID = 0L; protected String type; - protected Integer date; + protected Long date; public MessageOrigin(String type) { this.type = type; @@ -17,7 +17,7 @@ public String type() { return type; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/stars/StarTransaction.kt b/library/src/main/java/com/pengrad/telegrambot/model/stars/StarTransaction.kt index 6dba92c6..0845cb5f 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/stars/StarTransaction.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/stars/StarTransaction.kt @@ -6,7 +6,7 @@ data class StarTransaction( @get:JvmName("id") val id: String, @get:JvmName("amount") val amount: Int, @get:JvmName("nanostarAmount") val nanostarAmount: Int? = null, - @get:JvmName("date") val date: Int, + @get:JvmName("date") val date: Long, @get:JvmName("source") val source: TransactionPartner? = null, @get:JvmName("receiver") val receiver: TransactionPartner? = null ) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/stars/withdrawal/RevenueWithdrawalStateSucceeded.java b/library/src/main/java/com/pengrad/telegrambot/model/stars/withdrawal/RevenueWithdrawalStateSucceeded.java index 6875aa02..a65d7050 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/stars/withdrawal/RevenueWithdrawalStateSucceeded.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/stars/withdrawal/RevenueWithdrawalStateSucceeded.java @@ -6,14 +6,14 @@ public class RevenueWithdrawalStateSucceeded extends RevenueWithdrawalState { public static final String TYPE = "succeeded"; - private Integer date; + private Long date; private String url; public RevenueWithdrawalStateSucceeded() { super(TYPE); } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/passport/PassportFile.java b/library/src/main/java/com/pengrad/telegrambot/passport/PassportFile.java index 687f9ab1..27a48d2f 100644 --- a/library/src/main/java/com/pengrad/telegrambot/passport/PassportFile.java +++ b/library/src/main/java/com/pengrad/telegrambot/passport/PassportFile.java @@ -12,7 +12,7 @@ public class PassportFile implements Serializable { private String file_id; private String file_unique_id; private Long file_size; - private Integer file_date; + private Long file_date; public String fileId() { return file_id; @@ -26,7 +26,7 @@ public Long fileSize() { return file_size; } - public Integer fileDate() { + public Long fileDate() { return file_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/BanChatMember.java b/library/src/main/java/com/pengrad/telegrambot/request/BanChatMember.java index a94c04ee..7d98f3b2 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/BanChatMember.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/BanChatMember.java @@ -9,7 +9,7 @@ public BanChatMember(Object chatId, long userId) { add("chat_id", chatId).add("user_id", userId); } - public BanChatMember untilDate(int untilDate) { + public BanChatMember untilDate(long untilDate) { return add("until_date", untilDate); } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/CreateChatInviteLink.java b/library/src/main/java/com/pengrad/telegrambot/request/CreateChatInviteLink.java index 10637e9c..a36d2067 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/CreateChatInviteLink.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/CreateChatInviteLink.java @@ -21,7 +21,7 @@ public CreateChatInviteLink name(String name) { return add("name", name); } - public CreateChatInviteLink expireDate(Integer expireDate) { + public CreateChatInviteLink expireDate(Long expireDate) { return add("expire_date", expireDate); } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/EditChatInviteLink.java b/library/src/main/java/com/pengrad/telegrambot/request/EditChatInviteLink.java index 2934af2d..be7765a3 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/EditChatInviteLink.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/EditChatInviteLink.java @@ -23,7 +23,7 @@ public EditChatInviteLink name(String name) { return add("name", name); } - public EditChatInviteLink expireDate(Integer expireDate) { + public EditChatInviteLink expireDate(Long expireDate) { return add("expire_date", expireDate); } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/RestrictChatMember.java b/library/src/main/java/com/pengrad/telegrambot/request/RestrictChatMember.java index 1f44747f..844d68c0 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/RestrictChatMember.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/RestrictChatMember.java @@ -14,7 +14,7 @@ public RestrictChatMember(Object chatId, long userId, ChatPermissions permission add("chat_id", chatId).add("user_id", userId).add("permissions", permissions); } - public RestrictChatMember untilDate(int untilDate) { + public RestrictChatMember untilDate(long untilDate) { return add("until_date", untilDate); } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SetUserEmojiStatus.kt b/library/src/main/java/com/pengrad/telegrambot/request/SetUserEmojiStatus.kt index 9a790e59..7314a9ca 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SetUserEmojiStatus.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SetUserEmojiStatus.kt @@ -6,11 +6,11 @@ import com.pengrad.telegrambot.utility.kotlin.requestParameter class SetUserEmojiStatus( userId: Long, emojiStatusCustomEmojiId: String, - emojiStatusExpirationDate: Int + emojiStatusExpirationDate: Long ) : KBaseRequest(BaseResponse::class) { val userId: Long by requestParameter(userId) val emojiStatusCustomEmojiId: String by requestParameter(emojiStatusCustomEmojiId) - val emojiStatusExpirationDate: Int by requestParameter(emojiStatusExpirationDate) + val emojiStatusExpirationDate: Long by requestParameter(emojiStatusExpirationDate) } \ No newline at end of file diff --git a/library/src/test/java/com/pengrad/telegrambot/TelegramBotTest.java b/library/src/test/java/com/pengrad/telegrambot/TelegramBotTest.java index cd8da175..6bed0864 100644 --- a/library/src/test/java/com/pengrad/telegrambot/TelegramBotTest.java +++ b/library/src/test/java/com/pengrad/telegrambot/TelegramBotTest.java @@ -1062,7 +1062,7 @@ public void setWebhook() throws IOException { assertTrue(webhookInfo.hasCustomCertificate()); assertEquals(maxConnections, webhookInfo.maxConnections()); assertArrayEquals(allowedUpdates, webhookInfo.allowedUpdates()); - Integer lastErrorDate = webhookInfo.lastErrorDate(); + Long lastErrorDate = webhookInfo.lastErrorDate(); if (lastErrorDate != null) { assertEquals(System.currentTimeMillis(), lastErrorDate * 1000L, 30_000L); } @@ -2127,7 +2127,7 @@ public void deleteMyCommands() { @Test public void inviteLinks() { int memberLimit = 2; - int expireDate = (int) (System.currentTimeMillis() / 1000) + 500; + long expireDate = System.currentTimeMillis() / 1000 + 500; String name = "TestName"; ChatInviteLinkResponse response = bot.execute(new CreateChatInviteLink(groupId) @@ -2135,21 +2135,21 @@ public void inviteLinks() { .memberLimit(memberLimit) .name(name)); ChatInviteLink link = response.chatInviteLink(); - assertEquals(expireDate, link.expireDate().intValue()); + assertEquals(expireDate, link.expireDate().longValue()); assertEquals(memberLimit, link.memberLimit().intValue()); assertFalse(link.isRevoked()); assertTrue(link.creator().isBot()); assertEquals(name, link.name()); int editMemberLimit = 3; - int editExpireDate = (int) (System.currentTimeMillis() / 1000) + 1500; + long editExpireDate = System.currentTimeMillis() / 1000 + 1500; String editName = name + "edit"; response = bot.execute(new EditChatInviteLink(groupId, link.inviteLink()) .expireDate(editExpireDate) .memberLimit(editMemberLimit) .name(editName)); link = response.chatInviteLink(); - assertEquals(editExpireDate, link.expireDate().intValue()); + assertEquals(editExpireDate, link.expireDate().longValue()); assertEquals(editMemberLimit, link.memberLimit().intValue()); assertEquals(editName, link.name()); assertFalse(link.isRevoked());