diff --git a/README.md b/README.md
index 6a6be122a..18553ab81 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
[](https://codecov.io/gh/pengrad/java-telegram-bot-api)
Java library for interacting with [Telegram Bot API](https://core.telegram.org/bots/api)
-- Full support of all Bot API 10.3 methods
+- Full support of all Bot API 10.4 methods
- Telegram [Passport](https://core.telegram.org/passport) and Decryption API
- Bot [Payments](https://core.telegram.org/bots/payments)
- [Gaming Platform](https://telegram.org/blog/games)
@@ -13,14 +13,14 @@ Java library for interacting with [Telegram Bot API](https://core.telegram.org/b
Gradle:
```groovy
-implementation 'com.github.pengrad:java-telegram-bot-api:10.3.0'
+implementation 'com.github.pengrad:java-telegram-bot-api:10.4.0'
```
Maven:
```xml
com.github.pengrad
java-telegram-bot-api
- 10.3.0
+ 10.4.0
```
[JAR with all dependencies on release page](https://github.com/pengrad/java-telegram-bot-api/releases)
diff --git a/gradle.properties b/gradle.properties
index fa055e807..513f61422 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,5 +1,5 @@
GROUP=com.github.pengrad
-VERSION_NAME=10.3.0
+VERSION_NAME=10.4.0
POM_DESCRIPTION=Java API for Telegram Bot API
POM_URL=https://github.com/pengrad/java-telegram-bot-api/
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/story/area/StoryAreaPosition.kt b/library/src/main/java/com/pengrad/telegrambot/model/AreaPosition.kt
similarity index 82%
rename from library/src/main/java/com/pengrad/telegrambot/model/story/area/StoryAreaPosition.kt
rename to library/src/main/java/com/pengrad/telegrambot/model/AreaPosition.kt
index 25ac5a964..12a656520 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/story/area/StoryAreaPosition.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/AreaPosition.kt
@@ -1,10 +1,10 @@
-package com.pengrad.telegrambot.model.story.area
+package com.pengrad.telegrambot.model
-data class StoryAreaPosition(
+data class AreaPosition(
@get:JvmName("xPercentage") val xPercentage: Double,
@get:JvmName("yPercentage") val yPercentage: Double,
@get:JvmName("widthPercentage") val widthPercentage: Double,
@get:JvmName("heightPercentage") val heightPercentage: Double,
@get:JvmName("rotationAngle") val rotationAngle: Double,
@get:JvmName("cornerRadiusPercentage") val cornerRadiusPercentage: Double
-)
\ No newline at end of file
+)
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java
index b1dca42ad..9a31917bf 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java
@@ -1,5 +1,7 @@
package com.pengrad.telegrambot.model;
+import com.pengrad.telegrambot.model.chatsharetheme.ChatShareTheme;
+import com.pengrad.telegrambot.model.ton.TonWalletCard;
import com.google.gson.annotations.SerializedName;
import com.pengrad.telegrambot.model.business.BusinessIntro;
import com.pengrad.telegrambot.model.business.BusinessLocation;
@@ -81,6 +83,8 @@ public enum Type {
private Audio first_profile_audio;
private User guard_bot;
private Community community;
+ private TonWalletCard ton_wallet_card;
+ private ChatShareTheme share_theme;
public Long id() {
return id;
@@ -293,6 +297,14 @@ public Community community() {
return community;
}
+ public TonWalletCard tonWalletCard() {
+ return ton_wallet_card;
+ }
+
+ public ChatShareTheme shareTheme() {
+ return share_theme;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -350,7 +362,9 @@ public boolean equals(Object o) {
Objects.equals(unique_gift_colors, chat.unique_gift_colors) &&
Objects.equals(first_profile_audio, chat.first_profile_audio) &&
Objects.equals(guard_bot, chat.guard_bot) &&
- Objects.equals(community, chat.community);
+ Objects.equals(community, chat.community) &&
+ Objects.equals(ton_wallet_card, chat.ton_wallet_card) &&
+ Objects.equals(share_theme, chat.share_theme);
}
@Override
@@ -414,6 +428,8 @@ public String toString() {
", first_profile_audio=" + first_profile_audio +
", guard_bot=" + guard_bot +
", community=" + community +
+ ", ton_wallet_card=" + ton_wallet_card +
+ ", share_theme=" + share_theme +
'}';
}
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ExternalReplyInfo.java b/library/src/main/java/com/pengrad/telegrambot/model/ExternalReplyInfo.java
index 5550e48dd..690cb5d37 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/ExternalReplyInfo.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ExternalReplyInfo.java
@@ -1,5 +1,6 @@
package com.pengrad.telegrambot.model;
+import com.pengrad.telegrambot.model.widget.Widget;
import com.pengrad.telegrambot.model.checklist.Checklist;
import com.pengrad.telegrambot.model.giveaway.Giveaway;
import com.pengrad.telegrambot.model.giveaway.GiveawayWinners;
@@ -23,6 +24,7 @@ public class ExternalReplyInfo implements Serializable {
private PaidMediaInfo paid_media;
private Document document;
private LivePhoto live_photo;
+ private Widget widget;
private PhotoSize[] photo;
private Sticker sticker;
private Story story;
@@ -76,6 +78,10 @@ public LivePhoto livePhoto() {
return live_photo;
}
+ public Widget widget() {
+ return widget;
+ }
+
public PhotoSize[] photo() {
return photo;
}
@@ -149,12 +155,12 @@ public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ExternalReplyInfo that = (ExternalReplyInfo) o;
- return Objects.equals(origin, that.origin) && Objects.equals(chat, that.chat) && Objects.equals(message_id, that.message_id) && Objects.equals(link_preview_options, that.link_preview_options) && Objects.equals(animation, that.animation) && Objects.equals(audio, that.audio) && Objects.equals(paid_media, that.paid_media) && Objects.equals(document, that.document) && Objects.equals(live_photo, that.live_photo) && Arrays.equals(photo, that.photo) && Objects.equals(sticker, that.sticker) && Objects.equals(story, that.story) && Objects.equals(video, that.video) && Objects.equals(video_note, that.video_note) && Objects.equals(voice, that.voice) && Objects.equals(has_media_spoiler, that.has_media_spoiler) && Objects.equals(checklist, that.checklist) && Objects.equals(contact, that.contact) && Objects.equals(dice, that.dice) && Objects.equals(game, that.game) && Objects.equals(giveaway, that.giveaway) && Objects.equals(giveaway_winners, that.giveaway_winners) && Objects.equals(invoice, that.invoice) && Objects.equals(location, that.location) && Objects.equals(poll, that.poll) && Objects.equals(venue, that.venue);
+ return Objects.equals(origin, that.origin) && Objects.equals(chat, that.chat) && Objects.equals(message_id, that.message_id) && Objects.equals(link_preview_options, that.link_preview_options) && Objects.equals(animation, that.animation) && Objects.equals(audio, that.audio) && Objects.equals(paid_media, that.paid_media) && Objects.equals(document, that.document) && Objects.equals(live_photo, that.live_photo) && Objects.equals(widget, that.widget) && Arrays.equals(photo, that.photo) && Objects.equals(sticker, that.sticker) && Objects.equals(story, that.story) && Objects.equals(video, that.video) && Objects.equals(video_note, that.video_note) && Objects.equals(voice, that.voice) && Objects.equals(has_media_spoiler, that.has_media_spoiler) && Objects.equals(checklist, that.checklist) && Objects.equals(contact, that.contact) && Objects.equals(dice, that.dice) && Objects.equals(game, that.game) && Objects.equals(giveaway, that.giveaway) && Objects.equals(giveaway_winners, that.giveaway_winners) && Objects.equals(invoice, that.invoice) && Objects.equals(location, that.location) && Objects.equals(poll, that.poll) && Objects.equals(venue, that.venue);
}
@Override
public int hashCode() {
- int result = Objects.hash(origin, chat, message_id, link_preview_options, animation, audio, paid_media, document, live_photo, sticker, story, video, video_note, voice, has_media_spoiler, checklist, contact, dice, game, giveaway, giveaway_winners, invoice, location, poll, venue);
+ int result = Objects.hash(origin, chat, message_id, link_preview_options, animation, audio, paid_media, document, live_photo, widget, sticker, story, video, video_note, voice, has_media_spoiler, checklist, contact, dice, game, giveaway, giveaway_winners, invoice, location, poll, venue);
result = 31 * result + Arrays.hashCode(photo);
return result;
}
@@ -171,6 +177,7 @@ public String toString() {
", paid_media=" + paid_media +
", document=" + document +
", live_photo=" + live_photo +
+ ", widget=" + widget +
", photo=" + Arrays.toString(photo) +
", sticker=" + sticker +
", story=" + story +
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Message.java b/library/src/main/java/com/pengrad/telegrambot/model/Message.java
index 299917ff7..3285d3e56 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/Message.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/Message.java
@@ -1,5 +1,7 @@
package com.pengrad.telegrambot.model;
+import com.pengrad.telegrambot.model.ton.TonWalletTransfer;
+import com.pengrad.telegrambot.model.widget.Widget;
import com.pengrad.telegrambot.model.chatbackground.ChatBackground;
import com.pengrad.telegrambot.model.chatboost.ChatBoostAdded;
import com.pengrad.telegrambot.model.chatowner.ChatOwnerChanged;
@@ -151,6 +153,9 @@ public class Message extends MaybeInaccessibleMessage implements Serializable {
private CommunityChatAdded community_chat_added;
private CommunityChatJoined community_chat_joined;
private CommunityChatRemoved community_chat_removed;
+ private Widget widget;
+ private TonWalletTransfer ton_wallet_transfer;
+ private PaidMessagesWaived paid_messages_waived;
public Long messageThreadId() {
return message_thread_id;
@@ -609,6 +614,18 @@ public CommunityChatRemoved communityChatRemoved() {
return community_chat_removed;
}
+ public Widget widget() {
+ return widget;
+ }
+
+ public TonWalletTransfer tonWalletTransfer() {
+ return ton_wallet_transfer;
+ }
+
+ public PaidMessagesWaived paidMessagesWaived() {
+ return paid_messages_waived;
+ }
+
public User guestBotCallerUser() {
return guest_bot_caller_user;
}
@@ -766,7 +783,10 @@ public boolean equals(Object o) {
Objects.equals(guest_query_id, message.guest_query_id) &&
Objects.equals(community_chat_added, message.community_chat_added) &&
Objects.equals(community_chat_joined, message.community_chat_joined) &&
- Objects.equals(community_chat_removed, message.community_chat_removed);
+ Objects.equals(community_chat_removed, message.community_chat_removed) &&
+ Objects.equals(widget, message.widget) &&
+ Objects.equals(ton_wallet_transfer, message.ton_wallet_transfer) &&
+ Objects.equals(paid_messages_waived, message.paid_messages_waived);
}
@Override
@@ -897,6 +917,9 @@ public String toString() {
", community_chat_added=" + community_chat_added +
", community_chat_joined=" + community_chat_joined +
", community_chat_removed=" + community_chat_removed +
+ ", widget=" + widget +
+ ", ton_wallet_transfer=" + ton_wallet_transfer +
+ ", paid_messages_waived=" + paid_messages_waived +
'}';
}
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java b/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java
index 9f2e8bbf6..a44338c3e 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java
@@ -12,7 +12,8 @@ public class MessageEntity implements Serializable {
public enum Type {
mention, hashtag, cashtag, bot_command, url, email, phone_number, bold, italic, code, pre, text_link,
- text_mention, underline, strikethrough, spoiler, custom_emoji, blockquote, expandable_blockquote, date_time
+ text_mention, underline, strikethrough, spoiler, custom_emoji, blockquote, expandable_blockquote, date_time,
+ ton_address, bank_card_number
}
private Type type;
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/PaidMessagesWaived.kt b/library/src/main/java/com/pengrad/telegrambot/model/PaidMessagesWaived.kt
new file mode 100644
index 000000000..74301e3ef
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/PaidMessagesWaived.kt
@@ -0,0 +1,13 @@
+package com.pengrad.telegrambot.model
+
+import java.io.Serializable
+
+class PaidMessagesWaived : Serializable {
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ return other != null && javaClass == other.javaClass
+ }
+
+ override fun hashCode(): Int = 1
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/TextQuote.java b/library/src/main/java/com/pengrad/telegrambot/model/TextQuote.java
index 15c410ecf..a7054bd7c 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/TextQuote.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/TextQuote.java
@@ -1,5 +1,6 @@
package com.pengrad.telegrambot.model;
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Objects;
@@ -10,6 +11,7 @@ public class TextQuote implements Serializable {
private String text;
private MessageEntity[] entities;
+ private RichText[] rich_texts;
private Integer position;
private Boolean is_manual;
@@ -21,6 +23,10 @@ public MessageEntity[] entities() {
return entities;
}
+ public RichText[] richTexts() {
+ return rich_texts;
+ }
+
public Integer position() {
return position;
}
@@ -35,13 +41,14 @@ public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TextQuote textQuote = (TextQuote) o;
- return Objects.equals(text, textQuote.text) && Arrays.equals(entities, textQuote.entities) && Objects.equals(position, textQuote.position) && Objects.equals(is_manual, textQuote.is_manual);
+ return Objects.equals(text, textQuote.text) && Arrays.equals(entities, textQuote.entities) && Arrays.equals(rich_texts, textQuote.rich_texts) && Objects.equals(position, textQuote.position) && Objects.equals(is_manual, textQuote.is_manual);
}
@Override
public int hashCode() {
int result = Objects.hash(text, position, is_manual);
result = 31 * result + Arrays.hashCode(entities);
+ result = 31 * result + Arrays.hashCode(rich_texts);
return result;
}
@@ -50,6 +57,7 @@ public String toString() {
return "TextQuote{" +
"text='" + text + '\'' +
", entities=" + Arrays.toString(entities) +
+ ", rich_texts=" + Arrays.toString(rich_texts) +
", position=" + position +
", is_manual=" + is_manual +
'}';
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Update.java b/library/src/main/java/com/pengrad/telegrambot/model/Update.java
index 669466e9e..3df7a2b30 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/Update.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/Update.java
@@ -1,5 +1,7 @@
package com.pengrad.telegrambot.model;
+import com.pengrad.telegrambot.model.widget.SharedWidgetQuery;
+import com.pengrad.telegrambot.model.widget.WidgetQuery;
import com.pengrad.telegrambot.model.business.BusinessConnection;
import com.pengrad.telegrambot.model.business.BusinessMessageDeleted;
import com.pengrad.telegrambot.model.chatboost.ChatBoostRemoved;
@@ -44,6 +46,8 @@ public class Update implements Serializable {
private Message guest_message;
private BotSubscriptionUpdated subscription;
private MessageGenerationStopped stopped_message_generation;
+ private WidgetQuery widget_query;
+ private SharedWidgetQuery shared_widget_query;
public Integer updateId() {
return update_id;
@@ -157,6 +161,14 @@ public MessageGenerationStopped stoppedMessageGeneration() {
return stopped_message_generation;
}
+ public WidgetQuery widgetQuery() {
+ return widget_query;
+ }
+
+ public SharedWidgetQuery sharedWidgetQuery() {
+ return shared_widget_query;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -189,7 +201,9 @@ public boolean equals(Object o) {
Objects.equals(managed_bot, update.managed_bot) &&
Objects.equals(guest_message, update.guest_message) &&
Objects.equals(subscription, update.subscription) &&
- Objects.equals(stopped_message_generation, update.stopped_message_generation);
+ Objects.equals(stopped_message_generation, update.stopped_message_generation) &&
+ Objects.equals(widget_query, update.widget_query) &&
+ Objects.equals(shared_widget_query, update.shared_widget_query);
}
@Override
@@ -228,6 +242,8 @@ public String toString() {
", guest_message=" + guest_message +
", subscription=" + subscription +
", stopped_message_generation=" + stopped_message_generation +
+ ", widget_query=" + widget_query +
+ ", shared_widget_query=" + shared_widget_query +
'}';
}
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareTheme.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareTheme.kt
new file mode 100644
index 000000000..aac2ef779
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareTheme.kt
@@ -0,0 +1,13 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+import java.io.Serializable
+
+interface ChatShareTheme : Serializable {
+ val type: String
+
+ companion object {
+ const val EMOJI = "emoji"
+ const val UNIQUE_GIFT = "unique_gift"
+ const val UNKNOWN = "unknown"
+ }
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeBackdrop.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeBackdrop.kt
new file mode 100644
index 000000000..ce2326818
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeBackdrop.kt
@@ -0,0 +1,10 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+import com.pengrad.telegrambot.model.gift.unique.UniqueGiftBackdropColors
+import java.io.Serializable
+
+data class ChatShareThemeBackdrop(
+ @get:JvmName("id") val id: Long,
+ @get:JvmName("name") val name: String,
+ @get:JvmName("colors") val colors: UniqueGiftBackdropColors,
+) : Serializable
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeBackdrops.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeBackdrops.kt
new file mode 100644
index 000000000..352da3ecb
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeBackdrops.kt
@@ -0,0 +1,18 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+import java.io.Serializable
+
+data class ChatShareThemeBackdrops(
+ @get:JvmName("backdrops") val backdrops: Array,
+) : Serializable {
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (other !is ChatShareThemeBackdrops) return false
+ return backdrops contentEquals other.backdrops
+ }
+
+ override fun hashCode(): Int = backdrops.contentHashCode()
+
+ override fun toString(): String = "ChatShareThemeBackdrops(backdrops=${backdrops.contentToString()})"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeEmoji.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeEmoji.kt
new file mode 100644
index 000000000..7d0876aff
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeEmoji.kt
@@ -0,0 +1,26 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+data class ChatShareThemeEmoji @JvmOverloads constructor(
+ @get:JvmName("emojis") val emojis: Array,
+ @get:JvmName("backgroundBackdropId") val backgroundBackdropId: Long? = null,
+ override val type: String = ChatShareTheme.EMOJI
+) : ChatShareTheme {
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (other !is ChatShareThemeEmoji) return false
+ return emojis contentEquals other.emojis &&
+ backgroundBackdropId == other.backgroundBackdropId &&
+ type == other.type
+ }
+
+ override fun hashCode(): Int {
+ var result = emojis.contentHashCode()
+ result = 31 * result + (backgroundBackdropId?.hashCode() ?: 0)
+ result = 31 * result + type.hashCode()
+ return result
+ }
+
+ override fun toString(): String =
+ "ChatShareThemeEmoji(emojis=${emojis.contentToString()}, backgroundBackdropId=$backgroundBackdropId, type=$type)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeUniqueGift.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeUniqueGift.kt
new file mode 100644
index 000000000..a442a246c
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeUniqueGift.kt
@@ -0,0 +1,8 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+import com.pengrad.telegrambot.model.gift.unique.UniqueGift
+
+data class ChatShareThemeUniqueGift @JvmOverloads constructor(
+ @get:JvmName("gift") val gift: UniqueGift,
+ override val type: String = ChatShareTheme.UNIQUE_GIFT
+) : ChatShareTheme
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeUnknown.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeUnknown.kt
new file mode 100644
index 000000000..db91b6850
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/ChatShareThemeUnknown.kt
@@ -0,0 +1,5 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+data class ChatShareThemeUnknown(
+ override val type: String = ChatShareTheme.UNKNOWN
+) : ChatShareTheme
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiType.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiType.kt
new file mode 100644
index 000000000..c0a39a3a2
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiType.kt
@@ -0,0 +1,13 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+import java.io.Serializable
+
+interface EmojiType : Serializable {
+ val type: String
+
+ companion object {
+ const val EMOJI = "emoji"
+ const val CUSTOM_EMOJI = "custom_emoji"
+ const val UNKNOWN = "unknown"
+ }
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiTypeCustomEmoji.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiTypeCustomEmoji.kt
new file mode 100644
index 000000000..c4f36a154
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiTypeCustomEmoji.kt
@@ -0,0 +1,6 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+data class EmojiTypeCustomEmoji @JvmOverloads constructor(
+ @get:JvmName("customEmojiId") val customEmojiId: String,
+ override val type: String = EmojiType.CUSTOM_EMOJI
+) : EmojiType
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiTypeEmoji.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiTypeEmoji.kt
new file mode 100644
index 000000000..57dbccabc
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiTypeEmoji.kt
@@ -0,0 +1,6 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+data class EmojiTypeEmoji @JvmOverloads constructor(
+ @get:JvmName("emoji") val emoji: String,
+ override val type: String = EmojiType.EMOJI
+) : EmojiType
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiTypeUnknown.kt b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiTypeUnknown.kt
new file mode 100644
index 000000000..8c13ab1a9
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/chatsharetheme/EmojiTypeUnknown.kt
@@ -0,0 +1,5 @@
+package com.pengrad.telegrambot.model.chatsharetheme
+
+data class EmojiTypeUnknown(
+ override val type: String = EmojiType.UNKNOWN
+) : EmojiType
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ephemeral/EphemeralMessageParameters.kt b/library/src/main/java/com/pengrad/telegrambot/model/ephemeral/EphemeralMessageParameters.kt
index 8ee59a2aa..97ace8175 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/ephemeral/EphemeralMessageParameters.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ephemeral/EphemeralMessageParameters.kt
@@ -1,7 +1,7 @@
package com.pengrad.telegrambot.model.ephemeral
class EphemeralMessageParameters private constructor(
- @get:JvmName("receiverUserId") val receiverUserId: Long,
+ @get:JvmName("receiverUserId") var receiverUserId: Long?,
@get:JvmName("callbackQueryId") var callbackQueryId: String?,
@get:JvmName("replaceCallbackQueryMessage") var replaceCallbackQueryMessage: Boolean?,
) {
@@ -12,6 +12,23 @@ class EphemeralMessageParameters private constructor(
replaceCallbackQueryMessage = null
)
+ companion object {
+ /**
+ * Ephemeral reply to a callback query, shown only to the user who pressed the button.
+ * The bot must still answer the callback query using answerCallbackQuery.
+ */
+ @JvmStatic
+ fun replyToCallbackQuery(callbackQueryId: String) = EphemeralMessageParameters(
+ receiverUserId = null,
+ callbackQueryId = callbackQueryId,
+ replaceCallbackQueryMessage = null
+ )
+ }
+
+ fun receiverUserId(receiverUserId: Long) = apply {
+ this.receiverUserId = receiverUserId
+ }
+
fun callbackQueryId(callbackQueryId: String) = apply {
this.callbackQueryId = callbackQueryId
}
@@ -30,7 +47,7 @@ class EphemeralMessageParameters private constructor(
}
override fun hashCode(): Int {
- var result = receiverUserId.hashCode()
+ var result = receiverUserId?.hashCode() ?: 0
result = 31 * result + (callbackQueryId?.hashCode() ?: 0)
result = 31 * result + (replaceCallbackQueryMessage?.hashCode() ?: 0)
return result
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/InputSharedWidgetMessageContent.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/InputSharedWidgetMessageContent.kt
new file mode 100644
index 000000000..ef1a27869
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/InputSharedWidgetMessageContent.kt
@@ -0,0 +1,59 @@
+package com.pengrad.telegrambot.model.request
+
+import com.pengrad.telegrambot.model.MessageEntity
+
+class InputSharedWidgetMessageContent private constructor(
+ @get:JvmName("widgetId") val widgetId: String,
+ @get:JvmName("chatData") var chatData: String?,
+ @get:JvmName("caption") var caption: String?,
+ @get:JvmName("parseMode") var parseMode: ParseMode?,
+ @get:JvmName("captionEntities") var captionEntities: Array?,
+ @get:JvmName("showCaptionAboveMedia") var showCaptionAboveMedia: Boolean?,
+) : InputMessageContent() {
+
+ constructor(widgetId: String) : this(
+ widgetId = widgetId,
+ chatData = null,
+ caption = null,
+ parseMode = null,
+ captionEntities = null,
+ showCaptionAboveMedia = null,
+ )
+
+ fun chatData(chatData: String) = apply { this.chatData = chatData }
+
+ fun caption(caption: String) = apply { this.caption = caption }
+
+ fun parseMode(parseMode: ParseMode) = apply { this.parseMode = parseMode }
+
+ fun captionEntities(vararg captionEntities: MessageEntity) = apply { this.captionEntities = arrayOf(*captionEntities) }
+
+ fun showCaptionAboveMedia(showCaptionAboveMedia: Boolean) = apply { this.showCaptionAboveMedia = showCaptionAboveMedia }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputSharedWidgetMessageContent
+ return widgetId == other.widgetId &&
+ chatData == other.chatData &&
+ caption == other.caption &&
+ parseMode == other.parseMode &&
+ captionEntities contentEquals other.captionEntities &&
+ showCaptionAboveMedia == other.showCaptionAboveMedia
+ }
+
+ override fun hashCode(): Int {
+ var result = widgetId.hashCode()
+ result = 31 * result + (chatData?.hashCode() ?: 0)
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ result = 31 * result + (parseMode?.hashCode() ?: 0)
+ result = 31 * result + (captionEntities?.contentHashCode() ?: 0)
+ result = 31 * result + (showCaptionAboveMedia?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputSharedWidgetMessageContent(widgetId=$widgetId, chatData=$chatData, caption=$caption, " +
+ "parseMode=$parseMode, captionEntities=${captionEntities?.contentToString()}, " +
+ "showCaptionAboveMedia=$showCaptionAboveMedia)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/InputWidgetMessageContent.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/InputWidgetMessageContent.kt
new file mode 100644
index 000000000..ae3865d63
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/InputWidgetMessageContent.kt
@@ -0,0 +1,90 @@
+package com.pengrad.telegrambot.model.request
+
+import com.pengrad.telegrambot.model.MessageEntity
+
+class InputWidgetMessageContent private constructor(
+ @get:JvmName("html") val html: String,
+ @get:JvmName("width") var width: Int?,
+ @get:JvmName("height") var height: Int?,
+ @get:JvmName("publicData") var publicData: String?,
+ @get:JvmName("chatData") var chatData: String?,
+ @get:JvmName("caption") var caption: String?,
+ @get:JvmName("parseMode") var parseMode: ParseMode?,
+ @get:JvmName("captionEntities") var captionEntities: Array?,
+ @get:JvmName("showCaptionAboveMedia") var showCaptionAboveMedia: Boolean?,
+ @get:JvmName("allowQueries") var allowQueries: Boolean?,
+ @get:JvmName("isShared") var isShared: Boolean?,
+) : InputMessageContent() {
+
+ constructor(html: String) : this(
+ html = html,
+ width = null,
+ height = null,
+ publicData = null,
+ chatData = null,
+ caption = null,
+ parseMode = null,
+ captionEntities = null,
+ showCaptionAboveMedia = null,
+ allowQueries = null,
+ isShared = null,
+ )
+
+ fun width(width: Int) = apply { this.width = width }
+
+ fun height(height: Int) = apply { this.height = height }
+
+ fun publicData(publicData: String) = apply { this.publicData = publicData }
+
+ fun chatData(chatData: String) = apply { this.chatData = chatData }
+
+ fun caption(caption: String) = apply { this.caption = caption }
+
+ fun parseMode(parseMode: ParseMode) = apply { this.parseMode = parseMode }
+
+ fun captionEntities(vararg captionEntities: MessageEntity) = apply { this.captionEntities = arrayOf(*captionEntities) }
+
+ fun showCaptionAboveMedia(showCaptionAboveMedia: Boolean) = apply { this.showCaptionAboveMedia = showCaptionAboveMedia }
+
+ fun allowQueries(allowQueries: Boolean) = apply { this.allowQueries = allowQueries }
+
+ fun isShared(isShared: Boolean) = apply { this.isShared = isShared }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputWidgetMessageContent
+ return html == other.html &&
+ width == other.width &&
+ height == other.height &&
+ publicData == other.publicData &&
+ chatData == other.chatData &&
+ caption == other.caption &&
+ parseMode == other.parseMode &&
+ captionEntities contentEquals other.captionEntities &&
+ showCaptionAboveMedia == other.showCaptionAboveMedia &&
+ allowQueries == other.allowQueries &&
+ isShared == other.isShared
+ }
+
+ override fun hashCode(): Int {
+ var result = html.hashCode()
+ result = 31 * result + (width ?: 0)
+ result = 31 * result + (height ?: 0)
+ result = 31 * result + (publicData?.hashCode() ?: 0)
+ result = 31 * result + (chatData?.hashCode() ?: 0)
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ result = 31 * result + (parseMode?.hashCode() ?: 0)
+ result = 31 * result + (captionEntities?.contentHashCode() ?: 0)
+ result = 31 * result + (showCaptionAboveMedia?.hashCode() ?: 0)
+ result = 31 * result + (allowQueries?.hashCode() ?: 0)
+ result = 31 * result + (isShared?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputWidgetMessageContent(html=$html, width=$width, height=$height, publicData=$publicData, " +
+ "chatData=$chatData, caption=$caption, parseMode=$parseMode, " +
+ "captionEntities=${captionEntities?.contentToString()}, showCaptionAboveMedia=$showCaptionAboveMedia, " +
+ "allowQueries=$allowQueries, isShared=$isShared)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/ReplyParameters.java b/library/src/main/java/com/pengrad/telegrambot/model/request/ReplyParameters.java
index 4d0dc8739..716de7bfc 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/request/ReplyParameters.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/ReplyParameters.java
@@ -1,5 +1,6 @@
package com.pengrad.telegrambot.model.request;
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText;
import com.pengrad.telegrambot.model.MessageEntity;
import java.io.Serializable;
@@ -15,6 +16,7 @@ public class ReplyParameters implements Serializable {
private String quote;
private String quote_parse_mode;
private MessageEntity[] quote_entities;
+ private RichText[] quote_rich_texts;
private Integer quote_position;
private Integer checklist_task_id;
private String poll_option_id;
@@ -60,6 +62,11 @@ public ReplyParameters quoteEntities(MessageEntity[] quoteEntities) {
return this;
}
+ public ReplyParameters quoteRichTexts(RichText... quoteRichTexts) {
+ this.quote_rich_texts = quoteRichTexts;
+ return this;
+ }
+
public ReplyParameters quotePosition(Integer quotePosition) {
this.quote_position = quotePosition;
return this;
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTonAddress.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTonAddress.kt
new file mode 100644
index 000000000..fdcbfafa6
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTonAddress.kt
@@ -0,0 +1,7 @@
+package com.pengrad.telegrambot.model.richmessages.richtext
+
+data class RichTextTonAddress @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ @get:JvmName("address") val address: String,
+ override val type: String = RichTextType.TON_ADDRESS
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt
index 10084a90a..3d738e418 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt
@@ -18,6 +18,7 @@ object RichTextType {
const val EMAIL_ADDRESS = "email_address"
const val PHONE_NUMBER = "phone_number"
const val BANK_CARD_NUMBER = "bank_card_number"
+ const val TON_ADDRESS = "ton_address"
const val MENTION = "mention"
const val HASHTAG = "hashtag"
const val CASHTAG = "cashtag"
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/story/StoryArea.kt b/library/src/main/java/com/pengrad/telegrambot/model/story/StoryArea.kt
index 04f0228aa..f170a2944 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/story/StoryArea.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/story/StoryArea.kt
@@ -1,10 +1,10 @@
package com.pengrad.telegrambot.model.story
-import com.pengrad.telegrambot.model.story.area.StoryAreaPosition
+import com.pengrad.telegrambot.model.AreaPosition
import com.pengrad.telegrambot.model.story.area.type.StoryAreaType
class StoryArea(
- @get:JvmName("position") val position: StoryAreaPosition,
+ @get:JvmName("position") val position: AreaPosition,
@get:JvmName("type") val type: StoryAreaType
) {
override fun toString(): String {
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ton/TonNft.kt b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonNft.kt
new file mode 100644
index 000000000..b4621f6d0
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonNft.kt
@@ -0,0 +1,42 @@
+package com.pengrad.telegrambot.model.ton
+
+import com.pengrad.telegrambot.model.gift.unique.UniqueGift
+import java.io.Serializable
+
+data class TonNft(
+ @get:JvmName("address") val address: String,
+ @get:JvmName("collectionAddress") val collectionAddress: String? = null,
+ @get:JvmName("index") val index: String,
+ @get:JvmName("name") val name: String,
+ @get:JvmName("description") val description: String,
+ @get:JvmName("attributes") val attributes: Array? = null,
+ @get:JvmName("gift") val gift: UniqueGift? = null,
+) : Serializable {
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (other !is TonNft) return false
+ return address == other.address &&
+ collectionAddress == other.collectionAddress &&
+ index == other.index &&
+ name == other.name &&
+ description == other.description &&
+ attributes contentEquals other.attributes &&
+ gift == other.gift
+ }
+
+ override fun hashCode(): Int {
+ var result = address.hashCode()
+ result = 31 * result + (collectionAddress?.hashCode() ?: 0)
+ result = 31 * result + index.hashCode()
+ result = 31 * result + name.hashCode()
+ result = 31 * result + description.hashCode()
+ result = 31 * result + (attributes?.contentHashCode() ?: 0)
+ result = 31 * result + (gift?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "TonNft(address=$address, collectionAddress=$collectionAddress, index=$index, name=$name, " +
+ "description=$description, attributes=${attributes?.contentToString()}, gift=$gift)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ton/TonNftAttribute.kt b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonNftAttribute.kt
new file mode 100644
index 000000000..5cb1127a2
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonNftAttribute.kt
@@ -0,0 +1,8 @@
+package com.pengrad.telegrambot.model.ton
+
+import java.io.Serializable
+
+data class TonNftAttribute(
+ @get:JvmName("traitType") val traitType: String,
+ @get:JvmName("value") val value: String,
+) : Serializable
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ton/TonWalletCard.kt b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonWalletCard.kt
new file mode 100644
index 000000000..ccc045ccd
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonWalletCard.kt
@@ -0,0 +1,31 @@
+package com.pengrad.telegrambot.model.ton
+
+import java.io.Serializable
+
+data class TonWalletCard(
+ @get:JvmName("address") val address: String,
+ @get:JvmName("amount") val amount: String,
+ @get:JvmName("stickers") val stickers: Array,
+ @get:JvmName("backgroundNftAddress") val backgroundNftAddress: String? = null,
+) : Serializable {
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (other !is TonWalletCard) return false
+ return address == other.address &&
+ amount == other.amount &&
+ stickers contentEquals other.stickers &&
+ backgroundNftAddress == other.backgroundNftAddress
+ }
+
+ override fun hashCode(): Int {
+ var result = address.hashCode()
+ result = 31 * result + amount.hashCode()
+ result = 31 * result + stickers.contentHashCode()
+ result = 31 * result + (backgroundNftAddress?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "TonWalletCard(address=$address, amount=$amount, stickers=${stickers.contentToString()}, backgroundNftAddress=$backgroundNftAddress)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ton/TonWalletCardSticker.kt b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonWalletCardSticker.kt
new file mode 100644
index 000000000..81c191fc7
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonWalletCardSticker.kt
@@ -0,0 +1,9 @@
+package com.pengrad.telegrambot.model.ton
+
+import com.pengrad.telegrambot.model.AreaPosition
+import java.io.Serializable
+
+data class TonWalletCardSticker(
+ @get:JvmName("position") val position: AreaPosition,
+ @get:JvmName("nft") val nft: TonNft,
+) : Serializable
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ton/TonWalletTransfer.kt b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonWalletTransfer.kt
new file mode 100644
index 000000000..5420171d7
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ton/TonWalletTransfer.kt
@@ -0,0 +1,10 @@
+package com.pengrad.telegrambot.model.ton
+
+import java.io.Serializable
+
+data class TonWalletTransfer(
+ @get:JvmName("transactionId") val transactionId: String,
+ @get:JvmName("peerAddress") val peerAddress: String,
+ @get:JvmName("amount") val amount: String,
+ @get:JvmName("comment") val comment: String? = null,
+) : Serializable
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/widget/SharedWidgetQuery.kt b/library/src/main/java/com/pengrad/telegrambot/model/widget/SharedWidgetQuery.kt
new file mode 100644
index 000000000..295406b91
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/widget/SharedWidgetQuery.kt
@@ -0,0 +1,12 @@
+package com.pengrad.telegrambot.model.widget
+
+import com.pengrad.telegrambot.model.User
+import java.io.Serializable
+
+data class SharedWidgetQuery(
+ @get:JvmName("id") val id: String,
+ @get:JvmName("from") val from: User,
+ @get:JvmName("type") val type: WidgetQueryType,
+ @get:JvmName("data") val data: String,
+ @get:JvmName("widgetId") val widgetId: String,
+) : Serializable
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/widget/Widget.kt b/library/src/main/java/com/pengrad/telegrambot/model/widget/Widget.kt
new file mode 100644
index 000000000..fb10015cc
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/widget/Widget.kt
@@ -0,0 +1,12 @@
+package com.pengrad.telegrambot.model.widget
+
+import java.io.Serializable
+
+data class Widget(
+ @get:JvmName("id") val id: String? = null,
+ @get:JvmName("width") val width: Int? = null,
+ @get:JvmName("height") val height: Int? = null,
+ @get:JvmName("html") val html: String,
+ @get:JvmName("publicData") val publicData: String? = null,
+ @get:JvmName("chatData") val chatData: String? = null,
+) : Serializable
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQuery.kt b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQuery.kt
new file mode 100644
index 000000000..87a6dcb18
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQuery.kt
@@ -0,0 +1,18 @@
+package com.pengrad.telegrambot.model.widget
+
+import com.pengrad.telegrambot.model.Chat
+import com.pengrad.telegrambot.model.User
+import java.io.Serializable
+
+data class WidgetQuery(
+ @get:JvmName("id") val id: String,
+ @get:JvmName("from") val from: User,
+ @get:JvmName("chat") val chat: Chat? = null,
+ @get:JvmName("messageId") val messageId: Int? = null,
+ @get:JvmName("inlineMessageId") val inlineMessageId: String? = null,
+ @get:JvmName("chatInstance") val chatInstance: String,
+ @get:JvmName("chatType") val chatType: String? = null,
+ @get:JvmName("type") val type: WidgetQueryType,
+ @get:JvmName("data") val data: String,
+ @get:JvmName("widgetId") val widgetId: String? = null,
+) : Serializable
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryType.kt b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryType.kt
new file mode 100644
index 000000000..5504db4a8
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryType.kt
@@ -0,0 +1,14 @@
+package com.pengrad.telegrambot.model.widget
+
+import java.io.Serializable
+
+interface WidgetQueryType : Serializable {
+ val type: String
+
+ companion object {
+ const val DATA = "data"
+ const val SIGN_DATA = "sign_data"
+ const val SENT_TRANSACTION = "sent_transaction"
+ const val UNKNOWN = "unknown"
+ }
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeData.kt b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeData.kt
new file mode 100644
index 000000000..b99e657f2
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeData.kt
@@ -0,0 +1,8 @@
+package com.pengrad.telegrambot.model.widget
+
+import com.pengrad.telegrambot.model.ton.TonWalletCard
+
+data class WidgetQueryTypeData @JvmOverloads constructor(
+ @get:JvmName("walletCard") val walletCard: TonWalletCard? = null,
+ override val type: String = WidgetQueryType.DATA
+) : WidgetQueryType
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeSentTransaction.kt b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeSentTransaction.kt
new file mode 100644
index 000000000..0fc21d49c
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeSentTransaction.kt
@@ -0,0 +1,7 @@
+package com.pengrad.telegrambot.model.widget
+
+data class WidgetQueryTypeSentTransaction @JvmOverloads constructor(
+ @get:JvmName("wallet") val wallet: WidgetQueryWallet,
+ @get:JvmName("msgHash") val msgHash: String,
+ override val type: String = WidgetQueryType.SENT_TRANSACTION
+) : WidgetQueryType
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeSignData.kt b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeSignData.kt
new file mode 100644
index 000000000..7b2366ae0
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeSignData.kt
@@ -0,0 +1,7 @@
+package com.pengrad.telegrambot.model.widget
+
+data class WidgetQueryTypeSignData @JvmOverloads constructor(
+ @get:JvmName("wallet") val wallet: WidgetQueryWallet,
+ @get:JvmName("signData") val signData: String,
+ override val type: String = WidgetQueryType.SIGN_DATA
+) : WidgetQueryType
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeUnknown.kt b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeUnknown.kt
new file mode 100644
index 000000000..48a7c690e
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryTypeUnknown.kt
@@ -0,0 +1,5 @@
+package com.pengrad.telegrambot.model.widget
+
+data class WidgetQueryTypeUnknown(
+ override val type: String = WidgetQueryType.UNKNOWN
+) : WidgetQueryType
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryWallet.kt b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryWallet.kt
new file mode 100644
index 000000000..a98083119
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/widget/WidgetQueryWallet.kt
@@ -0,0 +1,10 @@
+package com.pengrad.telegrambot.model.widget
+
+import java.io.Serializable
+
+data class WidgetQueryWallet(
+ @get:JvmName("address") val address: String,
+ @get:JvmName("amount") val amount: String,
+ @get:JvmName("publicKey") val publicKey: String? = null,
+ @get:JvmName("stateInit") val stateInit: String? = null,
+) : Serializable
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/DeleteBusinessAccountGift.kt b/library/src/main/java/com/pengrad/telegrambot/request/DeleteBusinessAccountGift.kt
new file mode 100644
index 000000000..58b654e1d
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/DeleteBusinessAccountGift.kt
@@ -0,0 +1,18 @@
+package com.pengrad.telegrambot.request
+
+import com.pengrad.telegrambot.response.BaseResponse
+import com.pengrad.telegrambot.utility.kotlin.requestParameter
+
+/**
+ * Deletes a regular gift owned by a managed business account without receiving Telegram Stars for it.
+ * Requires the can_convert_gifts_to_stars business bot right.
+ */
+class DeleteBusinessAccountGift(
+ businessConnectionId: String,
+ ownedGiftId: String
+) : KBaseRequest(BaseResponse::class) {
+
+ val businessConnectionId: String by requestParameter(businessConnectionId)
+ val ownedGiftId: String by requestParameter(ownedGiftId)
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/GetChatShareThemeBackdrops.kt b/library/src/main/java/com/pengrad/telegrambot/request/GetChatShareThemeBackdrops.kt
new file mode 100644
index 000000000..4a0ca5a44
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/GetChatShareThemeBackdrops.kt
@@ -0,0 +1,7 @@
+package com.pengrad.telegrambot.request
+
+import com.pengrad.telegrambot.response.GetChatShareThemeBackdropsResponse
+
+class GetChatShareThemeBackdrops : KBaseRequest(
+ GetChatShareThemeBackdropsResponse::class
+)
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/GetUniqueGift.kt b/library/src/main/java/com/pengrad/telegrambot/request/GetUniqueGift.kt
new file mode 100644
index 000000000..878ce0fac
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/GetUniqueGift.kt
@@ -0,0 +1,12 @@
+package com.pengrad.telegrambot.request
+
+import com.pengrad.telegrambot.response.GetUniqueGiftResponse
+import com.pengrad.telegrambot.utility.kotlin.requestParameter
+
+class GetUniqueGift(
+ name: String
+) : KBaseRequest(GetUniqueGiftResponse::class) {
+
+ val name: String by requestParameter(name)
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt
index b2015867f..414241922 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt
@@ -34,6 +34,12 @@ class SendAnimation private constructor(
animationUrl = animationUrl
)
+ constructor(animationUrl: String) : this(
+ chatId = null,
+ channelUsername = null,
+ animationUrl = animationUrl
+ )
+
constructor(channelUsername: String, animationUrl: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -47,6 +53,12 @@ class SendAnimation private constructor(
animationFile = animationFile
)
+ constructor(animationFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ animationFile = animationFile
+ )
+
constructor(channelUsername: String, animationFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -60,6 +72,12 @@ class SendAnimation private constructor(
animationBytes = animationBytes
)
+ constructor(animationBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ animationBytes = animationBytes
+ )
+
constructor(channelUsername: String, animationBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt
index 30f44bbdf..9898a7553 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt
@@ -33,6 +33,12 @@ class SendAudio private constructor(
audioUrl = audioUrl
)
+ constructor(audioUrl: String) : this(
+ chatId = null,
+ channelUsername = null,
+ audioUrl = audioUrl
+ )
+
constructor(channelUsername: String, audioUrl: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -46,6 +52,12 @@ class SendAudio private constructor(
audioFile = audioFile
)
+ constructor(audioFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ audioFile = audioFile
+ )
+
constructor(channelUsername: String, audioFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -59,6 +71,12 @@ class SendAudio private constructor(
audioBytes = audioBytes
)
+ constructor(audioBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ audioBytes = audioBytes
+ )
+
constructor(channelUsername: String, audioBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt
index aaa1ae88e..7efdbd2cc 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt
@@ -23,6 +23,13 @@ class SendContact private constructor(
firstName = firstName
)
+ constructor(phoneNumber: String, firstName: String) : this(
+ chatId = null,
+ channelUsername = null,
+ phoneNumber = phoneNumber,
+ firstName = firstName
+ )
+
constructor(channelUsername: String, phoneNumber: String, firstName: String) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt
index f755f0e42..97d092cca 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt
@@ -34,6 +34,12 @@ class SendDocument private constructor(
documentUrl = documentUrl
)
+ constructor(documentUrl: String) : this(
+ chatId = null,
+ channelUsername = null,
+ documentUrl = documentUrl
+ )
+
constructor(channelUsername: String, documentUrl: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -47,6 +53,12 @@ class SendDocument private constructor(
documentFile = documentFile
)
+ constructor(documentFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ documentFile = documentFile
+ )
+
constructor(channelUsername: String, documentFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -60,6 +72,12 @@ class SendDocument private constructor(
documentBytes = documentBytes
)
+ constructor(documentBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ documentBytes = documentBytes
+ )
+
constructor(channelUsername: String, documentBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendLivePhoto.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendLivePhoto.kt
index db0632a96..1404cd0b2 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendLivePhoto.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendLivePhoto.kt
@@ -38,6 +38,13 @@ class SendLivePhoto private constructor(
photoId = photoId,
)
+ constructor(livePhotoId: String, photoId: String) : this(
+ chatId = null,
+ channelUsername = null,
+ livePhotoId = livePhotoId,
+ photoId = photoId,
+ )
+
constructor(channelUsername: String, livePhotoId: String, photoId: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -52,6 +59,13 @@ class SendLivePhoto private constructor(
photoFile = photoFile,
)
+ constructor(livePhotoId: String, photoFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ livePhotoId = livePhotoId,
+ photoFile = photoFile,
+ )
+
constructor(channelUsername: String, livePhotoId: String, photoFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -66,6 +80,13 @@ class SendLivePhoto private constructor(
photoBytes = photoBytes,
)
+ constructor(livePhotoId: String, photoBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ livePhotoId = livePhotoId,
+ photoBytes = photoBytes,
+ )
+
constructor(channelUsername: String, livePhotoId: String, photoBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
@@ -80,6 +101,13 @@ class SendLivePhoto private constructor(
photoId = photoId,
)
+ constructor(livePhotoFile: File, photoId: String) : this(
+ chatId = null,
+ channelUsername = null,
+ livePhotoFile = livePhotoFile,
+ photoId = photoId,
+ )
+
constructor(channelUsername: String, livePhotoFile: File, photoId: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -94,6 +122,13 @@ class SendLivePhoto private constructor(
photoFile = photoFile,
)
+ constructor(livePhotoFile: File, photoFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ livePhotoFile = livePhotoFile,
+ photoFile = photoFile,
+ )
+
constructor(channelUsername: String, livePhotoFile: File, photoFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -108,6 +143,13 @@ class SendLivePhoto private constructor(
photoBytes = photoBytes,
)
+ constructor(livePhotoFile: File, photoBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ livePhotoFile = livePhotoFile,
+ photoBytes = photoBytes,
+ )
+
constructor(channelUsername: String, livePhotoFile: File, photoBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
@@ -122,6 +164,13 @@ class SendLivePhoto private constructor(
photoId = photoId,
)
+ constructor(livePhotoBytes: ByteArray, photoId: String) : this(
+ chatId = null,
+ channelUsername = null,
+ livePhotoBytes = livePhotoBytes,
+ photoId = photoId,
+ )
+
constructor(channelUsername: String, livePhotoBytes: ByteArray, photoId: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -136,6 +185,13 @@ class SendLivePhoto private constructor(
photoFile = photoFile,
)
+ constructor(livePhotoBytes: ByteArray, photoFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ livePhotoBytes = livePhotoBytes,
+ photoFile = photoFile,
+ )
+
constructor(channelUsername: String, livePhotoBytes: ByteArray, photoFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -150,6 +206,13 @@ class SendLivePhoto private constructor(
photoBytes = photoBytes,
)
+ constructor(livePhotoBytes: ByteArray, photoBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ livePhotoBytes = livePhotoBytes,
+ photoBytes = photoBytes,
+ )
+
constructor(channelUsername: String, livePhotoBytes: ByteArray, photoBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt
index be7ed73b6..095f53f18 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt
@@ -23,6 +23,13 @@ class SendLocation private constructor(
longitude = longitude
)
+ constructor(latitude: Float, longitude: Float) : this(
+ chatId = null,
+ channelUsername = null,
+ latitude = latitude,
+ longitude = longitude
+ )
+
constructor(channelUsername: String, latitude: Float, longitude: Float) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt
index aca955d4d..a8fd68171 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt
@@ -24,6 +24,12 @@ class SendMessage private constructor(
text = text
)
+ constructor(text: String) : this(
+ chatId = null,
+ channelUsername = null,
+ text = text
+ )
+
constructor(channelUsername: String, text: String) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt
index 031fd37d4..904b045f8 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt
@@ -33,6 +33,12 @@ class SendPhoto private constructor(
photoUrl = photoUrl
)
+ constructor(photoUrl: String) : this(
+ chatId = null,
+ channelUsername = null,
+ photoUrl = photoUrl
+ )
+
constructor(channelUsername: String, photoUrl: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -46,6 +52,12 @@ class SendPhoto private constructor(
photoFile = photoFile
)
+ constructor(photoFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ photoFile = photoFile
+ )
+
constructor(channelUsername: String, photoFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -59,6 +71,12 @@ class SendPhoto private constructor(
photoBytes = photoBytes
)
+ constructor(photoBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ photoBytes = photoBytes
+ )
+
constructor(channelUsername: String, photoBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt
index a2a266ab0..8e4cc9ea8 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt
@@ -31,6 +31,12 @@ class SendSticker private constructor(
stickerUrl = stickerUrl
)
+ constructor(stickerUrl: String) : this(
+ chatId = null,
+ channelUsername = null,
+ stickerUrl = stickerUrl
+ )
+
constructor(channelUsername: String, stickerUrl: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -44,6 +50,12 @@ class SendSticker private constructor(
stickerFile = stickerFile
)
+ constructor(stickerFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ stickerFile = stickerFile
+ )
+
constructor(channelUsername: String, stickerFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -57,6 +69,12 @@ class SendSticker private constructor(
stickerBytes = stickerBytes
)
+ constructor(stickerBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ stickerBytes = stickerBytes
+ )
+
constructor(channelUsername: String, stickerBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt
index c69aaac36..eb87ae0f3 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt
@@ -33,6 +33,20 @@ class SendVenue private constructor(
address = address
)
+ constructor(
+ latitude: Float,
+ longitude: Float,
+ title: String,
+ address: String
+ ) : this(
+ chatId = null,
+ channelUsername = null,
+ latitude = latitude,
+ longitude = longitude,
+ title = title,
+ address = address
+ )
+
constructor(
channelUsername: String,
latitude: Float,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt
index 05470774b..67e795361 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt
@@ -33,6 +33,12 @@ class SendVideo private constructor(
videoUrl = videoUrl
)
+ constructor(videoUrl: String) : this(
+ chatId = null,
+ channelUsername = null,
+ videoUrl = videoUrl
+ )
+
constructor(channelUsername: String, videoUrl: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -46,6 +52,12 @@ class SendVideo private constructor(
videoFile = videoFile
)
+ constructor(videoFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ videoFile = videoFile
+ )
+
constructor(channelUsername: String, videoFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -59,6 +71,12 @@ class SendVideo private constructor(
videoBytes = videoBytes
)
+ constructor(videoBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ videoBytes = videoBytes
+ )
+
constructor(channelUsername: String, videoBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt
index 4957fd739..5ff7c63e8 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt
@@ -31,6 +31,12 @@ class SendVideoNote private constructor(
videoNoteUrl = videoNoteUrl
)
+ constructor(videoNoteUrl: String) : this(
+ chatId = null,
+ channelUsername = null,
+ videoNoteUrl = videoNoteUrl
+ )
+
constructor(channelUsername: String, videoNoteUrl: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -44,6 +50,12 @@ class SendVideoNote private constructor(
videoNoteFile = videoNoteFile
)
+ constructor(videoNoteFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ videoNoteFile = videoNoteFile
+ )
+
constructor(channelUsername: String, videoNoteFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -57,6 +69,12 @@ class SendVideoNote private constructor(
videoNoteBytes = videoNoteBytes
)
+ constructor(videoNoteBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ videoNoteBytes = videoNoteBytes
+ )
+
constructor(channelUsername: String, videoNoteBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt
index a504d604e..c257a3dc4 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt
@@ -33,6 +33,12 @@ class SendVoice private constructor(
voiceUrl = voiceUrl
)
+ constructor(voiceUrl: String) : this(
+ chatId = null,
+ channelUsername = null,
+ voiceUrl = voiceUrl
+ )
+
constructor(channelUsername: String, voiceUrl: String) : this(
chatId = null,
channelUsername = channelUsername,
@@ -46,6 +52,12 @@ class SendVoice private constructor(
voiceFile = voiceFile
)
+ constructor(voiceFile: File) : this(
+ chatId = null,
+ channelUsername = null,
+ voiceFile = voiceFile
+ )
+
constructor(channelUsername: String, voiceFile: File) : this(
chatId = null,
channelUsername = channelUsername,
@@ -59,6 +71,12 @@ class SendVoice private constructor(
voiceBytes = voiceBytes
)
+ constructor(voiceBytes: ByteArray) : this(
+ chatId = null,
+ channelUsername = null,
+ voiceBytes = voiceBytes
+ )
+
constructor(channelUsername: String, voiceBytes: ByteArray) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/VerifyChat.kt b/library/src/main/java/com/pengrad/telegrambot/request/VerifyChat.kt
index 2ecedead2..ba6b27bdf 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/VerifyChat.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/VerifyChat.kt
@@ -1,5 +1,7 @@
package com.pengrad.telegrambot.request
+import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.response.BaseResponse
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
import com.pengrad.telegrambot.utility.kotlin.requestParameter
@@ -23,7 +25,15 @@ class VerifyChat private constructor(
val channelUsername: String? by optionalRequestParameter(channelUsername, customParameterName = "chat_id")
var customDescription: String? by optionalRequestParameter()
+ var customDescriptionParseMode: ParseMode? by optionalRequestParameter()
+ var customDescriptionEntities: List? by optionalRequestParameter()
fun customDescription(customDescription: String) = applySelf { this.customDescription = customDescription }
+ fun customDescriptionParseMode(customDescriptionParseMode: ParseMode) = applySelf { this.customDescriptionParseMode = customDescriptionParseMode }
+
+ fun customDescriptionEntities(customDescriptionEntities: List) = applySelf { this.customDescriptionEntities = customDescriptionEntities }
+
+ fun customDescriptionEntities(vararg customDescriptionEntities: MessageEntity) = customDescriptionEntities(customDescriptionEntities.toList())
+
}
\ No newline at end of file
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/VerifyUser.kt b/library/src/main/java/com/pengrad/telegrambot/request/VerifyUser.kt
index 11ca62179..84a0d7908 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/VerifyUser.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/VerifyUser.kt
@@ -1,5 +1,7 @@
package com.pengrad.telegrambot.request
+import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.response.BaseResponse
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
import com.pengrad.telegrambot.utility.kotlin.requestParameter
@@ -10,7 +12,15 @@ class VerifyUser(
val userId: Long by requestParameter(userId)
var customDescription: String? by optionalRequestParameter()
+ var customDescriptionParseMode: ParseMode? by optionalRequestParameter()
+ var customDescriptionEntities: List? by optionalRequestParameter()
fun customDescription(customDescription: String) = applySelf { this.customDescription = customDescription }
+ fun customDescriptionParseMode(customDescriptionParseMode: ParseMode) = applySelf { this.customDescriptionParseMode = customDescriptionParseMode }
+
+ fun customDescriptionEntities(customDescriptionEntities: List) = applySelf { this.customDescriptionEntities = customDescriptionEntities }
+
+ fun customDescriptionEntities(vararg customDescriptionEntities: MessageEntity) = customDescriptionEntities(customDescriptionEntities.toList())
+
}
\ No newline at end of file
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt
index 845b5a1b3..c96d0b00d 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt
@@ -23,6 +23,12 @@ class SendRichMessage private constructor(
richMessage = richMessage
)
+ constructor(richMessage: InputRichMessage) : this(
+ chatId = null,
+ channelUsername = null,
+ richMessage = richMessage
+ )
+
constructor(channelUsername: String, richMessage: InputRichMessage) : this(
chatId = null,
channelUsername = channelUsername,
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/widget/AnswerWidgetQuery.kt b/library/src/main/java/com/pengrad/telegrambot/request/widget/AnswerWidgetQuery.kt
new file mode 100644
index 000000000..14e4e88ec
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/widget/AnswerWidgetQuery.kt
@@ -0,0 +1,21 @@
+package com.pengrad.telegrambot.request.widget
+
+import com.pengrad.telegrambot.request.KBaseRequest
+import com.pengrad.telegrambot.response.BaseResponse
+import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
+import com.pengrad.telegrambot.utility.kotlin.requestParameter
+
+/**
+ * Answers a query from a widget. The query must be answered within 15 seconds.
+ */
+class AnswerWidgetQuery(
+ widgetQueryId: String
+) : KBaseRequest(BaseResponse::class) {
+
+ val widgetQueryId: String by requestParameter(widgetQueryId)
+
+ var data: String? by optionalRequestParameter()
+
+ fun data(data: String) = applySelf { this.data = data }
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/widget/EditMessageWidgetData.kt b/library/src/main/java/com/pengrad/telegrambot/request/widget/EditMessageWidgetData.kt
new file mode 100644
index 000000000..bcbbdfa02
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/widget/EditMessageWidgetData.kt
@@ -0,0 +1,50 @@
+package com.pengrad.telegrambot.request.widget
+
+import com.pengrad.telegrambot.request.KBaseRequest
+import com.pengrad.telegrambot.response.BaseResponse
+import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
+
+/**
+ * Edits data of a widget in a message sent by the bot or via the bot (for inline bots).
+ */
+class EditMessageWidgetData private constructor(
+ chatId: Long?,
+ channelUsername: String?,
+ messageId: Int?,
+ inlineMessageId: String?
+) : KBaseRequest(BaseResponse::class) {
+
+ constructor(chatId: Long, messageId: Int) : this(
+ chatId = chatId,
+ channelUsername = null,
+ messageId = messageId,
+ inlineMessageId = null
+ )
+
+ constructor(channelUsername: String, messageId: Int) : this(
+ chatId = null,
+ channelUsername = channelUsername,
+ messageId = messageId,
+ inlineMessageId = null
+ )
+
+ constructor(inlineMessageId: String) : this(
+ chatId = null,
+ channelUsername = null,
+ messageId = null,
+ inlineMessageId = inlineMessageId
+ )
+
+ val chatId: Long? by optionalRequestParameter(chatId, customParameterName = "chat_id")
+ val channelUsername: String? by optionalRequestParameter(channelUsername, customParameterName = "chat_id")
+ val messageId: Int? by optionalRequestParameter(messageId)
+ val inlineMessageId: String? by optionalRequestParameter(inlineMessageId)
+
+ var publicData: String? by optionalRequestParameter()
+ var chatData: String? by optionalRequestParameter()
+
+ fun publicData(publicData: String) = applySelf { this.publicData = publicData }
+
+ fun chatData(chatData: String) = applySelf { this.chatData = chatData }
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/widget/EditSharedWidgetData.kt b/library/src/main/java/com/pengrad/telegrambot/request/widget/EditSharedWidgetData.kt
new file mode 100644
index 000000000..ce83fe54b
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/widget/EditSharedWidgetData.kt
@@ -0,0 +1,23 @@
+package com.pengrad.telegrambot.request.widget
+
+import com.pengrad.telegrambot.request.KBaseRequest
+import com.pengrad.telegrambot.response.BaseResponse
+import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
+import com.pengrad.telegrambot.utility.kotlin.requestParameter
+
+/**
+ * Edits public data of a shared widget created by the bot. Pass an empty string to remove the public data.
+ */
+class EditSharedWidgetData(
+ widgetId: String,
+ publicData: String
+) : KBaseRequest(BaseResponse::class) {
+
+ val widgetId: String by requestParameter(widgetId)
+ val publicData: String by requestParameter(publicData)
+
+ var cacheTime: Int? by optionalRequestParameter()
+
+ fun cacheTime(cacheTime: Int) = applySelf { this.cacheTime = cacheTime }
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/widget/SendSharedWidget.kt b/library/src/main/java/com/pengrad/telegrambot/request/widget/SendSharedWidget.kt
new file mode 100644
index 000000000..5fcaca505
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/widget/SendSharedWidget.kt
@@ -0,0 +1,53 @@
+package com.pengrad.telegrambot.request.widget
+
+import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.request.ParseMode
+import com.pengrad.telegrambot.request.AbstractSendRequest
+import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
+import com.pengrad.telegrambot.utility.kotlin.requestParameter
+
+/**
+ * Sends again a shared widget created by the bot.
+ */
+class SendSharedWidget private constructor(
+ chatId: Long? = null,
+ channelUsername: String? = null,
+
+ widgetId: String
+) : AbstractSendRequest(
+ chatId = chatId,
+ channelUsername = channelUsername,
+) {
+
+ constructor(chatId: Long, widgetId: String) : this(
+ chatId = chatId,
+ channelUsername = null,
+ widgetId = widgetId
+ )
+
+ constructor(channelUsername: String, widgetId: String) : this(
+ chatId = null,
+ channelUsername = channelUsername,
+ widgetId = widgetId
+ )
+
+ val widgetId: String by requestParameter(widgetId)
+
+ var chatData: String? by optionalRequestParameter()
+ var caption: String? by optionalRequestParameter()
+ var parseMode: ParseMode? by optionalRequestParameter()
+ var captionEntities: List? by optionalRequestParameter()
+ var showCaptionAboveMedia: Boolean? by optionalRequestParameter()
+
+ fun chatData(chatData: String) = applySelf { this.chatData = chatData }
+
+ fun caption(caption: String) = applySelf { this.caption = caption }
+
+ fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode }
+
+ fun captionEntities(captionEntities: List) = applySelf { this.captionEntities = captionEntities }
+
+ fun captionEntities(vararg captionEntities: MessageEntity) = captionEntities(captionEntities.toList())
+
+ fun showCaptionAboveMedia(showCaptionAboveMedia: Boolean) = applySelf { this.showCaptionAboveMedia = showCaptionAboveMedia }
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/widget/SendWidget.kt b/library/src/main/java/com/pengrad/telegrambot/request/widget/SendWidget.kt
new file mode 100644
index 000000000..a2582b511
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/widget/SendWidget.kt
@@ -0,0 +1,69 @@
+package com.pengrad.telegrambot.request.widget
+
+import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.request.ParseMode
+import com.pengrad.telegrambot.request.AbstractSendRequest
+import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
+import com.pengrad.telegrambot.utility.kotlin.requestParameter
+
+/**
+ * Sends a message with an HTML widget. HTML must be 1-32768 bytes and must not exceed 4096 bytes
+ * when compressed by zlib with the maximum compression level.
+ */
+class SendWidget private constructor(
+ chatId: Long? = null,
+ channelUsername: String? = null,
+
+ html: String
+) : AbstractSendRequest(
+ chatId = chatId,
+ channelUsername = channelUsername,
+) {
+
+ constructor(chatId: Long, html: String) : this(
+ chatId = chatId,
+ channelUsername = null,
+ html = html
+ )
+
+ constructor(channelUsername: String, html: String) : this(
+ chatId = null,
+ channelUsername = channelUsername,
+ html = html
+ )
+
+ val html: String by requestParameter(html)
+
+ var width: Int? by optionalRequestParameter()
+ var height: Int? by optionalRequestParameter()
+ var publicData: String? by optionalRequestParameter()
+ var chatData: String? by optionalRequestParameter()
+ var caption: String? by optionalRequestParameter()
+ var parseMode: ParseMode? by optionalRequestParameter()
+ var captionEntities: List? by optionalRequestParameter()
+ var showCaptionAboveMedia: Boolean? by optionalRequestParameter()
+ var allowQueries: Boolean? by optionalRequestParameter()
+ var isShared: Boolean? by optionalRequestParameter()
+
+ fun width(width: Int) = applySelf { this.width = width }
+
+ fun height(height: Int) = applySelf { this.height = height }
+
+ fun publicData(publicData: String) = applySelf { this.publicData = publicData }
+
+ fun chatData(chatData: String) = applySelf { this.chatData = chatData }
+
+ fun caption(caption: String) = applySelf { this.caption = caption }
+
+ fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode }
+
+ fun captionEntities(captionEntities: List) = applySelf { this.captionEntities = captionEntities }
+
+ fun captionEntities(vararg captionEntities: MessageEntity) = captionEntities(captionEntities.toList())
+
+ fun showCaptionAboveMedia(showCaptionAboveMedia: Boolean) = applySelf { this.showCaptionAboveMedia = showCaptionAboveMedia }
+
+ fun allowQueries(allowQueries: Boolean) = applySelf { this.allowQueries = allowQueries }
+
+ fun isShared(isShared: Boolean) = applySelf { this.isShared = isShared }
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/response/GetChatShareThemeBackdropsResponse.kt b/library/src/main/java/com/pengrad/telegrambot/response/GetChatShareThemeBackdropsResponse.kt
new file mode 100644
index 000000000..ab20619fa
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/response/GetChatShareThemeBackdropsResponse.kt
@@ -0,0 +1,5 @@
+package com.pengrad.telegrambot.response
+
+import com.pengrad.telegrambot.model.chatsharetheme.ChatShareThemeBackdrops
+
+data class GetChatShareThemeBackdropsResponse(val result: ChatShareThemeBackdrops) : BaseResponse()
diff --git a/library/src/main/java/com/pengrad/telegrambot/response/GetUniqueGiftResponse.kt b/library/src/main/java/com/pengrad/telegrambot/response/GetUniqueGiftResponse.kt
new file mode 100644
index 000000000..0cdae2d02
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/response/GetUniqueGiftResponse.kt
@@ -0,0 +1,5 @@
+package com.pengrad.telegrambot.response
+
+import com.pengrad.telegrambot.model.gift.unique.UniqueGift
+
+data class GetUniqueGiftResponse(val result: UniqueGift) : BaseResponse()
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java b/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java
index 640786b4e..4b17833e8 100644
--- a/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java
@@ -1,5 +1,11 @@
package com.pengrad.telegrambot.utility;
+import com.pengrad.telegrambot.model.chatsharetheme.ChatShareTheme;
+import com.pengrad.telegrambot.model.chatsharetheme.EmojiType;
+import com.pengrad.telegrambot.model.widget.WidgetQueryType;
+import com.pengrad.telegrambot.model.chatsharetheme.ChatShareTheme;
+import com.pengrad.telegrambot.model.chatsharetheme.EmojiType;
+import com.pengrad.telegrambot.model.widget.WidgetQueryType;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -44,6 +50,9 @@ private BotUtils() {}
.registerTypeAdapter(OwnedGift.class, new OwnedGiftTypeAdapter())
.registerTypeAdapter(RichText.class, RichTextTypeAdapter.INSTANCE)
.registerTypeAdapter(RichBlock.class, RichBlockTypeAdapter.INSTANCE)
+ .registerTypeAdapter(WidgetQueryType.class, WidgetQueryTypeAdapter.INSTANCE)
+ .registerTypeAdapter(ChatShareTheme.class, ChatShareThemeTypeAdapter.INSTANCE)
+ .registerTypeAdapter(EmojiType.class, EmojiTypeAdapter.INSTANCE)
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/gson/ChatShareThemeTypeAdapter.kt b/library/src/main/java/com/pengrad/telegrambot/utility/gson/ChatShareThemeTypeAdapter.kt
new file mode 100644
index 000000000..b0f69c069
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/gson/ChatShareThemeTypeAdapter.kt
@@ -0,0 +1,24 @@
+package com.pengrad.telegrambot.utility.gson
+
+import com.google.gson.JsonDeserializationContext
+import com.google.gson.JsonDeserializer
+import com.google.gson.JsonElement
+import com.google.gson.JsonParseException
+import com.pengrad.telegrambot.model.chatsharetheme.ChatShareTheme
+import com.pengrad.telegrambot.model.chatsharetheme.ChatShareThemeEmoji
+import com.pengrad.telegrambot.model.chatsharetheme.ChatShareThemeUniqueGift
+import com.pengrad.telegrambot.model.chatsharetheme.ChatShareThemeUnknown
+import java.lang.reflect.Type
+
+object ChatShareThemeTypeAdapter : JsonDeserializer {
+
+ @Throws(JsonParseException::class)
+ override fun deserialize(element: JsonElement, type: Type, context: JsonDeserializationContext): ChatShareTheme {
+ val obj = element.asJsonObject
+ return when (obj.getAsJsonPrimitive("type")?.asString) {
+ ChatShareTheme.EMOJI -> context.deserialize(obj, ChatShareThemeEmoji::class.java)
+ ChatShareTheme.UNIQUE_GIFT -> context.deserialize(obj, ChatShareThemeUniqueGift::class.java)
+ else -> ChatShareThemeUnknown()
+ }
+ }
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/gson/EmojiTypeAdapter.kt b/library/src/main/java/com/pengrad/telegrambot/utility/gson/EmojiTypeAdapter.kt
new file mode 100644
index 000000000..196dea00c
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/gson/EmojiTypeAdapter.kt
@@ -0,0 +1,24 @@
+package com.pengrad.telegrambot.utility.gson
+
+import com.google.gson.JsonDeserializationContext
+import com.google.gson.JsonDeserializer
+import com.google.gson.JsonElement
+import com.google.gson.JsonParseException
+import com.pengrad.telegrambot.model.chatsharetheme.EmojiType
+import com.pengrad.telegrambot.model.chatsharetheme.EmojiTypeCustomEmoji
+import com.pengrad.telegrambot.model.chatsharetheme.EmojiTypeEmoji
+import com.pengrad.telegrambot.model.chatsharetheme.EmojiTypeUnknown
+import java.lang.reflect.Type
+
+object EmojiTypeAdapter : JsonDeserializer {
+
+ @Throws(JsonParseException::class)
+ override fun deserialize(element: JsonElement, type: Type, context: JsonDeserializationContext): EmojiType {
+ val obj = element.asJsonObject
+ return when (obj.getAsJsonPrimitive("type")?.asString) {
+ EmojiType.EMOJI -> context.deserialize(obj, EmojiTypeEmoji::class.java)
+ EmojiType.CUSTOM_EMOJI -> context.deserialize(obj, EmojiTypeCustomEmoji::class.java)
+ else -> EmojiTypeUnknown()
+ }
+ }
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt
index 040ac8139..96352dd6d 100644
--- a/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt
@@ -31,6 +31,7 @@ object RichTextTypeAdapter : JsonDeserializer, JsonSerializer {
+
+ @Throws(JsonParseException::class)
+ override fun deserialize(element: JsonElement, type: Type, context: JsonDeserializationContext): WidgetQueryType {
+ val obj = element.asJsonObject
+ return when (obj.getAsJsonPrimitive("type")?.asString) {
+ WidgetQueryType.DATA -> context.deserialize(obj, WidgetQueryTypeData::class.java)
+ WidgetQueryType.SIGN_DATA -> context.deserialize(obj, WidgetQueryTypeSignData::class.java)
+ WidgetQueryType.SENT_TRANSACTION -> context.deserialize(obj, WidgetQueryTypeSentTransaction::class.java)
+ else -> WidgetQueryTypeUnknown()
+ }
+ }
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/AnswerWidgetQueryExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/AnswerWidgetQueryExtension.kt
new file mode 100644
index 000000000..444e39be8
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/AnswerWidgetQueryExtension.kt
@@ -0,0 +1,10 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.request.widget.AnswerWidgetQuery
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.answerWidgetQuery(
+ widgetQueryId: String,
+ modifier: AnswerWidgetQuery.() -> Unit = {}
+) = this.execute(AnswerWidgetQuery(widgetQueryId), modifier)
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditMessageWidgetDataExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditMessageWidgetDataExtension.kt
new file mode 100644
index 000000000..eb11783ee
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditMessageWidgetDataExtension.kt
@@ -0,0 +1,22 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.request.widget.EditMessageWidgetData
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.editMessageWidgetData(
+ chatId: Long,
+ messageId: Int,
+ modifier: EditMessageWidgetData.() -> Unit = {}
+) = this.execute(EditMessageWidgetData(chatId, messageId), modifier)
+
+inline fun TelegramAware.editMessageWidgetData(
+ channelUsername: String,
+ messageId: Int,
+ modifier: EditMessageWidgetData.() -> Unit = {}
+) = this.execute(EditMessageWidgetData(channelUsername, messageId), modifier)
+
+inline fun TelegramAware.editMessageWidgetData(
+ inlineMessageId: String,
+ modifier: EditMessageWidgetData.() -> Unit = {}
+) = this.execute(EditMessageWidgetData(inlineMessageId), modifier)
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditSharedWidgetDataExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditSharedWidgetDataExtension.kt
new file mode 100644
index 000000000..cb358d362
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditSharedWidgetDataExtension.kt
@@ -0,0 +1,11 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.request.widget.EditSharedWidgetData
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.editSharedWidgetData(
+ widgetId: String,
+ publicData: String,
+ modifier: EditSharedWidgetData.() -> Unit = {}
+) = this.execute(EditSharedWidgetData(widgetId, publicData), modifier)
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendSharedWidgetExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendSharedWidgetExtension.kt
new file mode 100644
index 000000000..b73e3b211
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendSharedWidgetExtension.kt
@@ -0,0 +1,23 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.request.widget.SendSharedWidget
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.sendSharedWidget(
+ chatId: Long,
+ widgetId: String,
+ modifier: SendSharedWidget.() -> Unit = {}
+) = this.execute(SendSharedWidget(
+ chatId = chatId,
+ widgetId = widgetId
+), modifier)
+
+inline fun TelegramAware.sendSharedWidget(
+ channelUsername: String,
+ widgetId: String,
+ modifier: SendSharedWidget.() -> Unit = {}
+) = this.execute(SendSharedWidget(
+ channelUsername = channelUsername,
+ widgetId = widgetId
+), modifier)
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendWidgetExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendWidgetExtension.kt
new file mode 100644
index 000000000..037e4f916
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendWidgetExtension.kt
@@ -0,0 +1,23 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.request.widget.SendWidget
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.sendWidget(
+ chatId: Long,
+ html: String,
+ modifier: SendWidget.() -> Unit = {}
+) = this.execute(SendWidget(
+ chatId = chatId,
+ html = html
+), modifier)
+
+inline fun TelegramAware.sendWidget(
+ channelUsername: String,
+ html: String,
+ modifier: SendWidget.() -> Unit = {}
+) = this.execute(SendWidget(
+ channelUsername = channelUsername,
+ html = html
+), modifier)
diff --git a/library/src/test/java/com/pengrad/telegrambot/BotApi104Test.kt b/library/src/test/java/com/pengrad/telegrambot/BotApi104Test.kt
new file mode 100644
index 000000000..30043d494
--- /dev/null
+++ b/library/src/test/java/com/pengrad/telegrambot/BotApi104Test.kt
@@ -0,0 +1,109 @@
+package com.pengrad.telegrambot
+
+import com.pengrad.telegrambot.model.chatsharetheme.ChatShareThemeEmoji
+import com.pengrad.telegrambot.model.chatsharetheme.EmojiTypeCustomEmoji
+import com.pengrad.telegrambot.model.chatsharetheme.EmojiTypeEmoji
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
+import com.pengrad.telegrambot.model.request.ReplyParameters
+import com.pengrad.telegrambot.model.richmessages.richtext.RichTextPlain
+import com.pengrad.telegrambot.model.widget.WidgetQueryTypeData
+import com.pengrad.telegrambot.model.widget.WidgetQueryTypeSentTransaction
+import com.pengrad.telegrambot.model.widget.WidgetQueryTypeUnknown
+import com.pengrad.telegrambot.request.SendMessage
+import com.pengrad.telegrambot.request.widget.AnswerWidgetQuery
+import com.pengrad.telegrambot.request.widget.EditMessageWidgetData
+import com.pengrad.telegrambot.request.widget.EditSharedWidgetData
+import com.pengrad.telegrambot.request.widget.SendWidget
+import com.pengrad.telegrambot.utility.BotUtils
+import org.junit.Assert.*
+import org.junit.Test
+
+class BotApi104Test {
+
+ @Test
+ fun widgetQueryUpdate() {
+ val u = BotUtils.parseUpdate(
+ """{"update_id":1,"widget_query":{"id":"q","from":{"id":5,"is_bot":false,"first_name":"A"},
+ "chat_instance":"ci","type":{"type":"data"},"data":"go","widget_id":"w"},
+ "shared_widget_query":{"id":"s","from":{"id":5,"is_bot":false,"first_name":"A"},
+ "type":{"type":"sent_transaction","wallet":{"address":"a","amount":"1"},"msg_hash":"h"},"data":"d","widget_id":"w"}}"""
+ )
+ assertTrue(u.widgetQuery().type is WidgetQueryTypeData)
+ assertEquals("go", u.widgetQuery().data)
+ val t = u.sharedWidgetQuery().type as WidgetQueryTypeSentTransaction
+ assertEquals("h", t.msgHash)
+ }
+
+ @Test
+ fun unknownWidgetQueryType() {
+ val u = BotUtils.parseUpdate(
+ """{"update_id":1,"widget_query":{"id":"q","from":{"id":5,"is_bot":false,"first_name":"A"},
+ "chat_instance":"ci","type":{"type":"future"},"data":"go"}}"""
+ )
+ assertTrue(u.widgetQuery().type is WidgetQueryTypeUnknown)
+ }
+
+ @Test
+ fun messageFields() {
+ val u = BotUtils.parseUpdate(
+ """{"update_id":1,"message":{"message_id":1,"date":1,"chat":{"id":1,"type":"private"},
+ "widget":{"html":"x","public_data":"p"},
+ "ton_wallet_transfer":{"transaction_id":"t","peer_address":"a","amount":"-5"},
+ "paid_messages_waived":{}}}"""
+ )
+ val m = u.message()
+ assertEquals("x", m.widget().html)
+ assertEquals("p", m.widget().publicData)
+ assertEquals("-5", m.tonWalletTransfer().amount)
+ assertNotNull(m.paidMessagesWaived())
+ }
+
+ @Test
+ fun shareThemeAndTonCard() {
+ val chat = BotUtils.fromJson(
+ """{"id":1,"type":"private","ton_wallet_card":{"address":"a","amount":"1","stickers":[
+ {"position":{"x_percentage":1.0,"y_percentage":2.0,"width_percentage":3.0,"height_percentage":4.0,
+ "rotation_angle":5.0,"corner_radius_percentage":6.0},"nft":{"address":"n","index":"1","name":"nm","description":"d"}}]},
+ "share_theme":{"type":"emoji","emojis":[{"type":"emoji","emoji":"x"},{"type":"custom_emoji","custom_emoji_id":"c"}],
+ "background_backdrop_id":7}}""",
+ com.pengrad.telegrambot.model.ChatFullInfo::class.java
+ )
+ assertEquals(1, chat.tonWalletCard().stickers.size)
+ assertEquals(2.0, chat.tonWalletCard().stickers[0].position.yPercentage, 0.0)
+ val theme = chat.shareTheme() as ChatShareThemeEmoji
+ assertEquals(EmojiTypeEmoji("x"), theme.emojis[0])
+ assertEquals(EmojiTypeCustomEmoji("c"), theme.emojis[1])
+ assertEquals(7L, theme.backgroundBackdropId)
+ }
+
+ @Test
+ fun quoteRichTexts() {
+ val q = BotUtils.fromJson(
+ """{"text":"","rich_texts":["a",{"type":"ton_address","text":"b","address":"UQ"}],"position":0}""",
+ com.pengrad.telegrambot.model.TextQuote::class.java
+ )
+ assertEquals(2, q.richTexts().size)
+ val json = BotUtils.toJson(ReplyParameters(1).quoteRichTexts(RichTextPlain("a")))
+ assertTrue(json, json.contains("quote_rich_texts"))
+ }
+
+ @Test
+ fun requestParameters() {
+ val w = SendWidget(1L, "").width(300).isShared(true).allowQueries(true)
+ assertEquals(1L, w.parameters["chat_id"])
+ assertEquals("", w.parameters["html"])
+ assertEquals(true, w.parameters["is_shared"])
+ assertEquals("d", AnswerWidgetQuery("q").data("d").parameters["data"])
+ assertEquals("i", EditMessageWidgetData("i").parameters["inline_message_id"])
+ assertEquals(10, EditSharedWidgetData("w", "p").cacheTime(10).parameters["cache_time"])
+ }
+
+ @Test
+ fun ephemeralReplyWithoutChat() {
+ val r = SendMessage("hi").ephemeralMessageParameters(EphemeralMessageParameters.replyToCallbackQuery("cb"))
+ assertFalse(r.parameters.containsKey("chat_id"))
+ val p = r.parameters["ephemeral_message_parameters"] as EphemeralMessageParameters
+ assertNull(p.receiverUserId)
+ assertEquals("cb", p.callbackQueryId)
+ }
+}
diff --git a/library/src/test/java/com/pengrad/telegrambot/ModelTest.kt b/library/src/test/java/com/pengrad/telegrambot/ModelTest.kt
index d848bf0d7..5f8d864e1 100644
--- a/library/src/test/java/com/pengrad/telegrambot/ModelTest.kt
+++ b/library/src/test/java/com/pengrad/telegrambot/ModelTest.kt
@@ -97,6 +97,7 @@ class ModelTest {
verifierApi.withIgnoredFields("general_forum_topic_hidden")
verifierApi.withIgnoredFields("general_forum_topic_unhidden")
verifierApi.withIgnoredFields("community_chat_removed")
+ verifierApi.withIgnoredFields("paid_messages_waived")
}
if (c == InlineKeyboardButton::class.java || c == RichMessageButton::class.java) {
diff --git a/pom.xml b/pom.xml
index 4bc141524..d144a416f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
4.0.0
com.github.pengrad
java-telegram-bot-api
- 10.3.0
+ 10.4.0
JavaTelegramBotApi
Java API for Telegram Bot API
https://github.com/pengrad/java-telegram-bot-api/