1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2026-09-02 06:09:19 +00:00

Add Bot API 10.3 Rich Messages support

This commit is contained in:
2026-08-25 12:50:18 +06:00
parent efd4667ffa
commit 2e69bc6954
22 changed files with 1526 additions and 22 deletions

View File

@@ -5,6 +5,7 @@
**THIS UPDATE CONTAINS SUPPORT OF [TELEGRAM BOTS API 10.3](https://core.telegram.org/bots/api-changelog#august-24-2026)**
* `Core`:
* (`Rich Messages`) Added rich-message button actions, rich-text/button-row entities, typed button styles/alignment, expandable block quotations, compact tables, document blocks, document media links and direct document uploads
* (`Reply markup`) Added `DisabledButton`/`DisabledInlineKeyboardButton` support for disabled inline buttons
* (`Reply markup`) Added `forceReply` support to `InlineKeyboardMarkup` and `ReplyKeyboardMarkup`
* `Utils`:

View File

@@ -11526,6 +11526,7 @@ public final class dev/inmo/tgbotapi/types/CommonKt {
public static final field businessOpeningHoursField Ljava/lang/String;
public static final field buttonField Ljava/lang/String;
public static final field buttonTextField Ljava/lang/String;
public static final field buttonsField Ljava/lang/String;
public static final field cacheTimeField Ljava/lang/String;
public static final field callbackDataField Ljava/lang/String;
public static final field callbackGameField Ljava/lang/String;
@@ -11780,6 +11781,7 @@ public final class dev/inmo/tgbotapi/types/CommonKt {
public static final field isCanceledField Ljava/lang/String;
public static final field isCheckedField Ljava/lang/String;
public static final field isClosedField Ljava/lang/String;
public static final field isCompactField Ljava/lang/String;
public static final field isDarkField Ljava/lang/String;
public static final field isDirectMessagesField Ljava/lang/String;
public static final field isDisabledField Ljava/lang/String;
@@ -25566,7 +25568,7 @@ public final class dev/inmo/tgbotapi/types/media/TelegramMediaAudioKt {
public static synthetic fun toTelegramMediaAudio$default (Ldev/inmo/tgbotapi/types/files/AudioFile;Ljava/util/List;Ljava/lang/String;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/media/TelegramMediaAudio;
}
public final class dev/inmo/tgbotapi/types/media/TelegramMediaDocument : dev/inmo/tgbotapi/types/media/DocumentMediaGroupMemberTelegramMedia, dev/inmo/tgbotapi/types/media/InputPollMedia, dev/inmo/tgbotapi/types/media/TelegramFreeMedia, dev/inmo/tgbotapi/types/media/ThumbedTelegramMedia {
public final class dev/inmo/tgbotapi/types/media/TelegramMediaDocument : dev/inmo/tgbotapi/types/media/DocumentMediaGroupMemberTelegramMedia, dev/inmo/tgbotapi/types/media/InputPollMedia, dev/inmo/tgbotapi/types/media/RichMessageMemberTelegramMedia, dev/inmo/tgbotapi/types/media/TelegramFreeMedia, dev/inmo/tgbotapi/types/media/ThumbedTelegramMedia {
public static final field Companion Ldev/inmo/tgbotapi/types/media/TelegramMediaDocument$Companion;
public static final field TYPE Ljava/lang/String;
public final fun component1 ()Ldev/inmo/tgbotapi/requests/abstracts/InputFile;
@@ -35370,6 +35372,38 @@ public final class dev/inmo/tgbotapi/types/rich/InputRichBlockBlockQuotation$Com
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/InputRichBlockButtons : dev/inmo/tgbotapi/types/rich/InputRichBlock {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/InputRichBlockButtons$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;)V
public synthetic fun <init> (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/util/List;
public final fun component2 ()Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;
public final fun copy (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockButtons;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlockButtons;Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockButtons;
public fun equals (Ljava/lang/Object;)Z
public final fun getAlign ()Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;
public final fun getButtons ()Ljava/util/List;
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/InputRichBlockButtons$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/InputRichBlockButtons$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockButtons;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/InputRichBlockButtons;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/InputRichBlockButtons$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/InputRichBlockCollage : dev/inmo/tgbotapi/types/rich/InputRichBlock {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/InputRichBlockCollage$Companion;
public static final field TYPE Ljava/lang/String;
@@ -35461,6 +35495,71 @@ public final class dev/inmo/tgbotapi/types/rich/InputRichBlockDivider$Companion
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/InputRichBlockDocument : dev/inmo/tgbotapi/types/rich/InputRichBlockMedia {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/InputRichBlockDocument$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ldev/inmo/tgbotapi/types/media/TelegramMediaDocument;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/media/TelegramMediaDocument;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/media/TelegramMediaDocument;
public final fun component2 ()Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;
public final fun copy (Ldev/inmo/tgbotapi/types/media/TelegramMediaDocument;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockDocument;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlockDocument;Ldev/inmo/tgbotapi/types/media/TelegramMediaDocument;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockDocument;
public fun equals (Ljava/lang/Object;)Z
public fun getCaption ()Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;
public final fun getDocument ()Ldev/inmo/tgbotapi/types/media/TelegramMediaDocument;
public fun getMedia ()Ldev/inmo/tgbotapi/types/media/TelegramMedia;
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/InputRichBlockDocument$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/InputRichBlockDocument$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockDocument;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/InputRichBlockDocument;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/InputRichBlockDocument$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation : dev/inmo/tgbotapi/types/rich/InputRichBlock {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation;Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation;
public fun equals (Ljava/lang/Object;)Z
public final fun getCredit ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/InputRichBlockFooter : dev/inmo/tgbotapi/types/rich/InputRichBlock {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/InputRichBlockFooter$Companion;
public static final field TYPE Ljava/lang/String;
@@ -35869,20 +35968,22 @@ public final class dev/inmo/tgbotapi/types/rich/InputRichBlockSlideshow$Companio
public final class dev/inmo/tgbotapi/types/rich/InputRichBlockTable : dev/inmo/tgbotapi/types/rich/InputRichBlock {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/InputRichBlockTable$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;)V
public synthetic fun <init> (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;)V
public synthetic fun <init> (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/util/List;
public final fun component2 ()Ljava/lang/Boolean;
public final fun component3 ()Ljava/lang/Boolean;
public final fun component4 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun copy (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockTable;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlockTable;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockTable;
public final fun component5 ()Ljava/lang/Boolean;
public final fun copy (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockTable;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlockTable;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockTable;
public fun equals (Ljava/lang/Object;)Z
public final fun getCaption ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun getCells ()Ljava/util/List;
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
public final fun isBordered ()Ljava/lang/Boolean;
public final fun isCompact ()Ljava/lang/Boolean;
public final fun isStriped ()Ljava/lang/Boolean;
public fun toString ()Ljava/lang/String;
}
@@ -36031,6 +36132,8 @@ public final class dev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder {
public final fun blockQuotation (Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)V
public static synthetic fun blockQuotation$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public final fun build ()Ljava/util/List;
public final fun buttons (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;)V
public static synthetic fun buttons$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;ILjava/lang/Object;)V
public final fun collage (Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;Lkotlin/jvm/functions/Function1;)V
public static synthetic fun collage$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public final fun details (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;Lkotlin/jvm/functions/Function1;)V
@@ -36038,6 +36141,10 @@ public final class dev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder {
public static synthetic fun details$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public static synthetic fun details$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ljava/lang/String;Ljava/lang/Boolean;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public final fun divider ()V
public final fun document (Ldev/inmo/tgbotapi/types/media/TelegramMediaDocument;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)V
public static synthetic fun document$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ldev/inmo/tgbotapi/types/media/TelegramMediaDocument;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;ILjava/lang/Object;)V
public final fun expandableBlockQuotation (Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)V
public static synthetic fun expandableBlockQuotation$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public final fun footer (Ljava/lang/String;)V
public final fun footer (Lkotlin/jvm/functions/Function1;)V
public final fun h1 (Ljava/lang/String;)V
@@ -36068,8 +36175,8 @@ public final class dev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder {
public static synthetic fun pullQuotation$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public final fun slideshow (Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;Lkotlin/jvm/functions/Function1;)V
public static synthetic fun slideshow$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public final fun table (Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)V
public static synthetic fun table$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public final fun table (Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;Lkotlin/jvm/functions/Function1;)V
public static synthetic fun table$default (Ldev/inmo/tgbotapi/types/rich/InputRichBlocksBuilder;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public final fun thinking (Ljava/lang/String;)V
public final fun thinking (Lkotlin/jvm/functions/Function1;)V
public final fun unaryPlus (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)V
@@ -36378,6 +36485,87 @@ public final class dev/inmo/tgbotapi/types/rich/RichBlockBlockQuotation$Companio
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public abstract interface class dev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Companion;
public abstract fun getName ()Ljava/lang/String;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Center : dev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Center;
public fun equals (Ljava/lang/Object;)Z
public fun getName ()Ljava/lang/String;
public fun hashCode ()I
public final fun serializer ()Lkotlinx/serialization/KSerializer;
public fun toString ()Ljava/lang/String;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Left : dev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Left;
public fun equals (Ljava/lang/Object;)Z
public fun getName ()Ljava/lang/String;
public fun hashCode ()I
public final fun serializer ()Lkotlinx/serialization/KSerializer;
public fun toString ()Ljava/lang/String;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Right : dev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Right;
public fun equals (Ljava/lang/Object;)Z
public fun getName ()Ljava/lang/String;
public fun hashCode ()I
public final fun serializer ()Lkotlinx/serialization/KSerializer;
public fun toString ()Ljava/lang/String;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Serializer : kotlinx/serialization/KSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment$Serializer;
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockButtons : dev/inmo/tgbotapi/types/rich/RichBlock {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichBlockButtons$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;)V
public synthetic fun <init> (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/util/List;
public final fun component2 ()Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;
public final fun copy (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;)Ldev/inmo/tgbotapi/types/rich/RichBlockButtons;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichBlockButtons;Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichBlockButtons;
public fun equals (Ljava/lang/Object;)Z
public final fun getAlign ()Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;
public final fun getButtons ()Ljava/util/List;
public fun getHtml ()Ljava/lang/String;
public fun getMarkdown ()Ljava/lang/String;
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockButtons$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichBlockButtons$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichBlockButtons;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichBlockButtons;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockButtons$Companion {
public final fun html (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;)Ljava/lang/String;
public final fun markdown (Ljava/util/List;Ldev/inmo/tgbotapi/types/rich/RichBlockButtonAlignment;)Ljava/lang/String;
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockCaption {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichBlockCaption$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;)V
@@ -36511,6 +36699,79 @@ public final class dev/inmo/tgbotapi/types/rich/RichBlockDivider$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockDocument : dev/inmo/tgbotapi/types/rich/RichBlockMedia {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichBlockDocument$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ldev/inmo/tgbotapi/types/files/DocumentFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/files/DocumentFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/files/DocumentFile;
public final fun component2 ()Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;
public final fun copy (Ldev/inmo/tgbotapi/types/files/DocumentFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ldev/inmo/tgbotapi/types/rich/RichBlockDocument;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichBlockDocument;Ldev/inmo/tgbotapi/types/files/DocumentFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichBlockDocument;
public fun equals (Ljava/lang/Object;)Z
public fun getCaption ()Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;
public final fun getDocument ()Ldev/inmo/tgbotapi/types/files/DocumentFile;
public fun getHtml ()Ljava/lang/String;
public fun getMarkdown ()Ljava/lang/String;
public fun getMedia ()Ldev/inmo/tgbotapi/types/files/TelegramMediaFile;
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockDocument$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichBlockDocument$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichBlockDocument;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichBlockDocument;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockDocument$Companion {
public final fun html (Ldev/inmo/tgbotapi/types/files/DocumentFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String;
public final fun markdown (Ldev/inmo/tgbotapi/types/files/DocumentFile;Ldev/inmo/tgbotapi/types/rich/RichBlockCaption;)Ljava/lang/String;
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation : dev/inmo/tgbotapi/types/rich/RichBlock {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation;Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation;
public fun equals (Ljava/lang/Object;)Z
public final fun getCredit ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun getHtml ()Ljava/lang/String;
public fun getMarkdown ()Ljava/lang/String;
public final fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation$Companion {
public final fun html (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String;
public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String;
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichBlockFooter : dev/inmo/tgbotapi/types/rich/RichBlock {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichBlockFooter$Companion;
public static final field TYPE Ljava/lang/String;
@@ -36942,14 +37203,15 @@ public final class dev/inmo/tgbotapi/types/rich/RichBlockSlideshow$Companion {
public final class dev/inmo/tgbotapi/types/rich/RichBlockTable : dev/inmo/tgbotapi/types/rich/RichBlock {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichBlockTable$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;)V
public synthetic fun <init> (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;)V
public synthetic fun <init> (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/util/List;
public final fun component2 ()Ljava/lang/Boolean;
public final fun component3 ()Ljava/lang/Boolean;
public final fun component4 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun copy (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichBlockTable;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichBlockTable;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichBlockTable;
public final fun component5 ()Ljava/lang/Boolean;
public final fun copy (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;)Ldev/inmo/tgbotapi/types/rich/RichBlockTable;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichBlockTable;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/Boolean;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichBlockTable;
public fun equals (Ljava/lang/Object;)Z
public final fun getCaption ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun getCells ()Ljava/util/List;
@@ -36958,6 +37220,7 @@ public final class dev/inmo/tgbotapi/types/rich/RichBlockTable : dev/inmo/tgbota
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
public final fun isBordered ()Ljava/lang/Boolean;
public final fun isCompact ()Ljava/lang/Boolean;
public final fun isStriped ()Ljava/lang/Boolean;
public fun toString ()Ljava/lang/String;
}
@@ -36975,6 +37238,7 @@ public final synthetic class dev/inmo/tgbotapi/types/rich/RichBlockTable$$serial
public final class dev/inmo/tgbotapi/types/rich/RichBlockTable$Companion {
public final fun html (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String;
public final fun html (Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ldev/inmo/tgbotapi/types/rich/RichText;)Ljava/lang/String;
public final fun markdown (Ljava/util/List;)Ljava/lang/String;
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
@@ -37279,6 +37543,366 @@ public final class dev/inmo/tgbotapi/types/rich/RichBlocksBuilder {
public final fun unaryPlus (Ldev/inmo/tgbotapi/types/rich/RichBlock;)V
}
public abstract interface class dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Companion;
public abstract fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public abstract fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData : dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData;
public fun equals (Ljava/lang/Object;)Z
public final fun getCallbackData ()Ljava/lang/String;
public fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText : dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CopyTextButtonData;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CopyTextButtonData;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CopyTextButtonData;
public final fun component3 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CopyTextButtonData;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText;Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CopyTextButtonData;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText;
public fun equals (Ljava/lang/Object;)Z
public final fun getCopyText ()Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CopyTextButtonData;
public fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled : dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled;Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled;
public fun equals (Ljava/lang/Object;)Z
public final fun getDisabled ()Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/DisabledButton;
public fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl : dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/LoginURL;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/LoginURL;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ldev/inmo/tgbotapi/types/LoginURL;
public final fun component3 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/LoginURL;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl;Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/LoginURL;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl;
public fun equals (Ljava/lang/Object;)Z
public final fun getLoginUrl ()Ldev/inmo/tgbotapi/types/LoginURL;
public fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery : dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery;
public fun equals (Ljava/lang/Object;)Z
public fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun getSwitchInlineQuery ()Ljava/lang/String;
public fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat : dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChat;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChat;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChat;
public final fun component3 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChat;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat;Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChat;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat;
public fun equals (Ljava/lang/Object;)Z
public fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun getSwitchInlineQueryChosenChat ()Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChat;
public fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat : dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat;
public fun equals (Ljava/lang/Object;)Z
public fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun getSwitchInlineQueryCurrentChat ()Ljava/lang/String;
public fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$Url : dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Url$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Url;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Url;Ldev/inmo/tgbotapi/types/rich/RichText;Ljava/lang/String;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Url;
public fun equals (Ljava/lang/Object;)Z
public fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun getUrl ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichMessageButton$Url$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Url$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Url;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Url;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$Url$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp : dev/inmo/tgbotapi/types/rich/RichMessageButton {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp$Companion;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/webapps/WebAppInfo;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/webapps/WebAppInfo;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun component2 ()Ldev/inmo/tgbotapi/types/webapps/WebAppInfo;
public final fun component3 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/webapps/WebAppInfo;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp;Ldev/inmo/tgbotapi/types/rich/RichText;Ldev/inmo/tgbotapi/types/webapps/WebAppInfo;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp;
public fun equals (Ljava/lang/Object;)Z
public fun getStyle ()Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public fun getText ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun getWebApp ()Ldev/inmo/tgbotapi/types/webapps/WebAppInfo;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButtonSerializer : kotlinx/serialization/KSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButtonSerializer;
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
}
public abstract interface class dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Companion;
public abstract fun getName ()Ljava/lang/String;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Danger : dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Danger;
public fun equals (Ljava/lang/Object;)Z
public fun getName ()Ljava/lang/String;
public fun hashCode ()I
public final fun serializer ()Lkotlinx/serialization/KSerializer;
public fun toString ()Ljava/lang/String;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Link : dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Link;
public fun equals (Ljava/lang/Object;)Z
public fun getName ()Ljava/lang/String;
public fun hashCode ()I
public final fun serializer ()Lkotlinx/serialization/KSerializer;
public fun toString ()Ljava/lang/String;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Primary : dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Primary;
public fun equals (Ljava/lang/Object;)Z
public fun getName ()Ljava/lang/String;
public fun hashCode ()I
public final fun serializer ()Lkotlinx/serialization/KSerializer;
public fun toString ()Ljava/lang/String;
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Serializer : kotlinx/serialization/KSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Serializer;
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
}
public final class dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Success : dev/inmo/tgbotapi/types/rich/RichMessageButtonStyle {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichMessageButtonStyle$Success;
public fun equals (Ljava/lang/Object;)Z
public fun getName ()Ljava/lang/String;
public fun hashCode ()I
public final fun serializer ()Lkotlinx/serialization/KSerializer;
public fun toString ()Ljava/lang/String;
}
public abstract interface class dev/inmo/tgbotapi/types/rich/RichText {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichText$Companion;
public abstract fun getHtml ()Ljava/lang/String;
@@ -37479,6 +38103,7 @@ public final class dev/inmo/tgbotapi/types/rich/RichTextBuilder {
public final fun botCommand (Ljava/lang/String;Ljava/lang/String;)V
public final fun botCommand (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
public final fun build ()Ldev/inmo/tgbotapi/types/rich/RichText;
public final fun button (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)V
public final fun cashtag (Ljava/lang/String;Ljava/lang/String;)V
public final fun cashtag (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
public final fun code (Ljava/lang/String;)V
@@ -37521,6 +38146,40 @@ public final class dev/inmo/tgbotapi/types/rich/RichTextBuilder {
public final fun url (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
}
public final class dev/inmo/tgbotapi/types/rich/RichTextButton : dev/inmo/tgbotapi/types/rich/RichTextEntity {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichTextButton$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)V
public final fun component1 ()Ldev/inmo/tgbotapi/types/rich/RichMessageButton;
public final fun copy (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichTextButton;
public static synthetic fun copy$default (Ldev/inmo/tgbotapi/types/rich/RichTextButton;Ldev/inmo/tgbotapi/types/rich/RichMessageButton;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/rich/RichTextButton;
public fun equals (Ljava/lang/Object;)Z
public final fun getButton ()Ldev/inmo/tgbotapi/types/rich/RichMessageButton;
public fun getHtml ()Ljava/lang/String;
public fun getMarkdown ()Ljava/lang/String;
public fun getRawText ()Ljava/lang/String;
public fun getType ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class dev/inmo/tgbotapi/types/rich/RichTextButton$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Ldev/inmo/tgbotapi/types/rich/RichTextButton$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/rich/RichTextButton;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/rich/RichTextButton;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichTextButton$Companion {
public final fun html (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ljava/lang/String;
public final fun markdown (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ljava/lang/String;
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class dev/inmo/tgbotapi/types/rich/RichTextCashtag : dev/inmo/tgbotapi/types/rich/RichTextEntity {
public static final field Companion Ldev/inmo/tgbotapi/types/rich/RichTextCashtag$Companion;
public static final field TYPE Ljava/lang/String;

View File

@@ -609,6 +609,8 @@ const val isCheckedField = "is_checked"
const val isOpenField = "is_open"
const val isBorderedField = "is_bordered"
const val isStripedField = "is_striped"
const val isCompactField = "is_compact"
const val buttonsField = "buttons"
const val certificateField = "certificate"
const val questionField = "question"
const val questionEntitiesField = "question_entities"

View File

@@ -57,7 +57,7 @@ data class TelegramMediaDocument internal constructor(
override val thumb: InputFile? = null,
@SerialName(disableContentTypeDetectionField)
val disableContentTypeDetection: Boolean? = null
) : TelegramFreeMedia, DocumentMediaGroupMemberTelegramMedia, ThumbedTelegramMedia, InputPollMedia {
) : TelegramFreeMedia, DocumentMediaGroupMemberTelegramMedia, RichMessageMemberTelegramMedia, ThumbedTelegramMedia, InputPollMedia {
@EncodeDefault
override val type: String = TYPE
override val textSources: TextSourcesList? by lazy {

View File

@@ -54,14 +54,17 @@ object InputRichBlockSerializer : JsonContentPolymorphicSerializer<InputRichBloc
InputRichBlockAnchor.TYPE -> InputRichBlockAnchor.serializer()
InputRichBlockList.TYPE -> InputRichBlockList.serializer()
InputRichBlockBlockQuotation.TYPE -> InputRichBlockBlockQuotation.serializer()
InputRichBlockExpandableBlockQuotation.TYPE -> InputRichBlockExpandableBlockQuotation.serializer()
InputRichBlockPullQuotation.TYPE -> InputRichBlockPullQuotation.serializer()
InputRichBlockCollage.TYPE -> InputRichBlockCollage.serializer()
InputRichBlockSlideshow.TYPE -> InputRichBlockSlideshow.serializer()
InputRichBlockTable.TYPE -> InputRichBlockTable.serializer()
InputRichBlockDetails.TYPE -> InputRichBlockDetails.serializer()
InputRichBlockMap.TYPE -> InputRichBlockMap.serializer()
InputRichBlockButtons.TYPE -> InputRichBlockButtons.serializer()
InputRichBlockAnimation.TYPE -> InputRichBlockAnimation.serializer()
InputRichBlockAudio.TYPE -> InputRichBlockAudio.serializer()
InputRichBlockDocument.TYPE -> InputRichBlockDocument.serializer()
InputRichBlockPhoto.TYPE -> InputRichBlockPhoto.serializer()
InputRichBlockVideo.TYPE -> InputRichBlockVideo.serializer()
InputRichBlockVoiceNote.TYPE -> InputRichBlockVoiceNote.serializer()

View File

@@ -1,14 +1,18 @@
package dev.inmo.tgbotapi.types.rich
import dev.inmo.tgbotapi.types.animationField
import dev.inmo.tgbotapi.types.alignField
import dev.inmo.tgbotapi.types.audioField
import dev.inmo.tgbotapi.types.blocksField
import dev.inmo.tgbotapi.types.captionField
import dev.inmo.tgbotapi.types.cellsField
import dev.inmo.tgbotapi.types.buttonsField
import dev.inmo.tgbotapi.types.creditField
import dev.inmo.tgbotapi.types.documentField
import dev.inmo.tgbotapi.types.expressionField
import dev.inmo.tgbotapi.types.heightField
import dev.inmo.tgbotapi.types.isBorderedField
import dev.inmo.tgbotapi.types.isCompactField
import dev.inmo.tgbotapi.types.isOpenField
import dev.inmo.tgbotapi.types.isStripedField
import dev.inmo.tgbotapi.types.itemsField
@@ -18,6 +22,7 @@ import dev.inmo.tgbotapi.types.locationField
import dev.inmo.tgbotapi.types.media.TelegramMedia
import dev.inmo.tgbotapi.types.media.TelegramMediaAnimation
import dev.inmo.tgbotapi.types.media.TelegramMediaAudio
import dev.inmo.tgbotapi.types.media.TelegramMediaDocument
import dev.inmo.tgbotapi.types.media.TelegramMediaPhoto
import dev.inmo.tgbotapi.types.media.TelegramMediaVideo
import dev.inmo.tgbotapi.types.media.TelegramMediaVoiceNote
@@ -218,6 +223,23 @@ data class InputRichBlockBlockQuotation(
}
}
/** A block quotation that is collapsed by default. */
@Serializable
data class InputRichBlockExpandableBlockQuotation(
@SerialName(textField)
val text: RichText,
@SerialName(creditField)
val credit: RichText? = null
) : InputRichBlock {
@EncodeDefault
@SerialName(typeField)
override val type: String = TYPE
companion object {
const val TYPE = "expandable_blockquote"
}
}
/**
* A quotation with centered text.
*
@@ -295,7 +317,9 @@ data class InputRichBlockTable(
@SerialName(isStripedField)
val isStriped: Boolean? = null,
@SerialName(captionField)
val caption: RichText? = null
val caption: RichText? = null,
@SerialName(isCompactField)
val isCompact: Boolean? = null
) : InputRichBlock {
@EncodeDefault
@SerialName(typeField)
@@ -306,6 +330,27 @@ data class InputRichBlockTable(
}
}
/** A row of rich message buttons. */
@Serializable
data class InputRichBlockButtons(
@SerialName(buttonsField)
val buttons: List<RichMessageButton>,
@SerialName(alignField)
val align: RichBlockButtonAlignment? = null
) : InputRichBlock {
@EncodeDefault
@SerialName(typeField)
override val type: String = TYPE
init {
require(buttons.size in 1..8) { "InputRichBlockButtons requires from 1 to 8 buttons" }
}
companion object {
const val TYPE = "buttons"
}
}
/**
* An expandable block for details disclosure.
*
@@ -407,6 +452,25 @@ data class InputRichBlockAudio(
}
}
/** A block with a general file. */
@Serializable
data class InputRichBlockDocument(
@SerialName(documentField)
val document: TelegramMediaDocument,
@SerialName(captionField)
override val caption: RichBlockCaption? = null
) : InputRichBlockMedia {
@EncodeDefault
@SerialName(typeField)
override val type: String = TYPE
override val media: TelegramMedia
get() = document
companion object {
const val TYPE = "document"
}
}
/**
* A block with a photo.
*

View File

@@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.types.rich
import dev.inmo.tgbotapi.types.location.StaticLocation
import dev.inmo.tgbotapi.types.media.TelegramMediaAnimation
import dev.inmo.tgbotapi.types.media.TelegramMediaAudio
import dev.inmo.tgbotapi.types.media.TelegramMediaDocument
import dev.inmo.tgbotapi.types.media.TelegramMediaPhoto
import dev.inmo.tgbotapi.types.media.TelegramMediaVideo
import dev.inmo.tgbotapi.types.media.TelegramMediaVoiceNote
@@ -148,6 +149,9 @@ class InputRichBlocksBuilder {
fun blockQuotation(credit: RichText? = null, block: InputRichBlocksBuilder.() -> Unit) =
add(InputRichBlockBlockQuotation(buildInputRichBlocks(block), credit))
fun expandableBlockQuotation(credit: RichText? = null, block: RichTextBuilder.() -> Unit) =
add(InputRichBlockExpandableBlockQuotation(buildRichText(block), credit))
fun pullQuotation(credit: RichText? = null, block: RichTextBuilder.() -> Unit) =
add(InputRichBlockPullQuotation(buildRichText(block), credit))
@@ -166,6 +170,9 @@ class InputRichBlocksBuilder {
fun audio(audio: TelegramMediaAudio, caption: RichBlockCaption? = null) = add(InputRichBlockAudio(audio, caption))
fun document(document: TelegramMediaDocument, caption: RichBlockCaption? = null) =
add(InputRichBlockDocument(document, caption))
fun voiceNote(voiceNote: TelegramMediaVoiceNote, caption: RichBlockCaption? = null) =
add(InputRichBlockVoiceNote(voiceNote, caption))
@@ -179,8 +186,12 @@ class InputRichBlocksBuilder {
isBordered: Boolean? = null,
isStriped: Boolean? = null,
caption: RichText? = null,
isCompact: Boolean? = null,
block: InputRichBlockTableBuilder.() -> Unit
) = add(InputRichBlockTable(InputRichBlockTableBuilder().apply(block).build(), isBordered, isStriped, caption))
) = add(InputRichBlockTable(InputRichBlockTableBuilder().apply(block).build(), isBordered, isStriped, caption, isCompact))
fun buttons(buttons: List<RichMessageButton>, align: RichBlockButtonAlignment? = null) =
add(InputRichBlockButtons(buttons, align))
fun map(
location: StaticLocation,

View File

@@ -10,7 +10,7 @@ private val inputRichMessageMediaIdRegex = Regex("[A-Za-z0-9_-]{1,64}")
/**
* Describes a media referenced from [InputRichMessage.html]/[InputRichMessage.markdown] via `tg://photo?id=`,
* `tg://video?id=` and `tg://audio?id=` links.
* `tg://video?id=`, `tg://document?id=` and `tg://audio?id=` links.
*
* @see <a href="https://core.telegram.org/bots/api#inputrichmessagemedia">InputRichMessageMedia</a>
*/

View File

@@ -77,14 +77,17 @@ object RichBlockSerializer : JsonContentPolymorphicSerializer<RichBlock>(RichBlo
RichBlockAnchor.TYPE -> RichBlockAnchor.serializer()
RichBlockList.TYPE -> RichBlockList.serializer()
RichBlockBlockQuotation.TYPE -> RichBlockBlockQuotation.serializer()
RichBlockExpandableBlockQuotation.TYPE -> RichBlockExpandableBlockQuotation.serializer()
RichBlockPullQuotation.TYPE -> RichBlockPullQuotation.serializer()
RichBlockCollage.TYPE -> RichBlockCollage.serializer()
RichBlockSlideshow.TYPE -> RichBlockSlideshow.serializer()
RichBlockTable.TYPE -> RichBlockTable.serializer()
RichBlockDetails.TYPE -> RichBlockDetails.serializer()
RichBlockMap.TYPE -> RichBlockMap.serializer()
RichBlockButtons.TYPE -> RichBlockButtons.serializer()
RichBlockAnimation.TYPE -> RichBlockAnimation.serializer()
RichBlockAudio.TYPE -> RichBlockAudio.serializer()
RichBlockDocument.TYPE -> RichBlockDocument.serializer()
RichBlockPhoto.TYPE -> RichBlockPhoto.serializer()
RichBlockVideo.TYPE -> RichBlockVideo.serializer()
RichBlockVoiceNote.TYPE -> RichBlockVoiceNote.serializer()

View File

@@ -1,14 +1,18 @@
package dev.inmo.tgbotapi.types.rich
import dev.inmo.tgbotapi.types.animationField
import dev.inmo.tgbotapi.types.alignField
import dev.inmo.tgbotapi.types.audioField
import dev.inmo.tgbotapi.types.blocksField
import dev.inmo.tgbotapi.types.captionField
import dev.inmo.tgbotapi.types.cellsField
import dev.inmo.tgbotapi.types.buttonsField
import dev.inmo.tgbotapi.types.creditField
import dev.inmo.tgbotapi.types.documentField
import dev.inmo.tgbotapi.types.expressionField
import dev.inmo.tgbotapi.types.files.AnimationFile
import dev.inmo.tgbotapi.types.files.AudioFile
import dev.inmo.tgbotapi.types.files.DocumentFile
import dev.inmo.tgbotapi.types.files.PhotoFile
import dev.inmo.tgbotapi.types.files.TelegramMediaFile
import dev.inmo.tgbotapi.types.files.VideoFile
@@ -16,6 +20,7 @@ import dev.inmo.tgbotapi.types.files.VoiceFile
import dev.inmo.tgbotapi.types.hasSpoilerField
import dev.inmo.tgbotapi.types.heightField
import dev.inmo.tgbotapi.types.isBorderedField
import dev.inmo.tgbotapi.types.isCompactField
import dev.inmo.tgbotapi.types.isOpenField
import dev.inmo.tgbotapi.types.isStripedField
import dev.inmo.tgbotapi.types.itemsField
@@ -299,6 +304,34 @@ data class RichBlockBlockQuotation(
}
}
/**
* A block quotation that is collapsed by default.
*
* @see <a href="https://core.telegram.org/bots/api#richblockexpandableblockquotation">RichBlockExpandableBlockQuotation</a>
*/
@Serializable
data class RichBlockExpandableBlockQuotation(
@SerialName(textField)
val text: RichText,
@SerialName(creditField)
val credit: RichText? = null
) : RichBlock {
@EncodeDefault
@SerialName(typeField)
override val type: String = TYPE
override val markdown: String = markdown(text, credit)
override val html: String = html(text, credit)
companion object {
const val TYPE = "expandable_blockquote"
fun markdown(text: RichText, credit: RichText?): String =
"<blockquote collapsed>${text.markdown}${creditCiteMarkdown(credit)}</blockquote>"
fun html(text: RichText, credit: RichText?): String =
"<blockquote collapsed>${text.html}${creditCiteHtml(credit)}</blockquote>"
}
}
/**
* A quotation with centered text.
*
@@ -395,14 +428,16 @@ data class RichBlockTable(
@SerialName(isStripedField)
val isStriped: Boolean? = null,
@SerialName(captionField)
val caption: RichText? = null
val caption: RichText? = null,
@SerialName(isCompactField)
val isCompact: Boolean? = null
) : RichBlock {
@EncodeDefault
@SerialName(typeField)
override val type: String = TYPE
override val markdown: String = markdown(cells)
override val html: String = html(cells, isBordered, isStriped, caption)
override val html: String = html(cells, isBordered, isStriped, isCompact, caption)
companion object {
const val TYPE = "table"
@@ -424,10 +459,11 @@ data class RichBlockTable(
return lines.joinToString(separator = "\n")
}
fun html(cells: List<List<RichBlockTableCell>>, isBordered: Boolean?, isStriped: Boolean?, caption: RichText?): String {
fun html(cells: List<List<RichBlockTableCell>>, isBordered: Boolean?, isStriped: Boolean?, isCompact: Boolean?, caption: RichText?): String {
val attributes = buildString {
if (isBordered == true) append(" bordered")
if (isStriped == true) append(" striped")
if (isCompact == true) append(" compact")
}
val captionPart = caption?.let { "<caption>${it.html}</caption>" } ?: ""
val rows = cells.joinToString(separator = "") { row ->
@@ -445,6 +481,32 @@ data class RichBlockTable(
}
return "<table$attributes>$captionPart$rows</table>"
}
fun html(cells: List<List<RichBlockTableCell>>, isBordered: Boolean?, isStriped: Boolean?, caption: RichText?): String =
html(cells, isBordered, isStriped, null, caption)
}
}
/** A row of rich message buttons. */
@Serializable
data class RichBlockButtons(
@SerialName(buttonsField)
val buttons: List<RichMessageButton>,
@SerialName(alignField)
val align: RichBlockButtonAlignment? = null
) : RichBlock {
@EncodeDefault
@SerialName(typeField)
override val type: String = TYPE
override val markdown: String = markdown(buttons, align)
override val html: String = html(buttons, align)
companion object {
const val TYPE = "buttons"
fun markdown(buttons: List<RichMessageButton>, align: RichBlockButtonAlignment?): String =
html(buttons, align)
fun html(buttons: List<RichMessageButton>, align: RichBlockButtonAlignment?): String =
"<tg-button-row${align?.let { " align=\"${it.name}\"" } ?: ""}>${buttons.joinToString("") { it.toRichMarkup(it.text.html) }}</tg-button-row>"
}
}
@@ -588,6 +650,31 @@ data class RichBlockAudio(
}
}
/** A block with a general file. */
@Serializable
data class RichBlockDocument(
@SerialName(documentField)
val document: DocumentFile,
@SerialName(captionField)
override val caption: RichBlockCaption? = null
) : RichBlockMedia {
@EncodeDefault
@SerialName(typeField)
override val type: String = TYPE
override val media: TelegramMediaFile
get() = document
override val markdown: String = markdown(document, caption)
override val html: String = html(document, caption)
companion object {
const val TYPE = "document"
fun markdown(document: DocumentFile, caption: RichBlockCaption?): String =
richMediaMarkdown("tg://document?id=${document.fileId.fileId}", caption)
fun html(document: DocumentFile, caption: RichBlockCaption?): String =
richMediaHtml("tg-document", "tg://document?id=${document.fileId.fileId}", spoiler = false, selfClosing = false, caption = caption)
}
}
/**
* A block with a photo.
*

View File

@@ -0,0 +1,291 @@
package dev.inmo.tgbotapi.types.rich
import dev.inmo.tgbotapi.types.LoginURL
import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CopyTextButtonData
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.DisabledButton
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.SwitchInlineQueryChosenChat as SwitchInlineQueryChosenChatParameters
import dev.inmo.tgbotapi.types.webapps.WebAppInfo
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.SerializationException
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.JsonDecoder
import kotlinx.serialization.json.JsonEncoder
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonObject
/**
* A button in a rich message. Every subtype contains exactly one Bot API button action. [text] may contain only plain
* text, custom emoji and date-time entities. [LoginUrl] does not support [LoginURL.botUsername].
*
* @see <a href="https://core.telegram.org/bots/api#richmessagebutton">RichMessageButton</a>
*/
@Serializable(RichMessageButtonSerializer::class)
@ClassCastsIncluded
sealed interface RichMessageButton {
val text: RichText
val style: RichMessageButtonStyle?
@Serializable
data class Url(
@SerialName(textField) override val text: RichText,
@SerialName(urlField) val url: String,
@SerialName(styleField) override val style: RichMessageButtonStyle? = null
) : RichMessageButton {
init { validateRichMessageButton(text, style) }
}
@Serializable
data class CallbackData(
@SerialName(textField) override val text: RichText,
@SerialName(callbackDataField) val callbackData: String,
@SerialName(styleField) override val style: RichMessageButtonStyle? = null
) : RichMessageButton {
init { validateRichMessageButton(text, style, allowLinkStyle = true) }
}
@Serializable
data class WebApp(
@SerialName(textField) override val text: RichText,
@SerialName(webAppField) val webApp: WebAppInfo,
@SerialName(styleField) override val style: RichMessageButtonStyle? = null
) : RichMessageButton {
init { validateRichMessageButton(text, style) }
}
@Serializable
data class LoginUrl(
@SerialName(textField) override val text: RichText,
@SerialName(loginUrlField) val loginUrl: LoginURL,
@SerialName(styleField) override val style: RichMessageButtonStyle? = null
) : RichMessageButton {
init {
validateRichMessageButton(text, style)
require(loginUrl.botUsername == null) { "Rich message login URL buttons do not support bot usernames" }
}
}
@Serializable
data class SwitchInlineQuery(
@SerialName(textField) override val text: RichText,
@SerialName(switchInlineQueryField) val switchInlineQuery: String,
@SerialName(styleField) override val style: RichMessageButtonStyle? = null
) : RichMessageButton {
init { validateRichMessageButton(text, style) }
}
@Serializable
data class SwitchInlineQueryCurrentChat(
@SerialName(textField) override val text: RichText,
@SerialName(switchInlineQueryCurrentChatField) val switchInlineQueryCurrentChat: String,
@SerialName(styleField) override val style: RichMessageButtonStyle? = null
) : RichMessageButton {
init { validateRichMessageButton(text, style) }
}
@Serializable
data class SwitchInlineQueryChosenChat(
@SerialName(textField) override val text: RichText,
@SerialName(switchInlineQueryChosenChatField) val switchInlineQueryChosenChat: SwitchInlineQueryChosenChatParameters,
@SerialName(styleField) override val style: RichMessageButtonStyle? = null
) : RichMessageButton {
init { validateRichMessageButton(text, style) }
}
@Serializable
data class CopyText(
@SerialName(textField) override val text: RichText,
@SerialName(copyTextField) val copyText: CopyTextButtonData,
@SerialName(styleField) override val style: RichMessageButtonStyle? = null
) : RichMessageButton {
init { validateRichMessageButton(text, style) }
}
@Serializable
data class Disabled(
@SerialName(textField) override val text: RichText,
@SerialName(styleField) override val style: RichMessageButtonStyle? = null
) : RichMessageButton {
init { validateRichMessageButton(text, style) }
@SerialName(disabledField)
@kotlinx.serialization.EncodeDefault
val disabled: DisabledButton = DisabledButton
}
}
private fun validateRichMessageButton(
text: RichText,
style: RichMessageButtonStyle?,
allowLinkStyle: Boolean = false
) {
require(text.isValidRichMessageButtonText()) {
"Rich message button text can contain only plain text, custom emoji and date-time entities"
}
require(allowLinkStyle || style != RichMessageButtonStyle.Link) {
"The link style is allowed only for callback buttons"
}
}
private fun RichText.isValidRichMessageButtonText(): Boolean = when (this) {
is RichTextPlain -> true
is RichTextCustomEmoji -> true
is RichTextDateTime -> text.isValidRichMessageButtonText()
is RichTextGroup -> parts.all { it.isValidRichMessageButtonText() }
else -> false
}
/** Closed set of styles supported by [RichMessageButton]. */
@Serializable(RichMessageButtonStyle.Serializer::class)
sealed interface RichMessageButtonStyle {
val name: String
@Serializable(Serializer::class)
data object Danger : RichMessageButtonStyle { override val name = "danger" }
@Serializable(Serializer::class)
data object Success : RichMessageButtonStyle { override val name = "success" }
@Serializable(Serializer::class)
data object Primary : RichMessageButtonStyle { override val name = "primary" }
@Serializable(Serializer::class)
data object Link : RichMessageButtonStyle { override val name = "link" }
object Serializer : KSerializer<RichMessageButtonStyle> {
override val descriptor: SerialDescriptor = String.serializer().descriptor
override fun serialize(encoder: Encoder, value: RichMessageButtonStyle) = encoder.encodeString(value.name)
override fun deserialize(decoder: Decoder): RichMessageButtonStyle = when (val name = decoder.decodeString()) {
Danger.name -> Danger
Success.name -> Success
Primary.name -> Primary
Link.name -> Link
else -> throw SerializationException("Unknown RichMessageButtonStyle: $name")
}
}
}
object RichMessageButtonSerializer : KSerializer<RichMessageButton> {
override val descriptor: SerialDescriptor = JsonObject.serializer().descriptor
private val actionFields = setOf(
urlField, callbackDataField, webAppField, loginUrlField, switchInlineQueryField,
switchInlineQueryCurrentChatField, switchInlineQueryChosenChatField, copyTextField, disabledField
)
override fun deserialize(decoder: Decoder): RichMessageButton {
val input = decoder as? JsonDecoder ?: throw SerializationException("RichMessageButton requires JSON")
val element = input.decodeJsonElement().jsonObject
val actions = element.keys.intersect(actionFields)
if (actions.size != 1) throw SerializationException("RichMessageButton requires exactly one action, got $actions")
return when (actions.single()) {
urlField -> input.json.decodeFromJsonElement(RichMessageButton.Url.serializer(), element)
callbackDataField -> input.json.decodeFromJsonElement(RichMessageButton.CallbackData.serializer(), element)
webAppField -> input.json.decodeFromJsonElement(RichMessageButton.WebApp.serializer(), element)
loginUrlField -> input.json.decodeFromJsonElement(RichMessageButton.LoginUrl.serializer(), element)
switchInlineQueryField -> input.json.decodeFromJsonElement(RichMessageButton.SwitchInlineQuery.serializer(), element)
switchInlineQueryCurrentChatField -> input.json.decodeFromJsonElement(RichMessageButton.SwitchInlineQueryCurrentChat.serializer(), element)
switchInlineQueryChosenChatField -> input.json.decodeFromJsonElement(RichMessageButton.SwitchInlineQueryChosenChat.serializer(), element)
copyTextField -> input.json.decodeFromJsonElement(RichMessageButton.CopyText.serializer(), element)
disabledField -> input.json.decodeFromJsonElement(RichMessageButton.Disabled.serializer(), element)
else -> error("Unreachable RichMessageButton action")
}
}
override fun serialize(encoder: Encoder, value: RichMessageButton) {
val output = encoder as? JsonEncoder ?: throw SerializationException("RichMessageButton requires JSON")
val element = when (value) {
is RichMessageButton.Url -> output.json.encodeToJsonElement(RichMessageButton.Url.serializer(), value)
is RichMessageButton.CallbackData -> output.json.encodeToJsonElement(RichMessageButton.CallbackData.serializer(), value)
is RichMessageButton.WebApp -> output.json.encodeToJsonElement(RichMessageButton.WebApp.serializer(), value)
is RichMessageButton.LoginUrl -> output.json.encodeToJsonElement(RichMessageButton.LoginUrl.serializer(), value)
is RichMessageButton.SwitchInlineQuery -> output.json.encodeToJsonElement(RichMessageButton.SwitchInlineQuery.serializer(), value)
is RichMessageButton.SwitchInlineQueryCurrentChat -> output.json.encodeToJsonElement(RichMessageButton.SwitchInlineQueryCurrentChat.serializer(), value)
is RichMessageButton.SwitchInlineQueryChosenChat -> output.json.encodeToJsonElement(RichMessageButton.SwitchInlineQueryChosenChat.serializer(), value)
is RichMessageButton.CopyText -> output.json.encodeToJsonElement(RichMessageButton.CopyText.serializer(), value)
is RichMessageButton.Disabled -> output.json.encodeToJsonElement(RichMessageButton.Disabled.serializer(), value)
}
output.encodeJsonElement(element)
}
}
/** Horizontal alignment of [RichBlockButtons]. */
@Serializable(RichBlockButtonAlignment.Serializer::class)
sealed interface RichBlockButtonAlignment {
val name: String
@Serializable(Serializer::class)
data object Left : RichBlockButtonAlignment { override val name = "left" }
@Serializable(Serializer::class)
data object Center : RichBlockButtonAlignment { override val name = "center" }
@Serializable(Serializer::class)
data object Right : RichBlockButtonAlignment { override val name = "right" }
object Serializer : KSerializer<RichBlockButtonAlignment> {
override val descriptor: SerialDescriptor = String.serializer().descriptor
override fun serialize(encoder: Encoder, value: RichBlockButtonAlignment) = encoder.encodeString(value.name)
override fun deserialize(decoder: Decoder): RichBlockButtonAlignment = when (val name = decoder.decodeString()) {
Left.name -> Left
Center.name -> Center
Right.name -> Right
else -> throw SerializationException("Unknown RichBlockButtonAlignment: $name")
}
}
}
internal fun RichMessageButton.toRichMarkup(text: String): String {
val attributes = mutableListOf<String>()
fun attribute(name: String, value: String) {
attributes.add("$name=\"${value.escapeRichMarkupAttribute()}\"")
}
when (this) {
is RichMessageButton.Url -> {
attribute("type", "url")
attribute("url", url)
}
is RichMessageButton.CallbackData -> {
attribute("type", "callback_data")
attribute("data", callbackData)
}
is RichMessageButton.WebApp -> {
attribute("type", "web_app")
attribute("url", webApp.url)
}
is RichMessageButton.LoginUrl -> {
attribute("type", "login_url")
attribute("url", loginUrl.url)
loginUrl.forwardText?.let { attribute("forward-text", it) }
loginUrl.botUsername?.let { attribute("bot-username", it) }
if (loginUrl.requestWriteAccess == true) attributes.add("request-write-access")
}
is RichMessageButton.SwitchInlineQuery -> {
attribute("type", "switch_inline_query")
attribute("query", switchInlineQuery)
}
is RichMessageButton.SwitchInlineQueryCurrentChat -> {
attribute("type", "switch_inline_query_current_chat")
attribute("query", switchInlineQueryCurrentChat)
}
is RichMessageButton.SwitchInlineQueryChosenChat -> {
attribute("type", "switch_inline_query_chosen_chat")
switchInlineQueryChosenChat.query?.let { attribute("query", it) }
if (switchInlineQueryChosenChat.allowUsers) attributes.add("allow-user-chats")
if (switchInlineQueryChosenChat.allowBots) attributes.add("allow-bot-chats")
if (switchInlineQueryChosenChat.allowGroups) attributes.add("allow-group-chats")
if (switchInlineQueryChosenChat.allowChannels) attributes.add("allow-channel-chats")
}
is RichMessageButton.CopyText -> {
attribute("type", "copy_text")
attribute("text", copyText.text)
}
is RichMessageButton.Disabled -> attribute("type", "disabled")
}
style?.let { attribute("style", it.name) }
return "<tg-button ${attributes.joinToString(" ")}>$text</tg-button>"
}
private fun String.escapeRichMarkupAttribute(): String = replace("&", "&amp;")
.replace("\"", "&quot;")
.replace("<", "&lt;")
.replace(">", "&gt;")

View File

@@ -133,6 +133,7 @@ object RichTextEntitySerializer : JsonContentPolymorphicSerializer<RichTextEntit
RichTextHashtag.TYPE -> RichTextHashtag.serializer()
RichTextCashtag.TYPE -> RichTextCashtag.serializer()
RichTextBotCommand.TYPE -> RichTextBotCommand.serializer()
RichTextButton.TYPE -> RichTextButton.serializer()
RichTextAnchor.TYPE -> RichTextAnchor.serializer()
RichTextAnchorLink.TYPE -> RichTextAnchorLink.serializer()
RichTextReference.TYPE -> RichTextReference.serializer()

View File

@@ -98,6 +98,8 @@ class RichTextBuilder {
fun botCommand(botCommand: String, block: RichTextBuilder.() -> Unit) =
add(RichTextBotCommand(buildRichText(block), botCommand))
fun button(button: RichMessageButton) = add(RichTextButton(button))
fun anchor(name: String) = add(RichTextAnchor(name))
fun anchorLink(text: String, anchorName: String) = add(RichTextAnchorLink(RichTextPlain(text), anchorName))

View File

@@ -4,6 +4,7 @@ import dev.inmo.tgbotapi.types.CustomEmojiId
import dev.inmo.tgbotapi.types.alternativeTextField
import dev.inmo.tgbotapi.types.anchorNameField
import dev.inmo.tgbotapi.types.bankCardNumberField
import dev.inmo.tgbotapi.types.buttonField
import dev.inmo.tgbotapi.types.botCommandFullField
import dev.inmo.tgbotapi.types.cashtagField
import dev.inmo.tgbotapi.types.chat.User
@@ -28,6 +29,31 @@ import kotlinx.serialization.EncodeDefault
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
/**
* A [RichMessageButton] embedded in [RichText].
*
* @see <a href="https://core.telegram.org/bots/api#richtextbutton">RichTextButton</a>
*/
@Serializable
data class RichTextButton(
@SerialName(buttonField)
val button: RichMessageButton
) : RichTextEntity {
@EncodeDefault
@SerialName(typeField)
override val type: String = TYPE
override val rawText: String = button.text.rawText
override val markdown: String = markdown(button)
override val html: String = html(button)
companion object {
const val TYPE = "button"
fun markdown(button: RichMessageButton): String = button.toRichMarkup(button.text.markdown)
fun html(button: RichMessageButton): String = button.toRichMarkup(button.text.html)
}
}
/**
* A bold [RichTextEntity].
*

View File

@@ -48,14 +48,14 @@ fun String.escapeMarkdownV2PreAndCode() = escapeMarkdownV2(markdownV2PreAndCodeE
fun String.escapeMarkdownV2Common() = escapeMarkdownV2(markdownV2CommonEscapes)
fun String.toHtml(): String = replace(
"&",
"&amp;"
).replace(
"<",
"&lt;"
).replace(
">",
"&gt;"
).replace(
"&",
"&amp;"
)
fun String.splitForText() = chunked(textLength.last)

View File

@@ -2,8 +2,12 @@ package dev.inmo.tgbotapi.types
import dev.inmo.tgbotapi.types.rich.*
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFails
import kotlin.test.assertFailsWith
import kotlin.test.assertTrue
class RichMessageSerializationTest {
@@ -68,4 +72,95 @@ class RichMessageSerializationTest {
val decoded = json.decodeFromString(RichTextInfo.serializer(), encoded)
assertEquals(message, decoded)
}
@Test
fun serializesRichMessageButtonsWithFlatActionShape() {
val button: RichMessageButton = RichMessageButton.CallbackData(
text = RichTextPlain("Press"),
callbackData = "callback",
style = RichMessageButtonStyle.Link
)
val encoded = json.encodeToString(RichMessageButtonSerializer, button)
val element = json.parseToJsonElement(encoded).jsonObject
assertEquals("callback", element["callback_data"]?.jsonPrimitive?.content)
assertTrue("url" !in element)
assertEquals(button, json.decodeFromString(RichMessageButtonSerializer, encoded))
assertEquals(
RichMessageButton.Disabled(RichTextPlain("Disabled")),
json.decodeFromString(RichMessageButtonSerializer, "{\"text\":\"Disabled\",\"disabled\":{}}")
)
}
@Test
fun rejectsRichMessageButtonsWithZeroOrMultipleActions() {
kotlin.test.assertFailsWith<kotlinx.serialization.SerializationException> {
json.decodeFromString(RichMessageButtonSerializer, "{\"text\":\"none\"}")
}
kotlin.test.assertFailsWith<kotlinx.serialization.SerializationException> {
json.decodeFromString(RichMessageButtonSerializer, "{\"text\":\"multiple\",\"url\":\"https://t.me\",\"disabled\":{}}")
}
}
@Test
fun validatesRichMessageButtonTextContract() {
val plain = RichTextPlain("plain")
val customEmoji = RichTextCustomEmoji(CustomEmojiId("emoji"), "emoji")
val dateTime = RichTextDateTime(RichTextPlain("date"), TelegramDate(1L), "wDT")
val validTexts = listOf(
plain,
customEmoji,
dateTime,
RichTextGroup(listOf(plain, customEmoji, dateTime, RichTextGroup(listOf(plain))))
)
validTexts.forEach { text ->
assertEquals(text, RichMessageButton.Disabled(text).text)
}
val invalidTexts = listOf(
RichTextBold(plain),
RichTextUrl(plain, "https://example.org"),
RichTextGroup(listOf(plain, RichTextBold(plain))),
RichTextDateTime(RichTextBold(plain), TelegramDate(1L), "wDT")
)
invalidTexts.forEach { text ->
assertFailsWith<IllegalArgumentException> { RichMessageButton.Disabled(text) }
}
assertFails {
json.decodeFromString(
RichMessageButtonSerializer,
"{\"text\":{\"type\":\"bold\",\"text\":\"invalid\"},\"disabled\":{}}"
)
}
}
@Test
fun rejectsBotUsernameInRichMessageLoginUrlButtons() {
assertFailsWith<IllegalArgumentException> {
RichMessageButton.LoginUrl(
RichTextPlain("Login"),
LoginURL("https://example.org", botUsername = "example_bot")
)
}
assertFails {
json.decodeFromString(
RichMessageButtonSerializer,
"{\"text\":\"Login\",\"login_url\":{\"url\":\"https://example.org\",\"bot_username\":\"example_bot\"}}"
)
}
}
@Test
fun decodesNewRichTextAndBlockVariants() {
val text = json.decodeFromString(RichTextSerializer, "{\"type\":\"button\",\"button\":{\"text\":\"Press\",\"disabled\":{}}}")
assertEquals(RichTextButton(RichMessageButton.Disabled(RichTextPlain("Press"))), text)
val blocks = json.decodeFromString(
kotlinx.serialization.builtins.ListSerializer(RichBlockSerializer),
"[{\"type\":\"buttons\",\"buttons\":[{\"text\":\"Press\",\"disabled\":{}}],\"align\":\"center\"},{\"type\":\"expandable_blockquote\",\"text\":\"quote\"}]"
)
assertEquals(RichBlockButtons(listOf(RichMessageButton.Disabled(RichTextPlain("Press"))), RichBlockButtonAlignment.Center), blocks[0])
assertEquals(RichBlockExpandableBlockQuotation(RichTextPlain("quote")), blocks[1])
}
}

View File

@@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types.rich
import dev.inmo.tgbotapi.requests.abstracts.FileId
import dev.inmo.tgbotapi.types.media.TelegramMediaPhoto
import dev.inmo.tgbotapi.types.media.TelegramMediaDocument
import kotlin.test.Test
import kotlin.test.assertEquals
@@ -125,4 +126,19 @@ class InputRichBlocksDslTest {
blocks
)
}
@Test
fun buildsButtonsExpandableQuotationAndDocument() {
val document = TelegramMediaDocument(FileId("document_file_id"))
val blocks = buildInputRichBlocks {
expandableBlockQuotation { plain("quote") }
buttons(listOf(RichMessageButton.Disabled(RichTextPlain("Disabled"))), RichBlockButtonAlignment.Left)
document(document)
table(isCompact = true) { }
}
assertEquals(InputRichBlockExpandableBlockQuotation(RichTextPlain("quote")), blocks[0])
assertEquals(InputRichBlockButtons(listOf(RichMessageButton.Disabled(RichTextPlain("Disabled"))), RichBlockButtonAlignment.Left), blocks[1])
assertEquals(InputRichBlockDocument(document), blocks[2])
assertEquals(true, (blocks[3] as InputRichBlockTable).isCompact)
}
}

View File

@@ -1,7 +1,9 @@
package dev.inmo.tgbotapi.types.rich
import dev.inmo.tgbotapi.requests.abstracts.FileId
import dev.inmo.tgbotapi.requests.abstracts.asMultipartFile
import dev.inmo.tgbotapi.types.media.TelegramMediaPhoto
import dev.inmo.tgbotapi.types.media.TelegramMediaDocument
import dev.inmo.tgbotapi.types.media.TelegramMediaVoiceNote
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.SerializationException
@@ -73,6 +75,29 @@ class InputRichMessageSerializationTest {
assertEquals(true, cell["is_header"]?.jsonPrimitive?.boolean)
}
@Test
fun encodesCompactTablesButtonsAndDocuments() {
val document = TelegramMediaDocument("content".encodeToByteArray().asMultipartFile("document.txt"))
val message = InputRichMessageBlocks(
blocks = listOf(
InputRichBlockTable(emptyList(), isCompact = true),
InputRichBlockButtons(listOf(RichMessageButton.Disabled(RichTextPlain("Disabled")))),
InputRichBlockDocument(document)
)
)
val blocks = json.encodeToJsonElement(InputRichMessage.serializer(), message).jsonObject["blocks"]!!.jsonArray
assertEquals(true, blocks[0].jsonObject["is_compact"]?.jsonPrimitive?.boolean)
assertEquals("buttons", blocks[1].jsonObject["type"]?.jsonPrimitive?.content)
assertEquals("document", blocks[2].jsonObject["type"]?.jsonPrimitive?.content)
assertEquals(document.file, message.multipartFiles.values.single())
}
@Test
fun limitsInputButtonRowsToOneThroughEightButtons() {
assertFailsWith<IllegalArgumentException> { InputRichBlockButtons(emptyList()) }
assertFailsWith<IllegalArgumentException> { InputRichBlockButtons(List(9) { RichMessageButton.Disabled(RichTextPlain("x")) }) }
}
@Test
fun serializesTableCellVariantsWithSharedFlatShape() {
val header: RichBlockTableCell = RichBlockTableCell.Header(RichTextPlain("h"), align = RichBlockTableCellAlign.Left, valign = RichBlockTableCellVAlign.Top)
@@ -170,6 +195,17 @@ class InputRichMessageSerializationTest {
assertEquals("photo_file_id", mediaJson["media"]!!.jsonObject["media"]?.jsonPrimitive?.content)
}
@Test
fun encodesDocumentMediaReferences() {
val message = InputRichMessageMarkdown(
markdown = "See [document](tg://document?id=doc)",
media = listOf(InputRichMessageMedia("doc", TelegramMediaDocument(FileId("document_file_id"))))
)
val mediaJson = json.encodeToJsonElement(InputRichMessage.serializer(), message).jsonObject["media"]!!.jsonArray.single().jsonObject
assertEquals("document", mediaJson["media"]!!.jsonObject["type"]?.jsonPrimitive?.content)
assertEquals("document_file_id", mediaJson["media"]!!.jsonObject["media"]?.jsonPrimitive?.content)
}
@Test
fun roundTripsListOfInputRichBlocks() {
val blocks: List<InputRichBlock> = listOf(

View File

@@ -96,6 +96,15 @@ class RichBlockFormattingTest {
assertEquals("<blockquote><p>q</p></blockquote>", block.html)
}
@Test
fun expandableBlockQuotationAndButtons() {
val quotation = RichBlockExpandableBlockQuotation(RichTextPlain("q"), RichTextPlain("credit"))
assertEquals("<blockquote collapsed>q<cite>credit</cite></blockquote>", quotation.markdown)
assertEquals("<blockquote collapsed>q<cite>credit</cite></blockquote>", quotation.html)
val buttons = RichBlockButtons(listOf(RichMessageButton.Disabled(RichTextPlain("Disabled"))), RichBlockButtonAlignment.Right)
assertEquals("<tg-button-row align=\"right\"><tg-button type=\"disabled\">Disabled</tg-button></tg-button-row>", buttons.html)
}
@Test
fun details() {
val block = RichBlockDetails(RichTextPlain("sum"), listOf(RichBlockParagraph(RichTextPlain("body"))), isOpen = true)

View File

@@ -2,9 +2,13 @@ package dev.inmo.tgbotapi.types.rich
import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.CustomEmojiId
import dev.inmo.tgbotapi.types.LoginURL
import dev.inmo.tgbotapi.types.RawChatId
import dev.inmo.tgbotapi.types.TelegramDate
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CopyTextButtonData
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.SwitchInlineQueryChosenChat as SwitchInlineQueryChosenChatParameters
import dev.inmo.tgbotapi.types.chat.CommonUser
import dev.inmo.tgbotapi.types.webapps.WebAppInfo
import kotlin.test.Test
import kotlin.test.assertEquals
@@ -206,7 +210,49 @@ class RichTextFormattingTest {
@Test
fun plainHtmlEscapesAngleBrackets() {
assertEquals("a&amp;lt;b", RichTextPlain("a<b").html)
assertEquals("a&lt;b", RichTextPlain("a<b").html)
}
@Test
fun buttonHtmlEscapesContentExactlyOnce() {
val button = RichTextButton(RichMessageButton.Disabled(RichTextPlain("<&>")))
assertEquals("<tg-button type=\"disabled\">&lt;&amp;&gt;</tg-button>", button.html)
}
@Test
fun buttonAttributesEscapeRichMarkupMetacharacters() {
val rawAttribute = "a&\"<>"
val escapedAttribute = "a&amp;&quot;&lt;&gt;"
val text = RichTextPlain("Button")
val buttonsWithExpectedAttributes = listOf(
RichMessageButton.Url(text, rawAttribute) to
"type=\"url\" url=\"$escapedAttribute\"",
RichMessageButton.CallbackData(text, rawAttribute) to
"type=\"callback_data\" data=\"$escapedAttribute\"",
RichMessageButton.WebApp(text, WebAppInfo(rawAttribute)) to
"type=\"web_app\" url=\"$escapedAttribute\"",
RichMessageButton.LoginUrl(
text,
LoginURL(rawAttribute, rawAttribute, requestWriteAccess = true)
) to "type=\"login_url\" url=\"$escapedAttribute\" forward-text=\"$escapedAttribute\" " +
"request-write-access",
RichMessageButton.SwitchInlineQuery(text, rawAttribute) to
"type=\"switch_inline_query\" query=\"$escapedAttribute\"",
RichMessageButton.SwitchInlineQueryCurrentChat(text, rawAttribute) to
"type=\"switch_inline_query_current_chat\" query=\"$escapedAttribute\"",
RichMessageButton.SwitchInlineQueryChosenChat(
text,
SwitchInlineQueryChosenChatParameters(rawAttribute, allowUsers = true)
) to "type=\"switch_inline_query_chosen_chat\" query=\"$escapedAttribute\" allow-user-chats",
RichMessageButton.CopyText(text, CopyTextButtonData(rawAttribute)) to
"type=\"copy_text\" text=\"$escapedAttribute\""
)
buttonsWithExpectedAttributes.forEach { (button, expectedAttributes) ->
val expectedMarkup = "<tg-button $expectedAttributes>Button</tg-button>"
assertEquals(expectedMarkup, RichTextButton(button).html)
assertEquals(expectedMarkup, RichTextButton(button).markdown)
}
}
@Test

View File

@@ -1165,6 +1165,8 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun byUserOrThrow (Ldev/inmo/tgbotapi/types/message/ForwardInfo;)Ldev/inmo/tgbotapi/types/message/ForwardInfo$ByUser;
public static final fun callbackDataInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CallbackDataInlineKeyboardButton;
public static final fun callbackDataInlineKeyboardButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CallbackDataInlineKeyboardButton;
public static final fun callbackDataOrNull (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData;
public static final fun callbackDataOrThrow (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CallbackData;
public static final fun callbackGameInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CallbackGameInlineKeyboardButton;
public static final fun callbackGameInlineKeyboardButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CallbackGameInlineKeyboardButton;
public static final fun callbackQueryOrNull (Ldev/inmo/tgbotapi/abstracts/OptionallyWithUser;)Ldev/inmo/tgbotapi/types/queries/callback/CallbackQuery;
@@ -1335,6 +1337,8 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun contentMessageOrThrow (Ldev/inmo/tgbotapi/types/message/abstracts/Message;)Ldev/inmo/tgbotapi/types/message/abstracts/ContentMessage;
public static final fun copyTextButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CopyTextButton;
public static final fun copyTextButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/CopyTextButton;
public static final fun copyTextOrNull (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText;
public static final fun copyTextOrThrow (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$CopyText;
public static final fun coveredMediaFileOrNull (Ldev/inmo/tgbotapi/types/media/BaseTelegramMediaFile;)Ldev/inmo/tgbotapi/types/files/CoveredMediaFile;
public static final fun coveredMediaFileOrThrow (Ldev/inmo/tgbotapi/types/media/BaseTelegramMediaFile;)Ldev/inmo/tgbotapi/types/files/CoveredMediaFile;
public static final fun coveredTelegramMediaOrNull (Ldev/inmo/tgbotapi/types/media/TelegramMedia;)Ldev/inmo/tgbotapi/types/media/CoveredTelegramMedia;
@@ -1388,7 +1392,9 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun disabledInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/DisabledInlineKeyboardButton;
public static final fun disabledInlineKeyboardButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/DisabledInlineKeyboardButton;
public static final fun disabledOrNull (Ldev/inmo/tgbotapi/types/business_connection/BusinessConnection;)Ldev/inmo/tgbotapi/types/business_connection/BusinessConnection$Disabled;
public static final fun disabledOrNull (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled;
public static final fun disabledOrThrow (Ldev/inmo/tgbotapi/types/business_connection/BusinessConnection;)Ldev/inmo/tgbotapi/types/business_connection/BusinessConnection$Disabled;
public static final fun disabledOrThrow (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Disabled;
public static final fun documentContentOrNull (Ldev/inmo/tgbotapi/types/message/content/ResendableContent;)Ldev/inmo/tgbotapi/types/message/content/DocumentContent;
public static final fun documentContentOrThrow (Ldev/inmo/tgbotapi/types/message/content/ResendableContent;)Ldev/inmo/tgbotapi/types/message/content/DocumentContent;
public static final fun documentFileOrNull (Ldev/inmo/tgbotapi/types/media/BaseTelegramMediaFile;)Ldev/inmo/tgbotapi/types/files/DocumentFile;
@@ -1660,6 +1666,7 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifByUser (Ldev/inmo/tgbotapi/types/boosts/ChatBoostSource;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifByUser (Ldev/inmo/tgbotapi/types/chat/ChatMessageReactionUpdated;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifByUser (Ldev/inmo/tgbotapi/types/message/ForwardInfo;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifCallbackData (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifCallbackDataInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifCallbackGameInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifCallbackQuery (Ldev/inmo/tgbotapi/abstracts/OptionallyWithUser;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -1745,6 +1752,7 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifConnectedFromChannelGroupContentMessage (Ldev/inmo/tgbotapi/types/message/abstracts/Message;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifContactContent (Ldev/inmo/tgbotapi/types/message/content/ResendableContent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifContentMessage (Ldev/inmo/tgbotapi/types/message/abstracts/Message;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifCopyText (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifCopyTextButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifCoveredMediaFile (Ldev/inmo/tgbotapi/types/media/BaseTelegramMediaFile;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifCoveredTelegramMedia (Ldev/inmo/tgbotapi/types/media/TelegramMedia;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -1772,6 +1780,7 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifDirectMessagesConfigurationChangedPaid (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifDirectMessagesTopic (Ldev/inmo/tgbotapi/abstracts/OptionallyWithUser;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifDisabled (Ldev/inmo/tgbotapi/types/business_connection/BusinessConnection;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifDisabled (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifDisabledInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifDocumentContent (Ldev/inmo/tgbotapi/types/message/content/ResendableContent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifDocumentFile (Ldev/inmo/tgbotapi/types/media/BaseTelegramMediaFile;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -1931,9 +1940,12 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifInputRichBlockAnimation (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockAudio (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockBlockQuotation (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockButtons (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockCollage (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockDetails (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockDivider (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockDocument (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockExpandableBlockQuotation (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockFooter (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockList (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifInputRichBlockMap (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -1971,6 +1983,7 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifLocationContent (Ldev/inmo/tgbotapi/types/message/content/ResendableContent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifLocationInlineQuery (Ldev/inmo/tgbotapi/abstracts/OptionallyWithUser;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifLoginURLInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifLoginUrl (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifManagedBotCreated (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifManagedBotUpdate (Ldev/inmo/tgbotapi/types/update/abstracts/Update;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifMask (Ldev/inmo/tgbotapi/requests/stickers/InputSticker;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -2131,9 +2144,12 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifRichBlockAnimation (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockAudio (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockBlockQuotation (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockButtons (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockCollage (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockDetails (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockDivider (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockDocument (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockExpandableBlockQuotation (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockFooter (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockList (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichBlockMap (Ldev/inmo/tgbotapi/types/rich/RichBlock;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -2156,6 +2172,7 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifRichTextBankCardNumber (Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichTextBold (Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichTextBotCommand (Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichTextButton (Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichTextCashtag (Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichTextCode (Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifRichTextCustomEmoji (Ldev/inmo/tgbotapi/types/rich/RichText;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -2227,7 +2244,10 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifSupergroupEventMessage (Ldev/inmo/tgbotapi/abstracts/OptionallyWithUser;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifSupergroupEventMessage (Ldev/inmo/tgbotapi/types/message/abstracts/Message;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifSupergroupForumChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifSwitchInlineQuery (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifSwitchInlineQueryChosenChat (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifSwitchInlineQueryChosenChatInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifSwitchInlineQueryCurrentChat (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifSwitchInlineQueryCurrentChatInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifSwitchInlineQueryInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifTelegramAPI (Ldev/inmo/tgbotapi/types/payments/stars/TransactionPartner;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -2307,6 +2327,7 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifUploadVideoAction (Ldev/inmo/tgbotapi/types/actions/BotAction;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifUploadVideoNoteAction (Ldev/inmo/tgbotapi/types/actions/BotAction;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifUploadVoiceAction (Ldev/inmo/tgbotapi/types/actions/BotAction;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifUrl (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifUrlInlineQueryResult (Ldev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/InlineQueryResult;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifUsefulAsPaidMediaFile (Ldev/inmo/tgbotapi/types/media/BaseTelegramMediaFile;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifUser (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -2338,6 +2359,7 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun ifVoiceFile (Ldev/inmo/tgbotapi/types/media/BaseTelegramMediaFile;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifWallpaper (Ldev/inmo/tgbotapi/types/BackgroundType;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifWebApp (Ldev/inmo/tgbotapi/requests/answers/InlineQueryResultsButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifWebApp (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifWebAppData (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifWebAppInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
public static final fun ifWithCustomStartTelegramMedia (Ldev/inmo/tgbotapi/types/media/TelegramMedia;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
@@ -2448,12 +2470,18 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun inputRichBlockAudioOrThrow (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockAudio;
public static final fun inputRichBlockBlockQuotationOrNull (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockBlockQuotation;
public static final fun inputRichBlockBlockQuotationOrThrow (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockBlockQuotation;
public static final fun inputRichBlockButtonsOrNull (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockButtons;
public static final fun inputRichBlockButtonsOrThrow (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockButtons;
public static final fun inputRichBlockCollageOrNull (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockCollage;
public static final fun inputRichBlockCollageOrThrow (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockCollage;
public static final fun inputRichBlockDetailsOrNull (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockDetails;
public static final fun inputRichBlockDetailsOrThrow (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockDetails;
public static final fun inputRichBlockDividerOrNull (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockDivider;
public static final fun inputRichBlockDividerOrThrow (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockDivider;
public static final fun inputRichBlockDocumentOrNull (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockDocument;
public static final fun inputRichBlockDocumentOrThrow (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockDocument;
public static final fun inputRichBlockExpandableBlockQuotationOrNull (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation;
public static final fun inputRichBlockExpandableBlockQuotationOrThrow (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockExpandableBlockQuotation;
public static final fun inputRichBlockFooterOrNull (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockFooter;
public static final fun inputRichBlockFooterOrThrow (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockFooter;
public static final fun inputRichBlockListOrNull (Ldev/inmo/tgbotapi/types/rich/InputRichBlock;)Ldev/inmo/tgbotapi/types/rich/InputRichBlockList;
@@ -2528,6 +2556,8 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun locationInlineQueryOrThrow (Ldev/inmo/tgbotapi/abstracts/OptionallyWithUser;)Ldev/inmo/tgbotapi/types/InlineQueries/query/LocationInlineQuery;
public static final fun loginURLInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/LoginURLInlineKeyboardButton;
public static final fun loginURLInlineKeyboardButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/LoginURLInlineKeyboardButton;
public static final fun loginUrlOrNull (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl;
public static final fun loginUrlOrThrow (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$LoginUrl;
public static final fun managedBotCreatedOrNull (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/managed_bots/ManagedBotCreated;
public static final fun managedBotCreatedOrThrow (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/managed_bots/ManagedBotCreated;
public static final fun managedBotUpdateOrNull (Ldev/inmo/tgbotapi/types/update/abstracts/Update;)Ldev/inmo/tgbotapi/types/update/ManagedBotUpdate;
@@ -2848,12 +2878,18 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun richBlockAudioOrThrow (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockAudio;
public static final fun richBlockBlockQuotationOrNull (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockBlockQuotation;
public static final fun richBlockBlockQuotationOrThrow (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockBlockQuotation;
public static final fun richBlockButtonsOrNull (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockButtons;
public static final fun richBlockButtonsOrThrow (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockButtons;
public static final fun richBlockCollageOrNull (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockCollage;
public static final fun richBlockCollageOrThrow (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockCollage;
public static final fun richBlockDetailsOrNull (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockDetails;
public static final fun richBlockDetailsOrThrow (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockDetails;
public static final fun richBlockDividerOrNull (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockDivider;
public static final fun richBlockDividerOrThrow (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockDivider;
public static final fun richBlockDocumentOrNull (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockDocument;
public static final fun richBlockDocumentOrThrow (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockDocument;
public static final fun richBlockExpandableBlockQuotationOrNull (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation;
public static final fun richBlockExpandableBlockQuotationOrThrow (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockExpandableBlockQuotation;
public static final fun richBlockFooterOrNull (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockFooter;
public static final fun richBlockFooterOrThrow (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockFooter;
public static final fun richBlockListOrNull (Ldev/inmo/tgbotapi/types/rich/RichBlock;)Ldev/inmo/tgbotapi/types/rich/RichBlockList;
@@ -2898,6 +2934,8 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun richTextBoldOrThrow (Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichTextBold;
public static final fun richTextBotCommandOrNull (Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichTextBotCommand;
public static final fun richTextBotCommandOrThrow (Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichTextBotCommand;
public static final fun richTextButtonOrNull (Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichTextButton;
public static final fun richTextButtonOrThrow (Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichTextButton;
public static final fun richTextCashtagOrNull (Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichTextCashtag;
public static final fun richTextCashtagOrThrow (Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichTextCashtag;
public static final fun richTextCodeOrNull (Ldev/inmo/tgbotapi/types/rich/RichText;)Ldev/inmo/tgbotapi/types/rich/RichTextCode;
@@ -3042,10 +3080,16 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun supergroupForumChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/SupergroupForumChat;
public static final fun switchInlineQueryChosenChatInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChatInlineKeyboardButton;
public static final fun switchInlineQueryChosenChatInlineKeyboardButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChatInlineKeyboardButton;
public static final fun switchInlineQueryChosenChatOrNull (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat;
public static final fun switchInlineQueryChosenChatOrThrow (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryChosenChat;
public static final fun switchInlineQueryCurrentChatInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryCurrentChatInlineKeyboardButton;
public static final fun switchInlineQueryCurrentChatInlineKeyboardButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryCurrentChatInlineKeyboardButton;
public static final fun switchInlineQueryCurrentChatOrNull (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat;
public static final fun switchInlineQueryCurrentChatOrThrow (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQueryCurrentChat;
public static final fun switchInlineQueryInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryInlineKeyboardButton;
public static final fun switchInlineQueryInlineKeyboardButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryInlineKeyboardButton;
public static final fun switchInlineQueryOrNull (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery;
public static final fun switchInlineQueryOrThrow (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$SwitchInlineQuery;
public static final fun telegramAPIOrNull (Ldev/inmo/tgbotapi/types/payments/stars/TransactionPartner;)Ldev/inmo/tgbotapi/types/payments/stars/TransactionPartner$TelegramAPI;
public static final fun telegramAPIOrThrow (Ldev/inmo/tgbotapi/types/payments/stars/TransactionPartner;)Ldev/inmo/tgbotapi/types/payments/stars/TransactionPartner$TelegramAPI;
public static final fun telegramFreeMediaOrNull (Ldev/inmo/tgbotapi/types/media/TelegramMedia;)Ldev/inmo/tgbotapi/types/media/TelegramFreeMedia;
@@ -3202,6 +3246,8 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun uploadVoiceActionOrThrow (Ldev/inmo/tgbotapi/types/actions/BotAction;)Ldev/inmo/tgbotapi/types/actions/UploadVoiceAction;
public static final fun urlInlineQueryResultOrNull (Ldev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/InlineQueryResult;)Ldev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/UrlInlineQueryResult;
public static final fun urlInlineQueryResultOrThrow (Ldev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/InlineQueryResult;)Ldev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/UrlInlineQueryResult;
public static final fun urlOrNull (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Url;
public static final fun urlOrThrow (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$Url;
public static final fun usefulAsPaidMediaFileOrNull (Ldev/inmo/tgbotapi/types/media/BaseTelegramMediaFile;)Ldev/inmo/tgbotapi/types/files/UsefulAsPaidMediaFile;
public static final fun usefulAsPaidMediaFileOrThrow (Ldev/inmo/tgbotapi/types/media/BaseTelegramMediaFile;)Ldev/inmo/tgbotapi/types/files/UsefulAsPaidMediaFile;
public static final fun userLoggedInOrNull (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/UserLoggedIn;
@@ -3265,7 +3311,9 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
public static final fun webAppInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/WebAppInlineKeyboardButton;
public static final fun webAppInlineKeyboardButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/WebAppInlineKeyboardButton;
public static final fun webAppOrNull (Ldev/inmo/tgbotapi/requests/answers/InlineQueryResultsButton;)Ldev/inmo/tgbotapi/requests/answers/InlineQueryResultsButton$WebApp;
public static final fun webAppOrNull (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp;
public static final fun webAppOrThrow (Ldev/inmo/tgbotapi/requests/answers/InlineQueryResultsButton;)Ldev/inmo/tgbotapi/requests/answers/InlineQueryResultsButton$WebApp;
public static final fun webAppOrThrow (Ldev/inmo/tgbotapi/types/rich/RichMessageButton;)Ldev/inmo/tgbotapi/types/rich/RichMessageButton$WebApp;
public static final fun withCustomStartTelegramMediaOrNull (Ldev/inmo/tgbotapi/types/media/TelegramMedia;)Ldev/inmo/tgbotapi/types/media/WithCustomStartTelegramMedia;
public static final fun withCustomStartTelegramMediaOrThrow (Ldev/inmo/tgbotapi/types/media/TelegramMedia;)Ldev/inmo/tgbotapi/types/media/WithCustomStartTelegramMedia;
public static final fun withCustomizableCaptionInlineQueryResultOrNull (Ldev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/InlineQueryResult;)Ldev/inmo/tgbotapi/types/InlineQueries/InlineQueryResult/abstracts/WithCustomizableCaptionInlineQueryResult;

View File

@@ -563,9 +563,12 @@ import dev.inmo.tgbotapi.types.rich.InputRichBlockAnchor
import dev.inmo.tgbotapi.types.rich.InputRichBlockAnimation
import dev.inmo.tgbotapi.types.rich.InputRichBlockAudio
import dev.inmo.tgbotapi.types.rich.InputRichBlockBlockQuotation
import dev.inmo.tgbotapi.types.rich.InputRichBlockButtons
import dev.inmo.tgbotapi.types.rich.InputRichBlockCollage
import dev.inmo.tgbotapi.types.rich.InputRichBlockDetails
import dev.inmo.tgbotapi.types.rich.InputRichBlockDivider
import dev.inmo.tgbotapi.types.rich.InputRichBlockDocument
import dev.inmo.tgbotapi.types.rich.InputRichBlockExpandableBlockQuotation
import dev.inmo.tgbotapi.types.rich.InputRichBlockFooter
import dev.inmo.tgbotapi.types.rich.InputRichBlockList
import dev.inmo.tgbotapi.types.rich.InputRichBlockMap
@@ -586,9 +589,12 @@ import dev.inmo.tgbotapi.types.rich.RichBlockAnchor
import dev.inmo.tgbotapi.types.rich.RichBlockAnimation
import dev.inmo.tgbotapi.types.rich.RichBlockAudio
import dev.inmo.tgbotapi.types.rich.RichBlockBlockQuotation
import dev.inmo.tgbotapi.types.rich.RichBlockButtons
import dev.inmo.tgbotapi.types.rich.RichBlockCollage
import dev.inmo.tgbotapi.types.rich.RichBlockDetails
import dev.inmo.tgbotapi.types.rich.RichBlockDivider
import dev.inmo.tgbotapi.types.rich.RichBlockDocument
import dev.inmo.tgbotapi.types.rich.RichBlockExpandableBlockQuotation
import dev.inmo.tgbotapi.types.rich.RichBlockFooter
import dev.inmo.tgbotapi.types.rich.RichBlockList
import dev.inmo.tgbotapi.types.rich.RichBlockMap
@@ -604,12 +610,14 @@ import dev.inmo.tgbotapi.types.rich.RichBlockTable
import dev.inmo.tgbotapi.types.rich.RichBlockThinking
import dev.inmo.tgbotapi.types.rich.RichBlockVideo
import dev.inmo.tgbotapi.types.rich.RichBlockVoiceNote
import dev.inmo.tgbotapi.types.rich.RichMessageButton
import dev.inmo.tgbotapi.types.rich.RichText
import dev.inmo.tgbotapi.types.rich.RichTextAnchor
import dev.inmo.tgbotapi.types.rich.RichTextAnchorLink
import dev.inmo.tgbotapi.types.rich.RichTextBankCardNumber
import dev.inmo.tgbotapi.types.rich.RichTextBold
import dev.inmo.tgbotapi.types.rich.RichTextBotCommand
import dev.inmo.tgbotapi.types.rich.RichTextButton
import dev.inmo.tgbotapi.types.rich.RichTextCashtag
import dev.inmo.tgbotapi.types.rich.RichTextCode
import dev.inmo.tgbotapi.types.rich.RichTextCustomEmoji
@@ -3404,6 +3412,60 @@ public inline fun InputMessageContent.inputRichMessageContentOrThrow(): InputRic
public inline fun <T> InputMessageContent.ifInputRichMessageContent(block: (InputRichMessageContent) -> T): T? = inputRichMessageContentOrNull() ?.let(block)
public inline fun RichMessageButton.urlOrNull(): RichMessageButton.Url? = this as? dev.inmo.tgbotapi.types.rich.RichMessageButton.Url
public inline fun RichMessageButton.urlOrThrow(): RichMessageButton.Url = this as dev.inmo.tgbotapi.types.rich.RichMessageButton.Url
public inline fun <T> RichMessageButton.ifUrl(block: (RichMessageButton.Url) -> T): T? = urlOrNull() ?.let(block)
public inline fun RichMessageButton.callbackDataOrNull(): RichMessageButton.CallbackData? = this as? dev.inmo.tgbotapi.types.rich.RichMessageButton.CallbackData
public inline fun RichMessageButton.callbackDataOrThrow(): RichMessageButton.CallbackData = this as dev.inmo.tgbotapi.types.rich.RichMessageButton.CallbackData
public inline fun <T> RichMessageButton.ifCallbackData(block: (RichMessageButton.CallbackData) -> T): T? = callbackDataOrNull() ?.let(block)
public inline fun RichMessageButton.webAppOrNull(): RichMessageButton.WebApp? = this as? dev.inmo.tgbotapi.types.rich.RichMessageButton.WebApp
public inline fun RichMessageButton.webAppOrThrow(): RichMessageButton.WebApp = this as dev.inmo.tgbotapi.types.rich.RichMessageButton.WebApp
public inline fun <T> RichMessageButton.ifWebApp(block: (RichMessageButton.WebApp) -> T): T? = webAppOrNull() ?.let(block)
public inline fun RichMessageButton.loginUrlOrNull(): RichMessageButton.LoginUrl? = this as? dev.inmo.tgbotapi.types.rich.RichMessageButton.LoginUrl
public inline fun RichMessageButton.loginUrlOrThrow(): RichMessageButton.LoginUrl = this as dev.inmo.tgbotapi.types.rich.RichMessageButton.LoginUrl
public inline fun <T> RichMessageButton.ifLoginUrl(block: (RichMessageButton.LoginUrl) -> T): T? = loginUrlOrNull() ?.let(block)
public inline fun RichMessageButton.switchInlineQueryOrNull(): RichMessageButton.SwitchInlineQuery? = this as? dev.inmo.tgbotapi.types.rich.RichMessageButton.SwitchInlineQuery
public inline fun RichMessageButton.switchInlineQueryOrThrow(): RichMessageButton.SwitchInlineQuery = this as dev.inmo.tgbotapi.types.rich.RichMessageButton.SwitchInlineQuery
public inline fun <T> RichMessageButton.ifSwitchInlineQuery(block: (RichMessageButton.SwitchInlineQuery) -> T): T? = switchInlineQueryOrNull() ?.let(block)
public inline fun RichMessageButton.switchInlineQueryCurrentChatOrNull(): RichMessageButton.SwitchInlineQueryCurrentChat? = this as? dev.inmo.tgbotapi.types.rich.RichMessageButton.SwitchInlineQueryCurrentChat
public inline fun RichMessageButton.switchInlineQueryCurrentChatOrThrow(): RichMessageButton.SwitchInlineQueryCurrentChat = this as dev.inmo.tgbotapi.types.rich.RichMessageButton.SwitchInlineQueryCurrentChat
public inline fun <T> RichMessageButton.ifSwitchInlineQueryCurrentChat(block: (RichMessageButton.SwitchInlineQueryCurrentChat) -> T): T? = switchInlineQueryCurrentChatOrNull() ?.let(block)
public inline fun RichMessageButton.switchInlineQueryChosenChatOrNull(): RichMessageButton.SwitchInlineQueryChosenChat? = this as? dev.inmo.tgbotapi.types.rich.RichMessageButton.SwitchInlineQueryChosenChat
public inline fun RichMessageButton.switchInlineQueryChosenChatOrThrow(): RichMessageButton.SwitchInlineQueryChosenChat = this as dev.inmo.tgbotapi.types.rich.RichMessageButton.SwitchInlineQueryChosenChat
public inline fun <T> RichMessageButton.ifSwitchInlineQueryChosenChat(block: (RichMessageButton.SwitchInlineQueryChosenChat) -> T): T? = switchInlineQueryChosenChatOrNull() ?.let(block)
public inline fun RichMessageButton.copyTextOrNull(): RichMessageButton.CopyText? = this as? dev.inmo.tgbotapi.types.rich.RichMessageButton.CopyText
public inline fun RichMessageButton.copyTextOrThrow(): RichMessageButton.CopyText = this as dev.inmo.tgbotapi.types.rich.RichMessageButton.CopyText
public inline fun <T> RichMessageButton.ifCopyText(block: (RichMessageButton.CopyText) -> T): T? = copyTextOrNull() ?.let(block)
public inline fun RichMessageButton.disabledOrNull(): RichMessageButton.Disabled? = this as? dev.inmo.tgbotapi.types.rich.RichMessageButton.Disabled
public inline fun RichMessageButton.disabledOrThrow(): RichMessageButton.Disabled = this as dev.inmo.tgbotapi.types.rich.RichMessageButton.Disabled
public inline fun <T> RichMessageButton.ifDisabled(block: (RichMessageButton.Disabled) -> T): T? = disabledOrNull() ?.let(block)
public inline fun InputRichBlock.inputRichBlockMediaOrNull(): InputRichBlockMedia? = this as? dev.inmo.tgbotapi.types.rich.InputRichBlockMedia
public inline fun InputRichBlock.inputRichBlockMediaOrThrow(): InputRichBlockMedia = this as dev.inmo.tgbotapi.types.rich.InputRichBlockMedia
@@ -3464,6 +3526,12 @@ public inline fun InputRichBlock.inputRichBlockBlockQuotationOrThrow(): InputRic
public inline fun <T> InputRichBlock.ifInputRichBlockBlockQuotation(block: (InputRichBlockBlockQuotation) -> T): T? = inputRichBlockBlockQuotationOrNull() ?.let(block)
public inline fun InputRichBlock.inputRichBlockExpandableBlockQuotationOrNull(): InputRichBlockExpandableBlockQuotation? = this as? dev.inmo.tgbotapi.types.rich.InputRichBlockExpandableBlockQuotation
public inline fun InputRichBlock.inputRichBlockExpandableBlockQuotationOrThrow(): InputRichBlockExpandableBlockQuotation = this as dev.inmo.tgbotapi.types.rich.InputRichBlockExpandableBlockQuotation
public inline fun <T> InputRichBlock.ifInputRichBlockExpandableBlockQuotation(block: (InputRichBlockExpandableBlockQuotation) -> T): T? = inputRichBlockExpandableBlockQuotationOrNull() ?.let(block)
public inline fun InputRichBlock.inputRichBlockPullQuotationOrNull(): InputRichBlockPullQuotation? = this as? dev.inmo.tgbotapi.types.rich.InputRichBlockPullQuotation
public inline fun InputRichBlock.inputRichBlockPullQuotationOrThrow(): InputRichBlockPullQuotation = this as dev.inmo.tgbotapi.types.rich.InputRichBlockPullQuotation
@@ -3488,6 +3556,12 @@ public inline fun InputRichBlock.inputRichBlockTableOrThrow(): InputRichBlockTab
public inline fun <T> InputRichBlock.ifInputRichBlockTable(block: (InputRichBlockTable) -> T): T? = inputRichBlockTableOrNull() ?.let(block)
public inline fun InputRichBlock.inputRichBlockButtonsOrNull(): InputRichBlockButtons? = this as? dev.inmo.tgbotapi.types.rich.InputRichBlockButtons
public inline fun InputRichBlock.inputRichBlockButtonsOrThrow(): InputRichBlockButtons = this as dev.inmo.tgbotapi.types.rich.InputRichBlockButtons
public inline fun <T> InputRichBlock.ifInputRichBlockButtons(block: (InputRichBlockButtons) -> T): T? = inputRichBlockButtonsOrNull() ?.let(block)
public inline fun InputRichBlock.inputRichBlockDetailsOrNull(): InputRichBlockDetails? = this as? dev.inmo.tgbotapi.types.rich.InputRichBlockDetails
public inline fun InputRichBlock.inputRichBlockDetailsOrThrow(): InputRichBlockDetails = this as dev.inmo.tgbotapi.types.rich.InputRichBlockDetails
@@ -3512,6 +3586,12 @@ public inline fun InputRichBlock.inputRichBlockAudioOrThrow(): InputRichBlockAud
public inline fun <T> InputRichBlock.ifInputRichBlockAudio(block: (InputRichBlockAudio) -> T): T? = inputRichBlockAudioOrNull() ?.let(block)
public inline fun InputRichBlock.inputRichBlockDocumentOrNull(): InputRichBlockDocument? = this as? dev.inmo.tgbotapi.types.rich.InputRichBlockDocument
public inline fun InputRichBlock.inputRichBlockDocumentOrThrow(): InputRichBlockDocument = this as dev.inmo.tgbotapi.types.rich.InputRichBlockDocument
public inline fun <T> InputRichBlock.ifInputRichBlockDocument(block: (InputRichBlockDocument) -> T): T? = inputRichBlockDocumentOrNull() ?.let(block)
public inline fun InputRichBlock.inputRichBlockPhotoOrNull(): InputRichBlockPhoto? = this as? dev.inmo.tgbotapi.types.rich.InputRichBlockPhoto
public inline fun InputRichBlock.inputRichBlockPhotoOrThrow(): InputRichBlockPhoto = this as dev.inmo.tgbotapi.types.rich.InputRichBlockPhoto
@@ -3536,6 +3616,12 @@ public inline fun InputRichBlock.inputRichBlockThinkingOrThrow(): InputRichBlock
public inline fun <T> InputRichBlock.ifInputRichBlockThinking(block: (InputRichBlockThinking) -> T): T? = inputRichBlockThinkingOrNull() ?.let(block)
public inline fun RichText.richTextButtonOrNull(): RichTextButton? = this as? dev.inmo.tgbotapi.types.rich.RichTextButton
public inline fun RichText.richTextButtonOrThrow(): RichTextButton = this as dev.inmo.tgbotapi.types.rich.RichTextButton
public inline fun <T> RichText.ifRichTextButton(block: (RichTextButton) -> T): T? = richTextButtonOrNull() ?.let(block)
public inline fun RichText.richTextBoldOrNull(): RichTextBold? = this as? dev.inmo.tgbotapi.types.rich.RichTextBold
public inline fun RichText.richTextBoldOrThrow(): RichTextBold = this as dev.inmo.tgbotapi.types.rich.RichTextBold
@@ -3758,6 +3844,12 @@ public inline fun RichBlock.richBlockBlockQuotationOrThrow(): RichBlockBlockQuot
public inline fun <T> RichBlock.ifRichBlockBlockQuotation(block: (RichBlockBlockQuotation) -> T): T? = richBlockBlockQuotationOrNull() ?.let(block)
public inline fun RichBlock.richBlockExpandableBlockQuotationOrNull(): RichBlockExpandableBlockQuotation? = this as? dev.inmo.tgbotapi.types.rich.RichBlockExpandableBlockQuotation
public inline fun RichBlock.richBlockExpandableBlockQuotationOrThrow(): RichBlockExpandableBlockQuotation = this as dev.inmo.tgbotapi.types.rich.RichBlockExpandableBlockQuotation
public inline fun <T> RichBlock.ifRichBlockExpandableBlockQuotation(block: (RichBlockExpandableBlockQuotation) -> T): T? = richBlockExpandableBlockQuotationOrNull() ?.let(block)
public inline fun RichBlock.richBlockPullQuotationOrNull(): RichBlockPullQuotation? = this as? dev.inmo.tgbotapi.types.rich.RichBlockPullQuotation
public inline fun RichBlock.richBlockPullQuotationOrThrow(): RichBlockPullQuotation = this as dev.inmo.tgbotapi.types.rich.RichBlockPullQuotation
@@ -3782,6 +3874,12 @@ public inline fun RichBlock.richBlockTableOrThrow(): RichBlockTable = this as de
public inline fun <T> RichBlock.ifRichBlockTable(block: (RichBlockTable) -> T): T? = richBlockTableOrNull() ?.let(block)
public inline fun RichBlock.richBlockButtonsOrNull(): RichBlockButtons? = this as? dev.inmo.tgbotapi.types.rich.RichBlockButtons
public inline fun RichBlock.richBlockButtonsOrThrow(): RichBlockButtons = this as dev.inmo.tgbotapi.types.rich.RichBlockButtons
public inline fun <T> RichBlock.ifRichBlockButtons(block: (RichBlockButtons) -> T): T? = richBlockButtonsOrNull() ?.let(block)
public inline fun RichBlock.richBlockDetailsOrNull(): RichBlockDetails? = this as? dev.inmo.tgbotapi.types.rich.RichBlockDetails
public inline fun RichBlock.richBlockDetailsOrThrow(): RichBlockDetails = this as dev.inmo.tgbotapi.types.rich.RichBlockDetails
@@ -3806,6 +3904,12 @@ public inline fun RichBlock.richBlockAudioOrThrow(): RichBlockAudio = this as de
public inline fun <T> RichBlock.ifRichBlockAudio(block: (RichBlockAudio) -> T): T? = richBlockAudioOrNull() ?.let(block)
public inline fun RichBlock.richBlockDocumentOrNull(): RichBlockDocument? = this as? dev.inmo.tgbotapi.types.rich.RichBlockDocument
public inline fun RichBlock.richBlockDocumentOrThrow(): RichBlockDocument = this as dev.inmo.tgbotapi.types.rich.RichBlockDocument
public inline fun <T> RichBlock.ifRichBlockDocument(block: (RichBlockDocument) -> T): T? = richBlockDocumentOrNull() ?.let(block)
public inline fun RichBlock.richBlockPhotoOrNull(): RichBlockPhoto? = this as? dev.inmo.tgbotapi.types.rich.RichBlockPhoto
public inline fun RichBlock.richBlockPhotoOrThrow(): RichBlockPhoto = this as dev.inmo.tgbotapi.types.rich.RichBlockPhoto