diff --git a/README.md b/README.md
index 1e6c446c5..6a6be122a 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.1 methods
+- Full support of all Bot API 10.3 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.1.0'
+implementation 'com.github.pengrad:java-telegram-bot-api:10.3.0'
```
Maven:
```xml
com.github.pengrad
java-telegram-bot-api
- 10.1.0
+ 10.3.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 4be86b119..fa055e807 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,5 +1,5 @@
GROUP=com.github.pengrad
-VERSION_NAME=10.1.0
+VERSION_NAME=10.3.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/BotCommand.java b/library/src/main/java/com/pengrad/telegrambot/model/BotCommand.java
index 417b2ffff..27bef3cfa 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/BotCommand.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/BotCommand.java
@@ -18,6 +18,7 @@ public BotCommand(String command, String description) {
private String command;
private String description;
+ private Boolean is_ephemeral;
public String command() {
return command;
@@ -27,6 +28,15 @@ public String description() {
return description;
}
+ public Boolean isEphemeral() {
+ return is_ephemeral;
+ }
+
+ public BotCommand isEphemeral(Boolean isEphemeral) {
+ this.is_ephemeral = isEphemeral;
+ return this;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -35,13 +45,15 @@ public boolean equals(Object o) {
BotCommand that = (BotCommand) o;
if (command != null ? !command.equals(that.command) : that.command != null) return false;
- return description != null ? description.equals(that.description) : that.description == null;
+ if (description != null ? !description.equals(that.description) : that.description != null) return false;
+ return is_ephemeral != null ? is_ephemeral.equals(that.is_ephemeral) : that.is_ephemeral == null;
}
@Override
public int hashCode() {
int result = command != null ? command.hashCode() : 0;
result = 31 * result + (description != null ? description.hashCode() : 0);
+ result = 31 * result + (is_ephemeral != null ? is_ephemeral.hashCode() : 0);
return result;
}
@@ -50,6 +62,7 @@ public String toString() {
return "BotCommand{" +
"command='" + command + '\'' +
", description='" + description + '\'' +
+ ", is_ephemeral=" + is_ephemeral +
'}';
}
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/BotSubscriptionUpdated.kt b/library/src/main/java/com/pengrad/telegrambot/model/BotSubscriptionUpdated.kt
new file mode 100644
index 000000000..f319bbd38
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/BotSubscriptionUpdated.kt
@@ -0,0 +1,9 @@
+package com.pengrad.telegrambot.model
+
+import java.io.Serializable
+
+data class BotSubscriptionUpdated(
+ @get:JvmName("user") val user: User,
+ @get:JvmName("invoicePayload") val invoicePayload: String,
+ @get:JvmName("state") val state: String,
+) : Serializable
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatAdministratorRights.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatAdministratorRights.java
index 67d7e5c05..e4831ef51 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/ChatAdministratorRights.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatAdministratorRights.java
@@ -28,6 +28,7 @@ public class ChatAdministratorRights implements Serializable {
private Boolean can_manage_topics;
private Boolean can_manage_direct_messages;
private Boolean can_manage_tags;
+ private Boolean can_send_welcome_messages;
public Boolean isAnonymous() {
return is_anonymous != null && is_anonymous;
@@ -97,6 +98,10 @@ public Boolean canManageTags() {
return can_manage_tags != null && can_manage_tags;
}
+ public Boolean canSendWelcomeMessages() {
+ return can_send_welcome_messages != null && can_send_welcome_messages;
+ }
+
public ChatAdministratorRights canManageChat(boolean canManageChat) {
this.can_manage_chat = canManageChat;
return this;
@@ -177,6 +182,11 @@ public ChatAdministratorRights canManageTags(boolean canManageTags) {
return this;
}
+ public ChatAdministratorRights canSendWelcomeMessages(boolean canSendWelcomeMessages) {
+ this.can_send_welcome_messages = canSendWelcomeMessages;
+ return this;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -199,7 +209,8 @@ public boolean equals(Object o) {
Objects.equals(can_delete_stories, that.can_delete_stories) &&
Objects.equals(can_manage_topics, that.can_manage_topics) &&
Objects.equals(can_manage_direct_messages, that.can_manage_direct_messages) &&
- Objects.equals(can_manage_tags, that.can_manage_tags);
+ Objects.equals(can_manage_tags, that.can_manage_tags) &&
+ Objects.equals(can_send_welcome_messages, that.can_send_welcome_messages);
}
@Override
@@ -220,7 +231,8 @@ public int hashCode() {
can_delete_stories,
can_manage_topics,
can_manage_direct_messages,
- can_manage_tags);
+ can_manage_tags,
+ can_send_welcome_messages);
}
@Override
@@ -243,6 +255,7 @@ public String toString() {
", can_manage_topics=" + can_manage_topics +
", can_manage_direct_messages=" + can_manage_direct_messages +
", can_manage_tags=" + can_manage_tags +
+ ", can_send_welcome_messages=" + can_send_welcome_messages +
'}';
}
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 8de790db6..b1dca42ad 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java
@@ -80,6 +80,7 @@ public enum Type {
private UniqueGiftColors unique_gift_colors;
private Audio first_profile_audio;
private User guard_bot;
+ private Community community;
public Long id() {
return id;
@@ -288,6 +289,10 @@ public User guardBot() {
return guard_bot;
}
+ public Community community() {
+ return community;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -344,7 +349,8 @@ public boolean equals(Object o) {
Objects.equals(paid_message_star_count, chat.paid_message_star_count) &&
Objects.equals(unique_gift_colors, chat.unique_gift_colors) &&
Objects.equals(first_profile_audio, chat.first_profile_audio) &&
- Objects.equals(guard_bot, chat.guard_bot);
+ Objects.equals(guard_bot, chat.guard_bot) &&
+ Objects.equals(community, chat.community);
}
@Override
@@ -407,6 +413,7 @@ public String toString() {
", unique_gift_colors=" + unique_gift_colors +
", first_profile_audio=" + first_profile_audio +
", guard_bot=" + guard_bot +
+ ", community=" + community +
'}';
}
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java
index f3c2131fc..08e88a0c9 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java
@@ -37,6 +37,7 @@ public enum Status {
private Boolean can_manage_topics;
private Boolean can_manage_direct_messages;
private Boolean can_manage_tags;
+ private Boolean can_send_welcome_messages;
private Boolean can_edit_tag;
private String tag;
private Boolean is_member;
@@ -142,6 +143,10 @@ public Boolean canManageTags() {
return can_manage_tags != null && can_manage_tags;
}
+ public Boolean canSendWelcomeMessages() {
+ return can_send_welcome_messages != null && can_send_welcome_messages;
+ }
+
public Boolean canEditTag() {
return can_edit_tag != null && can_edit_tag;
}
@@ -225,6 +230,7 @@ public boolean equals(Object o) {
Objects.equals(can_manage_topics, that.can_manage_topics) &&
Objects.equals(can_manage_direct_messages, that.can_manage_direct_messages) &&
Objects.equals(can_manage_tags, that.can_manage_tags) &&
+ Objects.equals(can_send_welcome_messages, that.can_send_welcome_messages) &&
Objects.equals(can_edit_tag, that.can_edit_tag) &&
Objects.equals(tag, that.tag) &&
Objects.equals(is_member, that.is_member) &&
@@ -265,6 +271,7 @@ public int hashCode() {
can_manage_topics,
can_manage_direct_messages,
can_manage_tags,
+ can_send_welcome_messages,
can_edit_tag,
tag,
is_member,
@@ -306,6 +313,7 @@ public String toString() {
", can_manage_topics=" + can_manage_topics +
", can_manage_direct_messages=" + can_manage_direct_messages +
", can_manage_tags=" + can_manage_tags +
+ ", can_send_welcome_messages=" + can_send_welcome_messages +
", can_edit_tag=" + can_edit_tag +
", tag='" + tag + '\'' +
", is_member=" + is_member +
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Community.kt b/library/src/main/java/com/pengrad/telegrambot/model/Community.kt
new file mode 100644
index 000000000..d61a6408d
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/Community.kt
@@ -0,0 +1,6 @@
+package com.pengrad.telegrambot.model
+
+data class Community(
+ @get:JvmName("id") val id: Long,
+ @get:JvmName("name") val name: String,
+)
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/CommunityChatAdded.kt b/library/src/main/java/com/pengrad/telegrambot/model/CommunityChatAdded.kt
new file mode 100644
index 000000000..d5344defc
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/CommunityChatAdded.kt
@@ -0,0 +1,5 @@
+package com.pengrad.telegrambot.model
+
+data class CommunityChatAdded(
+ @get:JvmName("community") val community: Community,
+)
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/CommunityChatJoined.kt b/library/src/main/java/com/pengrad/telegrambot/model/CommunityChatJoined.kt
new file mode 100644
index 000000000..fe6794568
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/CommunityChatJoined.kt
@@ -0,0 +1,5 @@
+package com.pengrad.telegrambot.model
+
+data class CommunityChatJoined(
+ @get:JvmName("community") val community: Community,
+)
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/CommunityChatRemoved.kt b/library/src/main/java/com/pengrad/telegrambot/model/CommunityChatRemoved.kt
new file mode 100644
index 000000000..015443227
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/CommunityChatRemoved.kt
@@ -0,0 +1,11 @@
+package com.pengrad.telegrambot.model
+
+class CommunityChatRemoved {
+
+ 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/Location.java b/library/src/main/java/com/pengrad/telegrambot/model/Location.java
index ae2f319c5..0f136708e 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/Location.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/Location.java
@@ -17,6 +17,14 @@ public class Location implements Serializable {
private Integer heading;
private Integer proximity_alert_radius;
+ private Location() {
+ }
+
+ public Location(Float latitude, Float longitude) {
+ this.latitude = latitude;
+ this.longitude = longitude;
+ }
+
public Float longitude() {
return longitude;
}
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 8aebc1b09..299917ff7 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/Message.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/Message.java
@@ -37,6 +37,8 @@ public class Message extends MaybeInaccessibleMessage implements Serializable {
private Long message_thread_id;
private DirectMessagesTopic direct_messages_topic;
private User from;
+ private User receiver_user;
+ private Long ephemeral_message_id;
private Chat sender_chat;
private String sender_tag;
private Integer sender_boost_count;
@@ -146,6 +148,9 @@ public class Message extends MaybeInaccessibleMessage implements Serializable {
private User guest_bot_caller_user;
private Chat guest_bot_caller_chat;
private String guest_query_id;
+ private CommunityChatAdded community_chat_added;
+ private CommunityChatJoined community_chat_joined;
+ private CommunityChatRemoved community_chat_removed;
public Long messageThreadId() {
return message_thread_id;
@@ -159,6 +164,14 @@ public User from() {
return from;
}
+ public User receiverUser() {
+ return receiver_user;
+ }
+
+ public Long ephemeralMessageId() {
+ return ephemeral_message_id;
+ }
+
public Chat senderChat() {
return sender_chat;
}
@@ -584,6 +597,18 @@ public String replyToPollOptionId() {
return reply_to_poll_option_id;
}
+ public CommunityChatAdded communityChatAdded() {
+ return community_chat_added;
+ }
+
+ public CommunityChatJoined communityChatJoined() {
+ return community_chat_joined;
+ }
+
+ public CommunityChatRemoved communityChatRemoved() {
+ return community_chat_removed;
+ }
+
public User guestBotCallerUser() {
return guest_bot_caller_user;
}
@@ -626,6 +651,8 @@ public boolean equals(Object o) {
Objects.equals(message_thread_id, message.message_thread_id) &&
Objects.equals(direct_messages_topic, message.direct_messages_topic) &&
Objects.equals(from, message.from) &&
+ Objects.equals(receiver_user, message.receiver_user) &&
+ Objects.equals(ephemeral_message_id, message.ephemeral_message_id) &&
Objects.equals(sender_chat, message.sender_chat) &&
Objects.equals(sender_tag, message.sender_tag) &&
Objects.equals(sender_boost_count, message.sender_boost_count) &&
@@ -736,7 +763,10 @@ public boolean equals(Object o) {
Objects.equals(reply_to_poll_option_id, message.reply_to_poll_option_id) &&
Objects.equals(guest_bot_caller_user, message.guest_bot_caller_user) &&
Objects.equals(guest_bot_caller_chat, message.guest_bot_caller_chat) &&
- Objects.equals(guest_query_id, message.guest_query_id);
+ 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);
}
@Override
@@ -751,6 +781,8 @@ public String toString() {
", message_thread_id=" + message_thread_id +
", direct_messages_topic=" + direct_messages_topic +
", from=" + from +
+ ", receiver_user=" + receiver_user +
+ ", ephemeral_message_id=" + ephemeral_message_id +
", sender_chat=" + sender_chat +
", sender_tag='" + sender_tag + '\'' +
", sender_boost_count=" + sender_boost_count +
@@ -862,6 +894,9 @@ public String toString() {
", guest_bot_caller_user=" + guest_bot_caller_user +
", guest_bot_caller_chat=" + guest_bot_caller_chat +
", guest_query_id='" + guest_query_id + '\'' +
+ ", community_chat_added=" + community_chat_added +
+ ", community_chat_joined=" + community_chat_joined +
+ ", community_chat_removed=" + community_chat_removed +
'}';
}
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/MessageGenerationStopped.kt b/library/src/main/java/com/pengrad/telegrambot/model/MessageGenerationStopped.kt
new file mode 100644
index 000000000..ca87d618a
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/MessageGenerationStopped.kt
@@ -0,0 +1,7 @@
+package com.pengrad.telegrambot.model
+
+data class MessageGenerationStopped(
+ @get:JvmName("chat") val chat: Chat,
+ @get:JvmName("messageThreadId") val messageThreadId: Long? = null,
+ @get:JvmName("draftId") val draftId: Int,
+)
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 ffd68e65d..669466e9e 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/Update.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/Update.java
@@ -42,6 +42,8 @@ public class Update implements Serializable {
private PaidMediaPurchased purchased_paid_media;
private ManagedBotUpdated managed_bot;
private Message guest_message;
+ private BotSubscriptionUpdated subscription;
+ private MessageGenerationStopped stopped_message_generation;
public Integer updateId() {
return update_id;
@@ -147,6 +149,14 @@ public Message guestMessage() {
return guest_message;
}
+ public BotSubscriptionUpdated subscription() {
+ return subscription;
+ }
+
+ public MessageGenerationStopped stoppedMessageGeneration() {
+ return stopped_message_generation;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -177,7 +187,9 @@ public boolean equals(Object o) {
Objects.equals(removed_chat_boost, update.removed_chat_boost) &&
Objects.equals(purchased_paid_media, update.purchased_paid_media) &&
Objects.equals(managed_bot, update.managed_bot) &&
- Objects.equals(guest_message, update.guest_message);
+ Objects.equals(guest_message, update.guest_message) &&
+ Objects.equals(subscription, update.subscription) &&
+ Objects.equals(stopped_message_generation, update.stopped_message_generation);
}
@Override
@@ -214,6 +226,8 @@ public String toString() {
", purchased_paid_media=" + purchased_paid_media +
", managed_bot=" + managed_bot +
", guest_message=" + guest_message +
+ ", subscription=" + subscription +
+ ", stopped_message_generation=" + stopped_message_generation +
'}';
}
}
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
new file mode 100644
index 000000000..8ee59a2aa
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/ephemeral/EphemeralMessageParameters.kt
@@ -0,0 +1,41 @@
+package com.pengrad.telegrambot.model.ephemeral
+
+class EphemeralMessageParameters private constructor(
+ @get:JvmName("receiverUserId") val receiverUserId: Long,
+ @get:JvmName("callbackQueryId") var callbackQueryId: String?,
+ @get:JvmName("replaceCallbackQueryMessage") var replaceCallbackQueryMessage: Boolean?,
+) {
+
+ constructor(receiverUserId: Long) : this(
+ receiverUserId = receiverUserId,
+ callbackQueryId = null,
+ replaceCallbackQueryMessage = null
+ )
+
+ fun callbackQueryId(callbackQueryId: String) = apply {
+ this.callbackQueryId = callbackQueryId
+ }
+
+ fun replaceCallbackQueryMessage(replaceCallbackQueryMessage: Boolean) = apply {
+ this.replaceCallbackQueryMessage = replaceCallbackQueryMessage
+ }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as EphemeralMessageParameters
+ return receiverUserId == other.receiverUserId &&
+ callbackQueryId == other.callbackQueryId &&
+ replaceCallbackQueryMessage == other.replaceCallbackQueryMessage
+ }
+
+ override fun hashCode(): Int {
+ var result = receiverUserId.hashCode()
+ result = 31 * result + (callbackQueryId?.hashCode() ?: 0)
+ result = 31 * result + (replaceCallbackQueryMessage?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "EphemeralMessageParameters(receiverUserId=$receiverUserId, callbackQueryId=$callbackQueryId, replaceCallbackQueryMessage=$replaceCallbackQueryMessage)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/gift/unique/UniqueGiftInfo.kt b/library/src/main/java/com/pengrad/telegrambot/model/gift/unique/UniqueGiftInfo.kt
index 1429504f2..832df2dc5 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/gift/unique/UniqueGiftInfo.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/gift/unique/UniqueGiftInfo.kt
@@ -1,5 +1,7 @@
package com.pengrad.telegrambot.model.gift.unique
+import com.pengrad.telegrambot.model.MessageEntity
+
@Suppress("unused")
data class UniqueGiftInfo(
@get:JvmName("gift") val gift: UniqueGift,
@@ -10,5 +12,53 @@ data class UniqueGiftInfo(
@Deprecated("Use lastResaleCurrency and lastResaleAmount instead")
@get:JvmName("lastResaleStarCount") val lastResaleStarCount: Int?,
@get:JvmName("lastResaleCurrency") val lastResaleCurrency: String?,
- @get:JvmName("lastResaleAmount") val lastResaleAmount: Long?
-)
\ No newline at end of file
+ @get:JvmName("lastResaleAmount") val lastResaleAmount: Long?,
+ @get:JvmName("text") val text: String? = null,
+ @get:JvmName("entities") val entities: Array? = null,
+ @get:JvmName("isPrivate") val isPrivate: Boolean? = null,
+) {
+
+ @Suppress("DEPRECATION")
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (other !is UniqueGiftInfo) return false
+
+ return gift == other.gift &&
+ origin == other.origin &&
+ ownedGiftId == other.ownedGiftId &&
+ transferStarCount == other.transferStarCount &&
+ nextTransferDate == other.nextTransferDate &&
+ lastResaleStarCount == other.lastResaleStarCount &&
+ lastResaleCurrency == other.lastResaleCurrency &&
+ lastResaleAmount == other.lastResaleAmount &&
+ text == other.text &&
+ entities contentEquals other.entities &&
+ isPrivate == other.isPrivate
+ }
+
+ @Suppress("DEPRECATION")
+ override fun hashCode(): Int {
+ var result = gift.hashCode()
+ result = 31 * result + origin.hashCode()
+ result = 31 * result + (ownedGiftId?.hashCode() ?: 0)
+ result = 31 * result + (transferStarCount ?: 0)
+ result = 31 * result + (nextTransferDate?.hashCode() ?: 0)
+ result = 31 * result + (lastResaleStarCount ?: 0)
+ result = 31 * result + (lastResaleCurrency?.hashCode() ?: 0)
+ result = 31 * result + (lastResaleAmount?.hashCode() ?: 0)
+ result = 31 * result + (text?.hashCode() ?: 0)
+ result = 31 * result + (entities?.contentHashCode() ?: 0)
+ result = 31 * result + (isPrivate?.hashCode() ?: 0)
+ return result
+ }
+
+ @Suppress("DEPRECATION")
+ override fun toString(): String {
+ return "UniqueGiftInfo(gift=$gift, origin=$origin, ownedGiftId=$ownedGiftId, " +
+ "transferStarCount=$transferStarCount, nextTransferDate=$nextTransferDate, " +
+ "lastResaleStarCount=$lastResaleStarCount, lastResaleCurrency=$lastResaleCurrency, " +
+ "lastResaleAmount=$lastResaleAmount, text=$text, " +
+ "entities=${entities?.contentToString()}, isPrivate=$isPrivate)"
+ }
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/DisabledButton.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/DisabledButton.kt
new file mode 100644
index 000000000..5fe4b9769
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/DisabledButton.kt
@@ -0,0 +1,13 @@
+package com.pengrad.telegrambot.model.request
+
+class DisabledButton {
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ return other != null && javaClass == other.javaClass
+ }
+
+ override fun hashCode(): Int = 1
+
+ override fun toString(): String = "DisabledButton()"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/InlineKeyboardButton.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/InlineKeyboardButton.kt
index 6f2f6f0b0..b20a09e66 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/request/InlineKeyboardButton.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/InlineKeyboardButton.kt
@@ -19,7 +19,8 @@ data class InlineKeyboardButton @JvmOverloads constructor(
@get:JvmName("webApp") var webApp: WebAppInfo? = null,
@get:JvmName("copyText") var copyText: CopyTextButton? = null,
@get:JvmName("iconCustomEmojiId") var iconCustomEmojiId: String? = null,
- @get:JvmName("style") var style: String? = null
+ @get:JvmName("style") var style: String? = null,
+ @get:JvmName("disabled") var disabled: DisabledButton? = null
) {
fun url(url: String): InlineKeyboardButton {
@@ -90,4 +91,9 @@ data class InlineKeyboardButton @JvmOverloads constructor(
this.style = style
return this
}
+
+ fun disabled(): InlineKeyboardButton {
+ this.disabled = DisabledButton()
+ return this
+ }
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/InlineKeyboardMarkup.java b/library/src/main/java/com/pengrad/telegrambot/model/request/InlineKeyboardMarkup.java
index f8113fe67..62b9c99c9 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/request/InlineKeyboardMarkup.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/InlineKeyboardMarkup.java
@@ -14,6 +14,7 @@ public class InlineKeyboardMarkup extends Keyboard implements Serializable {
private final static long serialVersionUID = 0L;
private final List> inline_keyboard;
+ private Boolean force_reply;
public InlineKeyboardMarkup() {
this.inline_keyboard = new ArrayList<>();
@@ -35,6 +36,15 @@ public InlineKeyboardMarkup addRow(InlineKeyboardButton... keyboard) {
return this;
}
+ public InlineKeyboardMarkup forceReply(boolean forceReply) {
+ this.force_reply = forceReply;
+ return this;
+ }
+
+ public Boolean forceReply() {
+ return force_reply;
+ }
+
public InlineKeyboardButton[][] inlineKeyboard() {
InlineKeyboardButton[][] res = new InlineKeyboardButton[inline_keyboard.size()][];
for (int i = 0; i < inline_keyboard.size(); i++) {
@@ -49,18 +59,20 @@ public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
InlineKeyboardMarkup that = (InlineKeyboardMarkup) o;
- return Objects.equals(inline_keyboard, that.inline_keyboard);
+ return Objects.equals(inline_keyboard, that.inline_keyboard) &&
+ Objects.equals(force_reply, that.force_reply);
}
@Override
public int hashCode() {
- return Objects.hash(inline_keyboard);
+ return Objects.hash(inline_keyboard, force_reply);
}
@Override
public String toString() {
return "InlineKeyboardMarkup{" +
"inline_keyboard=" + inline_keyboard +
+ ", force_reply=" + force_reply +
'}';
}
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaVoiceNote.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaVoiceNote.kt
new file mode 100644
index 000000000..49346cba8
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaVoiceNote.kt
@@ -0,0 +1,21 @@
+package com.pengrad.telegrambot.model.request
+
+import com.pengrad.telegrambot.request.ContentTypes
+import java.io.File
+
+class InputMediaVoiceNote : InputMedia {
+
+ constructor(media: String) : super("voice_note", media)
+ constructor(media: File) : super("voice_note", media)
+ constructor(media: ByteArray) : super("voice_note", media)
+
+ private var duration: Int? = null
+
+ fun duration(duration: Int): InputMediaVoiceNote {
+ this.duration = duration
+ return this
+ }
+
+ override fun getDefaultFileName(): String = ContentTypes.VOICE_FILE_NAME
+ override fun getDefaultContentType(): String = ContentTypes.VOICE_MIME_TYPE
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/ReplyKeyboardMarkup.java b/library/src/main/java/com/pengrad/telegrambot/model/request/ReplyKeyboardMarkup.java
index 53756c237..3ae3cc3b2 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/request/ReplyKeyboardMarkup.java
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/ReplyKeyboardMarkup.java
@@ -18,6 +18,7 @@ public class ReplyKeyboardMarkup extends Keyboard implements Serializable {
private String input_field_placeholder;
private boolean selective;
private boolean is_persistent;
+ private Boolean force_reply;
public ReplyKeyboardMarkup(String[][] keyboard, boolean resize_keyboard, boolean one_time_keyboard, String input_field_placeholder, boolean selective, boolean is_persistent) {
this.keyboard = new ArrayList<>();
@@ -92,4 +93,9 @@ public ReplyKeyboardMarkup isPersistent(boolean is_persistent) {
this.is_persistent = is_persistent;
return this;
}
+
+ public ReplyKeyboardMarkup forceReply(boolean forceReply) {
+ this.force_reply = forceReply;
+ return this;
+ }
}
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 cbac3a119..4d0dc8739 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
@@ -9,6 +9,7 @@ public class ReplyParameters implements Serializable {
private final static long serialVersionUID = 0L;
private Integer message_id;
+ private Long ephemeral_message_id;
private Object chat_id;
private Boolean allow_sending_without_reply;
private String quote;
@@ -18,6 +19,8 @@ public class ReplyParameters implements Serializable {
private Integer checklist_task_id;
private String poll_option_id;
+ public ReplyParameters() {}
+
public ReplyParameters(Integer messageId) {
this.message_id = messageId;
}
@@ -27,6 +30,16 @@ public ReplyParameters(Integer messageId, Object chatId) {
this.chat_id = chatId;
}
+ public ReplyParameters messageId(Integer messageId) {
+ this.message_id = messageId;
+ return this;
+ }
+
+ public ReplyParameters ephemeralMessageId(Long ephemeralMessageId) {
+ this.ephemeral_message_id = ephemeralMessageId;
+ return this;
+ }
+
public ReplyParameters allowSendingWithoutReply(Boolean allowSendingWithoutReply) {
this.allow_sending_without_reply = allowSendingWithoutReply;
return this;
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt
index ec61a5d27..f78504244 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt
@@ -1,45 +1,66 @@
package com.pengrad.telegrambot.model.request.richmessages
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.request.richmessages.richblock.InputRichBlock
+
class InputRichMessage private constructor(
+ @get:JvmName("blocks") var blocks: Array?,
@get:JvmName("html") var html: String?,
@get:JvmName("markdown") var markdown: String?,
+ @get:JvmName("media") var media: Array?,
@get:JvmName("isRtl") var isRtl: Boolean?,
@get:JvmName("skipEntityDetection") var skipEntityDetection: Boolean?
) {
constructor() : this(
+ blocks = null,
html = null,
markdown = null,
+ media = null,
isRtl = null,
skipEntityDetection = null
)
+ fun blocks(vararg blocks: InputRichBlock) = apply { this.blocks = arrayOf(*blocks) }
+
fun html(html: String) = apply { this.html = html }
fun markdown(markdown: String) = apply { this.markdown = markdown }
+ fun media(vararg media: InputRichMessageMedia) = apply { this.media = arrayOf(*media) }
+
fun isRtl(isRtl: Boolean) = apply { this.isRtl = isRtl }
fun skipEntityDetection(skipEntityDetection: Boolean) = apply { this.skipEntityDetection = skipEntityDetection }
+ /**
+ * All the media carried by this rich message, for requests that have to upload them.
+ */
+ fun inputMedia(): List> =
+ (media?.map { it.media } ?: emptyList()) + (blocks?.flatMap { it.inputMedia() } ?: emptyList())
+
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as InputRichMessage
- return html == other.html &&
+ return blocks.contentEquals(other.blocks) &&
+ html == other.html &&
markdown == other.markdown &&
+ media.contentEquals(other.media) &&
isRtl == other.isRtl &&
skipEntityDetection == other.skipEntityDetection
}
override fun hashCode(): Int {
- var result = html?.hashCode() ?: 0
+ var result = blocks?.contentHashCode() ?: 0
+ result = 31 * result + (html?.hashCode() ?: 0)
result = 31 * result + (markdown?.hashCode() ?: 0)
+ result = 31 * result + (media?.contentHashCode() ?: 0)
result = 31 * result + (isRtl?.hashCode() ?: 0)
result = 31 * result + (skipEntityDetection?.hashCode() ?: 0)
return result
}
override fun toString(): String =
- "InputRichMessage(html=$html, markdown=$markdown, isRtl=$isRtl, skipEntityDetection=$skipEntityDetection)"
+ "InputRichMessage(blocks=${blocks?.contentToString()}, html=$html, markdown=$markdown, media=${media?.contentToString()}, isRtl=$isRtl, skipEntityDetection=$skipEntityDetection)"
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageMedia.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageMedia.kt
new file mode 100644
index 000000000..bc958c9f1
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageMedia.kt
@@ -0,0 +1,25 @@
+package com.pengrad.telegrambot.model.request.richmessages
+
+import com.pengrad.telegrambot.model.request.InputMedia
+
+class InputRichMessageMedia(
+ @get:JvmName("id") val id: String,
+ @get:JvmName("media") val media: InputMedia<*>
+) {
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichMessageMedia
+ return id == other.id &&
+ media == other.media
+ }
+
+ override fun hashCode(): Int {
+ var result = id.hashCode()
+ result = 31 * result + media.hashCode()
+ return result
+ }
+
+ override fun toString(): String = "InputRichMessageMedia(id=$id, media=$media)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlock.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlock.kt
new file mode 100644
index 000000000..5c3cf8156
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlock.kt
@@ -0,0 +1,12 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+
+interface InputRichBlock {
+ val type: String
+
+ /**
+ * The media carried by this block, for requests that have to upload them.
+ */
+ fun inputMedia(): List> = emptyList()
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockAnchor.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockAnchor.kt
new file mode 100644
index 000000000..28ba85ec5
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockAnchor.kt
@@ -0,0 +1,25 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+class InputRichBlockAnchor(
+ @get:JvmName("name") val name: String
+) : InputRichBlock {
+
+ override val type: String = InputRichBlockType.ANCHOR
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockAnchor
+ return type == other.type &&
+ name == other.name
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + name.hashCode()
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockAnchor(type=$type, name=$name)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockAnimation.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockAnimation.kt
new file mode 100644
index 000000000..cbb83df2d
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockAnimation.kt
@@ -0,0 +1,41 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.request.InputMediaAnimation
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockCaption
+
+class InputRichBlockAnimation private constructor(
+ @get:JvmName("animation") val animation: InputMediaAnimation,
+ @get:JvmName("caption") var caption: RichBlockCaption?
+) : InputRichBlock {
+
+ constructor(animation: InputMediaAnimation) : this(
+ animation = animation,
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.ANIMATION
+
+ override fun inputMedia(): List> = listOf(animation)
+
+ fun caption(caption: RichBlockCaption) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockAnimation
+ return type == other.type &&
+ animation == other.animation &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + animation.hashCode()
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockAnimation(type=$type, animation=$animation, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockAudio.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockAudio.kt
new file mode 100644
index 000000000..2b001c4ac
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockAudio.kt
@@ -0,0 +1,41 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.request.InputMediaAudio
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockCaption
+
+class InputRichBlockAudio private constructor(
+ @get:JvmName("audio") val audio: InputMediaAudio,
+ @get:JvmName("caption") var caption: RichBlockCaption?
+) : InputRichBlock {
+
+ constructor(audio: InputMediaAudio) : this(
+ audio = audio,
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.AUDIO
+
+ override fun inputMedia(): List> = listOf(audio)
+
+ fun caption(caption: RichBlockCaption) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockAudio
+ return type == other.type &&
+ audio == other.audio &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + audio.hashCode()
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockAudio(type=$type, audio=$audio, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockBlockQuotation.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockBlockQuotation.kt
new file mode 100644
index 000000000..de9aad648
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockBlockQuotation.kt
@@ -0,0 +1,40 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockBlockQuotation private constructor(
+ @get:JvmName("blocks") val blocks: Array,
+ @get:JvmName("credit") var credit: RichText?
+) : InputRichBlock {
+
+ constructor(vararg blocks: InputRichBlock) : this(
+ blocks = arrayOf(*blocks),
+ credit = null
+ )
+
+ override val type: String = InputRichBlockType.BLOCKQUOTE
+
+ override fun inputMedia(): List> = blocks.flatMap { it.inputMedia() }
+
+ fun credit(credit: RichText) = apply { this.credit = credit }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockBlockQuotation
+ return type == other.type &&
+ blocks.contentEquals(other.blocks) &&
+ credit == other.credit
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + blocks.contentHashCode()
+ result = 31 * result + (credit?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockBlockQuotation(type=$type, blocks=${blocks.contentToString()}, credit=$credit)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockButtons.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockButtons.kt
new file mode 100644
index 000000000..167114ee9
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockButtons.kt
@@ -0,0 +1,37 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.RichMessageButton
+
+class InputRichBlockButtons private constructor(
+ @get:JvmName("buttons") val buttons: Array,
+ @get:JvmName("align") var align: String?
+) : InputRichBlock {
+
+ constructor(vararg buttons: RichMessageButton) : this(
+ buttons = arrayOf(*buttons),
+ align = null
+ )
+
+ override val type: String = InputRichBlockType.BUTTONS
+
+ fun align(align: String) = apply { this.align = align }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockButtons
+ return type == other.type &&
+ buttons.contentEquals(other.buttons) &&
+ align == other.align
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + buttons.contentHashCode()
+ result = 31 * result + (align?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockButtons(type=$type, buttons=${buttons.contentToString()}, align=$align)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockCollage.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockCollage.kt
new file mode 100644
index 000000000..7d03f3756
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockCollage.kt
@@ -0,0 +1,40 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockCaption
+
+class InputRichBlockCollage private constructor(
+ @get:JvmName("blocks") val blocks: Array,
+ @get:JvmName("caption") var caption: RichBlockCaption?
+) : InputRichBlock {
+
+ constructor(vararg blocks: InputRichBlock) : this(
+ blocks = arrayOf(*blocks),
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.COLLAGE
+
+ override fun inputMedia(): List> = blocks.flatMap { it.inputMedia() }
+
+ fun caption(caption: RichBlockCaption) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockCollage
+ return type == other.type &&
+ blocks.contentEquals(other.blocks) &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + blocks.contentHashCode()
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockCollage(type=$type, blocks=${blocks.contentToString()}, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockDetails.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockDetails.kt
new file mode 100644
index 000000000..f855cabf3
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockDetails.kt
@@ -0,0 +1,44 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockDetails private constructor(
+ @get:JvmName("summary") val summary: RichText,
+ @get:JvmName("blocks") val blocks: Array,
+ @get:JvmName("isOpen") var isOpen: Boolean?
+) : InputRichBlock {
+
+ constructor(summary: RichText, vararg blocks: InputRichBlock) : this(
+ summary = summary,
+ blocks = arrayOf(*blocks),
+ isOpen = null
+ )
+
+ override val type: String = InputRichBlockType.DETAILS
+
+ override fun inputMedia(): List> = blocks.flatMap { it.inputMedia() }
+
+ fun isOpen(isOpen: Boolean) = apply { this.isOpen = isOpen }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockDetails
+ return type == other.type &&
+ summary == other.summary &&
+ blocks.contentEquals(other.blocks) &&
+ isOpen == other.isOpen
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + summary.hashCode()
+ result = 31 * result + blocks.contentHashCode()
+ result = 31 * result + (isOpen?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockDetails(type=$type, summary=$summary, blocks=${blocks.contentToString()}, isOpen=$isOpen)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockDivider.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockDivider.kt
new file mode 100644
index 000000000..9ed312327
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockDivider.kt
@@ -0,0 +1,17 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+class InputRichBlockDivider : InputRichBlock {
+
+ override val type: String = InputRichBlockType.DIVIDER
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockDivider
+ return type == other.type
+ }
+
+ override fun hashCode(): Int = type.hashCode()
+
+ override fun toString(): String = "InputRichBlockDivider(type=$type)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockDocument.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockDocument.kt
new file mode 100644
index 000000000..b5406c3b0
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockDocument.kt
@@ -0,0 +1,41 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.request.InputMediaDocument
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockCaption
+
+class InputRichBlockDocument private constructor(
+ @get:JvmName("document") val document: InputMediaDocument,
+ @get:JvmName("caption") var caption: RichBlockCaption?
+) : InputRichBlock {
+
+ constructor(document: InputMediaDocument) : this(
+ document = document,
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.DOCUMENT
+
+ override fun inputMedia(): List> = listOf(document)
+
+ fun caption(caption: RichBlockCaption) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockDocument
+ return type == other.type &&
+ document == other.document &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + document.hashCode()
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockDocument(type=$type, document=$document, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockExpandableBlockQuotation.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockExpandableBlockQuotation.kt
new file mode 100644
index 000000000..18da3070b
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockExpandableBlockQuotation.kt
@@ -0,0 +1,37 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockExpandableBlockQuotation private constructor(
+ @get:JvmName("text") val text: RichText,
+ @get:JvmName("credit") var credit: RichText?
+) : InputRichBlock {
+
+ constructor(text: RichText) : this(
+ text = text,
+ credit = null
+ )
+
+ override val type: String = InputRichBlockType.EXPANDABLE_BLOCKQUOTE
+
+ fun credit(credit: RichText) = apply { this.credit = credit }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockExpandableBlockQuotation
+ return type == other.type &&
+ text == other.text &&
+ credit == other.credit
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + text.hashCode()
+ result = 31 * result + (credit?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockExpandableBlockQuotation(type=$type, text=$text, credit=$credit)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockFooter.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockFooter.kt
new file mode 100644
index 000000000..3b6f44717
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockFooter.kt
@@ -0,0 +1,27 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockFooter(
+ @get:JvmName("text") val text: RichText
+) : InputRichBlock {
+
+ override val type: String = InputRichBlockType.FOOTER
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockFooter
+ return type == other.type &&
+ text == other.text
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + text.hashCode()
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockFooter(type=$type, text=$text)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockList.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockList.kt
new file mode 100644
index 000000000..ce270d074
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockList.kt
@@ -0,0 +1,29 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+
+class InputRichBlockList(vararg items: InputRichBlockListItem) : InputRichBlock {
+
+ @get:JvmName("items") val items: Array = arrayOf(*items)
+
+ override val type: String = InputRichBlockType.LIST
+
+ override fun inputMedia(): List> = items.flatMap { it.inputMedia() }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockList
+ return type == other.type &&
+ items.contentEquals(other.items)
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + items.contentHashCode()
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockList(type=$type, items=${items.contentToString()})"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockListItem.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockListItem.kt
new file mode 100644
index 000000000..97b417842
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockListItem.kt
@@ -0,0 +1,56 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+
+class InputRichBlockListItem private constructor(
+ @get:JvmName("blocks") val blocks: Array,
+ @get:JvmName("hasCheckbox") var hasCheckbox: Boolean?,
+ @get:JvmName("isChecked") var isChecked: Boolean?,
+ @get:JvmName("value") var value: Int?,
+ @get:JvmName("type") var type: String?
+) {
+
+ constructor(vararg blocks: InputRichBlock) : this(
+ blocks = arrayOf(*blocks),
+ hasCheckbox = null,
+ isChecked = null,
+ value = null,
+ type = null
+ )
+
+ fun hasCheckbox(hasCheckbox: Boolean) = apply { this.hasCheckbox = hasCheckbox }
+
+ fun isChecked(isChecked: Boolean) = apply { this.isChecked = isChecked }
+
+ fun value(value: Int) = apply { this.value = value }
+
+ fun type(type: String) = apply { this.type = type }
+
+ /**
+ * The media carried by the blocks of this item, for requests that have to upload them.
+ */
+ fun inputMedia(): List> = blocks.flatMap { it.inputMedia() }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockListItem
+ return blocks.contentEquals(other.blocks) &&
+ hasCheckbox == other.hasCheckbox &&
+ isChecked == other.isChecked &&
+ value == other.value &&
+ type == other.type
+ }
+
+ override fun hashCode(): Int {
+ var result = blocks.contentHashCode()
+ result = 31 * result + (hasCheckbox?.hashCode() ?: 0)
+ result = 31 * result + (isChecked?.hashCode() ?: 0)
+ result = 31 * result + (value ?: 0)
+ result = 31 * result + (type?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockListItem(blocks=${blocks.contentToString()}, hasCheckbox=$hasCheckbox, isChecked=$isChecked, value=$value, type=$type)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockMap.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockMap.kt
new file mode 100644
index 000000000..57af93dbf
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockMap.kt
@@ -0,0 +1,56 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.Location
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockCaption
+
+class InputRichBlockMap private constructor(
+ @get:JvmName("location") val location: Location,
+ @get:JvmName("zoom") var zoom: Int?,
+ @get:JvmName("width") var width: Int?,
+ @get:JvmName("height") var height: Int?,
+ @get:JvmName("caption") var caption: RichBlockCaption?
+) : InputRichBlock {
+
+ constructor(location: Location) : this(
+ location = location,
+ zoom = null,
+ width = null,
+ height = null,
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.MAP
+
+ fun zoom(zoom: Int) = apply { this.zoom = zoom }
+
+ fun width(width: Int) = apply { this.width = width }
+
+ fun height(height: Int) = apply { this.height = height }
+
+ fun caption(caption: RichBlockCaption) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockMap
+ return type == other.type &&
+ location == other.location &&
+ zoom == other.zoom &&
+ width == other.width &&
+ height == other.height &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + location.hashCode()
+ result = 31 * result + (zoom ?: 0)
+ result = 31 * result + (width ?: 0)
+ result = 31 * result + (height ?: 0)
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockMap(type=$type, location=$location, zoom=$zoom, width=$width, height=$height, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockMathematicalExpression.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockMathematicalExpression.kt
new file mode 100644
index 000000000..bedd3504d
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockMathematicalExpression.kt
@@ -0,0 +1,25 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+class InputRichBlockMathematicalExpression(
+ @get:JvmName("expression") val expression: String
+) : InputRichBlock {
+
+ override val type: String = InputRichBlockType.MATHEMATICAL_EXPRESSION
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockMathematicalExpression
+ return type == other.type &&
+ expression == other.expression
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + expression.hashCode()
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockMathematicalExpression(type=$type, expression=$expression)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockParagraph.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockParagraph.kt
new file mode 100644
index 000000000..38c36a66f
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockParagraph.kt
@@ -0,0 +1,27 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockParagraph(
+ @get:JvmName("text") val text: RichText
+) : InputRichBlock {
+
+ override val type: String = InputRichBlockType.PARAGRAPH
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockParagraph
+ return type == other.type &&
+ text == other.text
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + text.hashCode()
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockParagraph(type=$type, text=$text)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockPhoto.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockPhoto.kt
new file mode 100644
index 000000000..43e684d75
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockPhoto.kt
@@ -0,0 +1,41 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.request.InputMediaPhoto
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockCaption
+
+class InputRichBlockPhoto private constructor(
+ @get:JvmName("photo") val photo: InputMediaPhoto,
+ @get:JvmName("caption") var caption: RichBlockCaption?
+) : InputRichBlock {
+
+ constructor(photo: InputMediaPhoto) : this(
+ photo = photo,
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.PHOTO
+
+ override fun inputMedia(): List> = listOf(photo)
+
+ fun caption(caption: RichBlockCaption) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockPhoto
+ return type == other.type &&
+ photo == other.photo &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + photo.hashCode()
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockPhoto(type=$type, photo=$photo, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockPreformatted.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockPreformatted.kt
new file mode 100644
index 000000000..b846b1fd0
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockPreformatted.kt
@@ -0,0 +1,37 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockPreformatted private constructor(
+ @get:JvmName("text") val text: RichText,
+ @get:JvmName("language") var language: String?
+) : InputRichBlock {
+
+ constructor(text: RichText) : this(
+ text = text,
+ language = null
+ )
+
+ override val type: String = InputRichBlockType.PRE
+
+ fun language(language: String) = apply { this.language = language }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockPreformatted
+ return type == other.type &&
+ text == other.text &&
+ language == other.language
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + text.hashCode()
+ result = 31 * result + (language?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockPreformatted(type=$type, text=$text, language=$language)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockPullQuotation.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockPullQuotation.kt
new file mode 100644
index 000000000..654a5f690
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockPullQuotation.kt
@@ -0,0 +1,37 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockPullQuotation private constructor(
+ @get:JvmName("text") val text: RichText,
+ @get:JvmName("credit") var credit: RichText?
+) : InputRichBlock {
+
+ constructor(text: RichText) : this(
+ text = text,
+ credit = null
+ )
+
+ override val type: String = InputRichBlockType.PULLQUOTE
+
+ fun credit(credit: RichText) = apply { this.credit = credit }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockPullQuotation
+ return type == other.type &&
+ text == other.text &&
+ credit == other.credit
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + text.hashCode()
+ result = 31 * result + (credit?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockPullQuotation(type=$type, text=$text, credit=$credit)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockSectionHeading.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockSectionHeading.kt
new file mode 100644
index 000000000..b29a68e0e
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockSectionHeading.kt
@@ -0,0 +1,30 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockSectionHeading(
+ @get:JvmName("text") val text: RichText,
+ @get:JvmName("size") val size: Int
+) : InputRichBlock {
+
+ override val type: String = InputRichBlockType.HEADING
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockSectionHeading
+ return type == other.type &&
+ text == other.text &&
+ size == other.size
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + text.hashCode()
+ result = 31 * result + size
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockSectionHeading(type=$type, text=$text, size=$size)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockSlideshow.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockSlideshow.kt
new file mode 100644
index 000000000..09984a0c0
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockSlideshow.kt
@@ -0,0 +1,40 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockCaption
+
+class InputRichBlockSlideshow private constructor(
+ @get:JvmName("blocks") val blocks: Array,
+ @get:JvmName("caption") var caption: RichBlockCaption?
+) : InputRichBlock {
+
+ constructor(vararg blocks: InputRichBlock) : this(
+ blocks = arrayOf(*blocks),
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.SLIDESHOW
+
+ override fun inputMedia(): List> = blocks.flatMap { it.inputMedia() }
+
+ fun caption(caption: RichBlockCaption) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockSlideshow
+ return type == other.type &&
+ blocks.contentEquals(other.blocks) &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + blocks.contentHashCode()
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockSlideshow(type=$type, blocks=${blocks.contentToString()}, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockTable.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockTable.kt
new file mode 100644
index 000000000..e26323587
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockTable.kt
@@ -0,0 +1,56 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockTableCell
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockTable private constructor(
+ @get:JvmName("cells") val cells: Array>,
+ @get:JvmName("isBordered") var isBordered: Boolean?,
+ @get:JvmName("isStriped") var isStriped: Boolean?,
+ @get:JvmName("isCompact") var isCompact: Boolean?,
+ @get:JvmName("caption") var caption: RichText?
+) : InputRichBlock {
+
+ constructor(cells: Array>) : this(
+ cells = cells,
+ isBordered = null,
+ isStriped = null,
+ isCompact = null,
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.TABLE
+
+ fun isBordered(isBordered: Boolean) = apply { this.isBordered = isBordered }
+
+ fun isStriped(isStriped: Boolean) = apply { this.isStriped = isStriped }
+
+ fun isCompact(isCompact: Boolean) = apply { this.isCompact = isCompact }
+
+ fun caption(caption: RichText) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockTable
+ return type == other.type &&
+ cells.contentDeepEquals(other.cells) &&
+ isBordered == other.isBordered &&
+ isStriped == other.isStriped &&
+ isCompact == other.isCompact &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + cells.contentDeepHashCode()
+ result = 31 * result + (isBordered?.hashCode() ?: 0)
+ result = 31 * result + (isStriped?.hashCode() ?: 0)
+ result = 31 * result + (isCompact?.hashCode() ?: 0)
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockTable(type=$type, cells=${cells.contentDeepToString()}, isBordered=$isBordered, isStriped=$isStriped, isCompact=$isCompact, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockThinking.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockThinking.kt
new file mode 100644
index 000000000..a98b43a11
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockThinking.kt
@@ -0,0 +1,27 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+class InputRichBlockThinking(
+ @get:JvmName("text") val text: RichText
+) : InputRichBlock {
+
+ override val type: String = InputRichBlockType.THINKING
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockThinking
+ return type == other.type &&
+ text == other.text
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + text.hashCode()
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockThinking(type=$type, text=$text)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockType.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockType.kt
new file mode 100644
index 000000000..ccea407aa
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockType.kt
@@ -0,0 +1,28 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+object InputRichBlockType {
+ const val PARAGRAPH = "paragraph"
+ const val HEADING = "heading"
+ const val PRE = "pre"
+ const val FOOTER = "footer"
+ const val DIVIDER = "divider"
+ const val MATHEMATICAL_EXPRESSION = "mathematical_expression"
+ const val ANCHOR = "anchor"
+ const val LIST = "list"
+ const val BLOCKQUOTE = "blockquote"
+ const val EXPANDABLE_BLOCKQUOTE = "expandable_blockquote"
+ const val PULLQUOTE = "pullquote"
+ const val COLLAGE = "collage"
+ const val SLIDESHOW = "slideshow"
+ const val TABLE = "table"
+ const val DETAILS = "details"
+ const val MAP = "map"
+ const val BUTTONS = "buttons"
+ const val ANIMATION = "animation"
+ const val AUDIO = "audio"
+ const val DOCUMENT = "document"
+ const val PHOTO = "photo"
+ const val VIDEO = "video"
+ const val VOICE_NOTE = "voice_note"
+ const val THINKING = "thinking"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockVideo.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockVideo.kt
new file mode 100644
index 000000000..d4b8968d6
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockVideo.kt
@@ -0,0 +1,41 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.request.InputMediaVideo
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockCaption
+
+class InputRichBlockVideo private constructor(
+ @get:JvmName("video") val video: InputMediaVideo,
+ @get:JvmName("caption") var caption: RichBlockCaption?
+) : InputRichBlock {
+
+ constructor(video: InputMediaVideo) : this(
+ video = video,
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.VIDEO
+
+ override fun inputMedia(): List> = listOf(video)
+
+ fun caption(caption: RichBlockCaption) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockVideo
+ return type == other.type &&
+ video == other.video &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + video.hashCode()
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockVideo(type=$type, video=$video, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockVoiceNote.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockVoiceNote.kt
new file mode 100644
index 000000000..ef8323262
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/richblock/InputRichBlockVoiceNote.kt
@@ -0,0 +1,41 @@
+package com.pengrad.telegrambot.model.request.richmessages.richblock
+
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.model.request.InputMediaVoiceNote
+import com.pengrad.telegrambot.model.richmessages.richblock.RichBlockCaption
+
+class InputRichBlockVoiceNote private constructor(
+ @get:JvmName("voiceNote") val voiceNote: InputMediaVoiceNote,
+ @get:JvmName("caption") var caption: RichBlockCaption?
+) : InputRichBlock {
+
+ constructor(voiceNote: InputMediaVoiceNote) : this(
+ voiceNote = voiceNote,
+ caption = null
+ )
+
+ override val type: String = InputRichBlockType.VOICE_NOTE
+
+ override fun inputMedia(): List> = listOf(voiceNote)
+
+ fun caption(caption: RichBlockCaption) = apply { this.caption = caption }
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as InputRichBlockVoiceNote
+ return type == other.type &&
+ voiceNote == other.voiceNote &&
+ caption == other.caption
+ }
+
+ override fun hashCode(): Int {
+ var result = type.hashCode()
+ result = 31 * result + voiceNote.hashCode()
+ result = 31 * result + (caption?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "InputRichBlockVoiceNote(type=$type, voiceNote=$voiceNote, caption=$caption)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessageButton.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessageButton.kt
new file mode 100644
index 000000000..061641583
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessageButton.kt
@@ -0,0 +1,77 @@
+package com.pengrad.telegrambot.model.richmessages
+
+import com.pengrad.telegrambot.model.WebAppInfo
+import com.pengrad.telegrambot.model.request.CopyTextButton
+import com.pengrad.telegrambot.model.request.DisabledButton
+import com.pengrad.telegrambot.model.request.LoginUrl
+import com.pengrad.telegrambot.model.request.SwitchInlineQueryChosenChat
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+data class RichMessageButton @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ @get:JvmName("style") var style: String? = null,
+ @get:JvmName("url") var url: String? = null,
+ @get:JvmName("callbackData") var callbackData: String? = null,
+ @get:JvmName("webApp") var webApp: WebAppInfo? = null,
+ @get:JvmName("loginUrl") var loginUrl: LoginUrl? = null,
+ @get:JvmName("switchInlineQuery") var switchInlineQuery: String? = null,
+ @get:JvmName("switchInlineQueryCurrentChat") var switchInlineQueryCurrentChat: String? = null,
+ @get:JvmName("switchInlineQueryChosenChat") var switchInlineQueryChosenChat: SwitchInlineQueryChosenChat? = null,
+ @get:JvmName("copyText") var copyText: CopyTextButton? = null,
+ @get:JvmName("disabled") var disabled: DisabledButton? = null
+) {
+
+ fun style(style: String): RichMessageButton {
+ this.style = style
+ return this
+ }
+
+ fun url(url: String): RichMessageButton {
+ this.url = url
+ return this
+ }
+
+ fun callbackData(callbackData: String): RichMessageButton {
+ this.callbackData = callbackData
+ return this
+ }
+
+ fun webApp(webApp: WebAppInfo): RichMessageButton {
+ this.webApp = webApp
+ return this
+ }
+
+ fun loginUrl(loginUrl: LoginUrl): RichMessageButton {
+ this.loginUrl = loginUrl
+ return this
+ }
+
+ fun switchInlineQuery(switchInlineQuery: String): RichMessageButton {
+ this.switchInlineQuery = switchInlineQuery
+ return this
+ }
+
+ fun switchInlineQueryCurrentChat(switchInlineQueryCurrentChat: String): RichMessageButton {
+ this.switchInlineQueryCurrentChat = switchInlineQueryCurrentChat
+ return this
+ }
+
+ fun switchInlineQueryChosenChat(switchInlineQueryChosenChat: SwitchInlineQueryChosenChat): RichMessageButton {
+ this.switchInlineQueryChosenChat = switchInlineQueryChosenChat
+ return this
+ }
+
+ fun copyText(text: String): RichMessageButton {
+ return copyText(CopyTextButton(text))
+ }
+
+ fun copyText(copyText: CopyTextButton): RichMessageButton {
+ this.copyText = copyText
+ return this
+ }
+
+ fun disabled(): RichMessageButton {
+ this.disabled = DisabledButton()
+ return this
+ }
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockButtons.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockButtons.kt
new file mode 100644
index 000000000..bccbf43e1
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockButtons.kt
@@ -0,0 +1,26 @@
+package com.pengrad.telegrambot.model.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.RichMessageButton
+
+class RichBlockButtons(
+ @get:JvmName("buttons") val buttons: Array,
+ @get:JvmName("align") val align: String? = null
+) : RichBlock {
+
+ override val type: String get() = RichBlockType.BUTTONS
+
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (javaClass != other?.javaClass) return false
+ other as RichBlockButtons
+ return buttons.contentEquals(other.buttons) && align == other.align
+ }
+
+ override fun hashCode(): Int {
+ var result = buttons.contentHashCode()
+ result = 31 * result + (align?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String = "RichBlockButtons(buttons=${buttons.contentToString()}, align=$align)"
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDocument.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDocument.kt
new file mode 100644
index 000000000..5a4d57ed6
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDocument.kt
@@ -0,0 +1,10 @@
+package com.pengrad.telegrambot.model.richmessages.richblock
+
+import com.pengrad.telegrambot.model.Document
+
+data class RichBlockDocument(
+ @get:JvmName("document") val document: Document,
+ @get:JvmName("caption") val caption: RichBlockCaption? = null
+) : RichBlock {
+ override val type: String get() = RichBlockType.DOCUMENT
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockExpandableBlockQuotation.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockExpandableBlockQuotation.kt
new file mode 100644
index 000000000..d50710706
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockExpandableBlockQuotation.kt
@@ -0,0 +1,10 @@
+package com.pengrad.telegrambot.model.richmessages.richblock
+
+import com.pengrad.telegrambot.model.richmessages.richtext.RichText
+
+data class RichBlockExpandableBlockQuotation(
+ @get:JvmName("text") val text: RichText,
+ @get:JvmName("credit") val credit: RichText? = null
+) : RichBlock {
+ override val type: String get() = RichBlockType.EXPANDABLE_BLOCKQUOTE
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt
index 409520951..4b9bb5d71 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt
@@ -6,6 +6,7 @@ class RichBlockTable(
@get:JvmName("cells") val cells: Array>,
@get:JvmName("isBordered") val isBordered: Boolean? = null,
@get:JvmName("isStriped") val isStriped: Boolean? = null,
+ @get:JvmName("isCompact") val isCompact: Boolean? = null,
@get:JvmName("caption") val caption: RichText? = null
) : RichBlock {
@@ -18,6 +19,7 @@ class RichBlockTable(
return cells.contentDeepEquals(other.cells) &&
isBordered == other.isBordered &&
isStriped == other.isStriped &&
+ isCompact == other.isCompact &&
caption == other.caption
}
@@ -25,9 +27,10 @@ class RichBlockTable(
var result = cells.contentDeepHashCode()
result = 31 * result + (isBordered?.hashCode() ?: 0)
result = 31 * result + (isStriped?.hashCode() ?: 0)
+ result = 31 * result + (isCompact?.hashCode() ?: 0)
result = 31 * result + (caption?.hashCode() ?: 0)
return result
}
- override fun toString(): String = "RichBlockTable(cells=${cells.contentDeepToString()}, isBordered=$isBordered, isStriped=$isStriped, caption=$caption)"
+ override fun toString(): String = "RichBlockTable(cells=${cells.contentDeepToString()}, isBordered=$isBordered, isStriped=$isStriped, isCompact=$isCompact, caption=$caption)"
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt
index 7408aa18e..c5444939b 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt
@@ -10,14 +10,17 @@ object RichBlockType {
const val ANCHOR = "anchor"
const val LIST = "list"
const val BLOCKQUOTE = "blockquote"
+ const val EXPANDABLE_BLOCKQUOTE = "expandable_blockquote"
const val PULLQUOTE = "pullquote"
const val COLLAGE = "collage"
const val SLIDESHOW = "slideshow"
const val TABLE = "table"
const val DETAILS = "details"
const val MAP = "map"
+ const val BUTTONS = "buttons"
const val ANIMATION = "animation"
const val AUDIO = "audio"
+ const val DOCUMENT = "document"
const val PHOTO = "photo"
const val VIDEO = "video"
const val VOICE_NOTE = "voice_note"
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt
index 57a3191c2..fca392891 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextAnchor(
- @get:JvmName("name") val name: String
-) : RichText {
- override val type: String get() = RichTextType.ANCHOR
-}
+data class RichTextAnchor @JvmOverloads constructor(
+ @get:JvmName("name") val name: String,
+ override val type: String = RichTextType.ANCHOR
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt
index 15759d4de..1f3bd9b55 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextAnchorLink(
+data class RichTextAnchorLink @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("anchorName") val anchorName: String
-) : RichText {
- override val type: String get() = RichTextType.ANCHOR_LINK
-}
+ @get:JvmName("anchorName") val anchorName: String,
+ override val type: String = RichTextType.ANCHOR_LINK
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt
index e30a640b1..9eeaa7625 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextBankCardNumber(
+data class RichTextBankCardNumber @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("bankCardNumber") val bankCardNumber: String
-) : RichText {
- override val type: String get() = RichTextType.BANK_CARD_NUMBER
-}
+ @get:JvmName("bankCardNumber") val bankCardNumber: String,
+ override val type: String = RichTextType.BANK_CARD_NUMBER
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt
index abe838685..b9f0e2f21 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextBold(
- @get:JvmName("text") val text: RichText
-) : RichText {
- override val type: String get() = RichTextType.BOLD
-}
+data class RichTextBold @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ override val type: String = RichTextType.BOLD
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt
index 2ccfa4815..505788bb3 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextBotCommand(
+data class RichTextBotCommand @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("botCommand") val botCommand: String
-) : RichText {
- override val type: String get() = RichTextType.BOT_COMMAND
-}
+ @get:JvmName("botCommand") val botCommand: String,
+ override val type: String = RichTextType.BOT_COMMAND
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextButton.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextButton.kt
new file mode 100644
index 000000000..2ced1084f
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextButton.kt
@@ -0,0 +1,8 @@
+package com.pengrad.telegrambot.model.richmessages.richtext
+
+import com.pengrad.telegrambot.model.richmessages.RichMessageButton
+
+data class RichTextButton @JvmOverloads constructor(
+ @get:JvmName("button") val button: RichMessageButton,
+ override val type: String = RichTextType.BUTTON
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt
index 2ee11987f..b1809dfa1 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextCashtag(
+data class RichTextCashtag @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("cashtag") val cashtag: String
-) : RichText {
- override val type: String get() = RichTextType.CASHTAG
-}
+ @get:JvmName("cashtag") val cashtag: String,
+ override val type: String = RichTextType.CASHTAG
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt
index a43219bb0..f209f2291 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextCode(
- @get:JvmName("text") val text: RichText
-) : RichText {
- override val type: String get() = RichTextType.CODE
-}
+data class RichTextCode @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ override val type: String = RichTextType.CODE
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt
index 6f35924a2..6ef3ee4e8 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextCustomEmoji(
+data class RichTextCustomEmoji @JvmOverloads constructor(
@get:JvmName("customEmojiId") val customEmojiId: String,
- @get:JvmName("alternativeText") val alternativeText: String
-) : RichText {
- override val type: String get() = RichTextType.CUSTOM_EMOJI
-}
+ @get:JvmName("alternativeText") val alternativeText: String,
+ override val type: String = RichTextType.CUSTOM_EMOJI
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt
index ff5c1d82d..a5b2ea274 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt
@@ -1,9 +1,8 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextDateTime(
+data class RichTextDateTime @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
@get:JvmName("unixTime") val unixTime: Long,
- @get:JvmName("dateTimeFormat") val dateTimeFormat: String
-) : RichText {
- override val type: String get() = RichTextType.DATE_TIME
-}
+ @get:JvmName("dateTimeFormat") val dateTimeFormat: String,
+ override val type: String = RichTextType.DATE_TIME
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt
index 4acad159d..a5715d02a 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextEmailAddress(
+data class RichTextEmailAddress @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("emailAddress") val emailAddress: String
-) : RichText {
- override val type: String get() = RichTextType.EMAIL_ADDRESS
-}
+ @get:JvmName("emailAddress") val emailAddress: String,
+ override val type: String = RichTextType.EMAIL_ADDRESS
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt
index ccc8dc23b..92159a7fb 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextHashtag(
+data class RichTextHashtag @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("hashtag") val hashtag: String
-) : RichText {
- override val type: String get() = RichTextType.HASHTAG
-}
+ @get:JvmName("hashtag") val hashtag: String,
+ override val type: String = RichTextType.HASHTAG
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt
index d8d19b32b..858bfeec9 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextItalic(
- @get:JvmName("text") val text: RichText
-) : RichText {
- override val type: String get() = RichTextType.ITALIC
-}
+data class RichTextItalic @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ override val type: String = RichTextType.ITALIC
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt
index 5e964d97c..1c47950aa 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextMarked(
- @get:JvmName("text") val text: RichText
-) : RichText {
- override val type: String get() = RichTextType.MARKED
-}
+data class RichTextMarked @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ override val type: String = RichTextType.MARKED
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt
index 8cae1cf26..8703c3129 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextMathematicalExpression(
- @get:JvmName("expression") val expression: String
-) : RichText {
- override val type: String get() = RichTextType.MATHEMATICAL_EXPRESSION
-}
+data class RichTextMathematicalExpression @JvmOverloads constructor(
+ @get:JvmName("expression") val expression: String,
+ override val type: String = RichTextType.MATHEMATICAL_EXPRESSION
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt
index d354e0985..67562d890 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextMention(
+data class RichTextMention @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("username") val username: String
-) : RichText {
- override val type: String get() = RichTextType.MENTION
-}
+ @get:JvmName("username") val username: String,
+ override val type: String = RichTextType.MENTION
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt
index 60a5b71b6..757bdee0b 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextPhoneNumber(
+data class RichTextPhoneNumber @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("phoneNumber") val phoneNumber: String
-) : RichText {
- override val type: String get() = RichTextType.PHONE_NUMBER
-}
+ @get:JvmName("phoneNumber") val phoneNumber: String,
+ override val type: String = RichTextType.PHONE_NUMBER
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt
index 09700dbc0..f37a0d20a 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextReference(
+data class RichTextReference @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("name") val name: String
-) : RichText {
- override val type: String get() = RichTextType.REFERENCE
-}
+ @get:JvmName("name") val name: String,
+ override val type: String = RichTextType.REFERENCE
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt
index 35f1a3c90..7f5a2c215 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextReferenceLink(
+data class RichTextReferenceLink @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("referenceName") val referenceName: String
-) : RichText {
- override val type: String get() = RichTextType.REFERENCE_LINK
-}
+ @get:JvmName("referenceName") val referenceName: String,
+ override val type: String = RichTextType.REFERENCE_LINK
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt
index e3138bb41..19faf78db 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextSpoiler(
- @get:JvmName("text") val text: RichText
-) : RichText {
- override val type: String get() = RichTextType.SPOILER
-}
+data class RichTextSpoiler @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ override val type: String = RichTextType.SPOILER
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt
index 932a2a1fe..7817a7dca 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextStrikethrough(
- @get:JvmName("text") val text: RichText
-) : RichText {
- override val type: String get() = RichTextType.STRIKETHROUGH
-}
+data class RichTextStrikethrough @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ override val type: String = RichTextType.STRIKETHROUGH
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt
index 118ad673a..8c3bd322c 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextSubscript(
- @get:JvmName("text") val text: RichText
-) : RichText {
- override val type: String get() = RichTextType.SUBSCRIPT
-}
+data class RichTextSubscript @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ override val type: String = RichTextType.SUBSCRIPT
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt
index 5118f307f..61ca5ac97 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextSuperscript(
- @get:JvmName("text") val text: RichText
-) : RichText {
- override val type: String get() = RichTextType.SUPERSCRIPT
-}
+data class RichTextSuperscript @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ override val type: String = RichTextType.SUPERSCRIPT
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt
index f3d0c640e..3d9511bd7 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt
@@ -2,9 +2,8 @@ package com.pengrad.telegrambot.model.richmessages.richtext
import com.pengrad.telegrambot.model.User
-data class RichTextTextMention(
+data class RichTextTextMention @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("user") val user: User
-) : RichText {
- override val type: String get() = RichTextType.TEXT_MENTION
-}
+ @get:JvmName("user") val user: User,
+ override val type: String = RichTextType.TEXT_MENTION
+) : 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 429d79d9a..10084a90a 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
@@ -22,6 +22,7 @@ object RichTextType {
const val HASHTAG = "hashtag"
const val CASHTAG = "cashtag"
const val BOT_COMMAND = "bot_command"
+ const val BUTTON = "button"
const val ANCHOR = "anchor"
const val ANCHOR_LINK = "anchor_link"
const val REFERENCE = "reference"
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt
index fb0fba3e0..5855182ec 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt
@@ -1,7 +1,6 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextUnderline(
- @get:JvmName("text") val text: RichText
-) : RichText {
- override val type: String get() = RichTextType.UNDERLINE
-}
+data class RichTextUnderline @JvmOverloads constructor(
+ @get:JvmName("text") val text: RichText,
+ override val type: String = RichTextType.UNDERLINE
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt
index 0fda6a550..72ea1cdd0 100644
--- a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt
@@ -1,8 +1,7 @@
package com.pengrad.telegrambot.model.richmessages.richtext
-data class RichTextUrl(
+data class RichTextUrl @JvmOverloads constructor(
@get:JvmName("text") val text: RichText,
- @get:JvmName("url") val url: String
-) : RichText {
- override val type: String get() = RichTextType.URL
-}
+ @get:JvmName("url") val url: String,
+ override val type: String = RichTextType.URL
+) : RichText
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java b/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java
index 4a3aeb281..6d4614483 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java
+++ b/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java
@@ -3,17 +3,22 @@
import com.pengrad.telegrambot.model.LinkPreviewOptions;
import com.pengrad.telegrambot.model.MessageEntity;
import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup;
+import com.pengrad.telegrambot.model.request.InputMedia;
import com.pengrad.telegrambot.model.request.ParseMode;
import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage;
import com.pengrad.telegrambot.response.BaseResponse;
import com.pengrad.telegrambot.response.SendResponse;
+import java.util.Map;
+
/**
* Stas Parshin
* 07 May 2016
*/
public class EditMessageText extends BaseRequest {
+ private boolean isMultipart = false;
+
public EditMessageText(Object chatId, int messageId, String text) {
super(SendResponse.class);
add("chat_id", chatId).add("message_id", messageId).add("text", text);
@@ -27,11 +32,32 @@ public EditMessageText(String inlineMessageId, String text) {
public EditMessageText(Object chatId, int messageId, InputRichMessage richMessage) {
super(SendResponse.class);
add("chat_id", chatId).add("message_id", messageId).add("rich_message", richMessage);
+ addAttachments(richMessage);
}
public EditMessageText(String inlineMessageId, InputRichMessage richMessage) {
super(BaseResponse.class);
add("inline_message_id", inlineMessageId).add("rich_message", richMessage);
+ addAttachments(richMessage);
+ }
+
+ private void addAttachments(InputRichMessage richMessage) {
+ for (InputMedia> m : richMessage.inputMedia()) {
+ Map attachments = m.getAttachments();
+ if (attachments != null && attachments.size() > 0) {
+ addAll(attachments);
+ isMultipart = true;
+ }
+ if (m.inputFile() != null) {
+ add(m.getInputFileId(), m.inputFile());
+ isMultipart = true;
+ }
+ }
+ }
+
+ @Override
+ public boolean isMultipart() {
+ return isMultipart;
}
public EditMessageText parseMode(ParseMode parseMode) {
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/PromoteChatMember.java b/library/src/main/java/com/pengrad/telegrambot/request/PromoteChatMember.java
index 240cd84ce..c622c452e 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/PromoteChatMember.java
+++ b/library/src/main/java/com/pengrad/telegrambot/request/PromoteChatMember.java
@@ -80,4 +80,8 @@ public PromoteChatMember canPromoteMembers(boolean canPromoteMembers) {
public PromoteChatMember canManageTags(boolean canManageTags) {
return add("can_manage_tags", canManageTags);
}
+
+ public PromoteChatMember canSendWelcomeMessages(boolean canSendWelcomeMessages) {
+ return add("can_send_welcome_messages", canSendWelcomeMessages);
+ }
}
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 c7995c243..b2015867f 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt
@@ -1,6 +1,7 @@
package com.pengrad.telegrambot.request
import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
@@ -102,6 +103,7 @@ class SendAnimation private constructor(
var duration: Int? by optionalRequestParameter()
var width: Int? by optionalRequestParameter()
var height: Int? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun caption(caption: String) = apply { this.caption = caption }
@@ -121,4 +123,5 @@ class SendAnimation private constructor(
fun height(height: Int) = apply { this.height = height }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 c47f2931c..30f44bbdf 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt
@@ -1,6 +1,7 @@
package com.pengrad.telegrambot.request
import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
@@ -99,6 +100,7 @@ class SendAudio private constructor(
var duration: Int? by optionalRequestParameter()
var performer: String? by optionalRequestParameter()
var title: String? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun caption(caption: String) = applySelf { this.caption = caption }
@@ -114,4 +116,5 @@ class SendAudio private constructor(
fun title(title: String) = applySelf { this.title = title }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 293ba495d..aaa1ae88e 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt
@@ -1,5 +1,6 @@
package com.pengrad.telegrambot.request
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
import com.pengrad.telegrambot.utility.kotlin.requestParameter
@@ -44,9 +45,11 @@ class SendContact private constructor(
var lastName: String? by optionalRequestParameter()
var vcard: String? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun lastName(lastName: String) = apply { this.lastName = lastName }
fun vcard(vcard: String) = apply { this.vcard = vcard }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 07415bf77..f755f0e42 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt
@@ -1,6 +1,7 @@
package com.pengrad.telegrambot.request
import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
@@ -98,6 +99,7 @@ class SendDocument private constructor(
var captionEntities: List? by optionalRequestParameter()
var disableContentTypeDetection: Boolean? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun caption(caption: String) = applySelf { this.caption = caption }
@@ -109,4 +111,5 @@ class SendDocument private constructor(
fun disableContentTypeDetection(disableContentTypeDetection: Boolean) = applySelf { this.disableContentTypeDetection = disableContentTypeDetection }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 4fee6d647..db0632a96 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendLivePhoto.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendLivePhoto.kt
@@ -1,6 +1,7 @@
package com.pengrad.telegrambot.request
import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
@@ -208,6 +209,7 @@ class SendLivePhoto private constructor(
var captionEntities: List? by optionalRequestParameter()
var showCaptionAboveMedia: Boolean? by optionalRequestParameter()
var hasSpoiler: Boolean? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun caption(caption: String) = applySelf { this.caption = caption }
fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode }
@@ -215,4 +217,6 @@ class SendLivePhoto private constructor(
fun captionEntities(vararg captionEntities: MessageEntity) = applySelf { this.captionEntities = captionEntities.toList() }
fun showCaptionAboveMedia(showCaptionAboveMedia: Boolean) = applySelf { this.showCaptionAboveMedia = showCaptionAboveMedia }
fun hasSpoiler(hasSpoiler: Boolean) = applySelf { this.hasSpoiler = hasSpoiler }
+
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
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 118852969..be7ed73b6 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt
@@ -1,5 +1,6 @@
package com.pengrad.telegrambot.request
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
import com.pengrad.telegrambot.utility.kotlin.requestParameter
@@ -46,6 +47,7 @@ class SendLocation private constructor(
var livePeriod: Int? by optionalRequestParameter()
var heading: Int? by optionalRequestParameter()
var proximityAlertRadius: Int? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun horizontalAccuracy(horizontalAccuracy: Float) = applySelf { this.horizontalAccuracy = horizontalAccuracy }
@@ -55,4 +57,5 @@ class SendLocation private constructor(
fun proximityAlertRadius(proximityAlertRadius: Int) = applySelf { this.proximityAlertRadius = proximityAlertRadius }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 92e1754f7..aca955d4d 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt
@@ -2,6 +2,7 @@ package com.pengrad.telegrambot.request
import com.pengrad.telegrambot.model.LinkPreviewOptions
import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
@@ -43,6 +44,7 @@ class SendMessage private constructor(
var parseMode: ParseMode? by optionalRequestParameter()
var entities: List? by optionalRequestParameter()
var linkPreviewOptions: LinkPreviewOptions? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode }
@@ -52,4 +54,5 @@ class SendMessage private constructor(
fun linkPreviewOptions(linkPreviewOptions: LinkPreviewOptions) = applySelf { this.linkPreviewOptions = linkPreviewOptions}
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendMessageDraft.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendMessageDraft.kt
index 428f4445f..41b9f9f94 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendMessageDraft.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendMessageDraft.kt
@@ -22,6 +22,8 @@ class SendMessageDraft(
var messageThreadId: Long? by optionalRequestParameter()
var parseMode: ParseMode? by optionalRequestParameter()
var entities: List? by optionalRequestParameter()
+ var canStop: Boolean? by optionalRequestParameter()
+ var keepOnStop: Boolean? by optionalRequestParameter()
fun text(text: String) = applySelf { this.text = text }
@@ -31,4 +33,8 @@ class SendMessageDraft(
fun entities(entities: List) = applySelf { this.entities = entities }
+ fun canStop(canStop: Boolean) = applySelf { this.canStop = canStop }
+
+ fun keepOnStop(keepOnStop: Boolean) = applySelf { this.keepOnStop = keepOnStop }
+
}
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 97eeee493..031fd37d4 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt
@@ -1,6 +1,7 @@
package com.pengrad.telegrambot.request
import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
@@ -97,6 +98,7 @@ class SendPhoto private constructor(
var captionEntities: List? by optionalRequestParameter()
var showCaptionAboveMedia: Boolean? by optionalRequestParameter()
var hasSpoiler: Boolean? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun caption(caption: String) = applySelf { this.caption = caption }
@@ -110,4 +112,5 @@ class SendPhoto private constructor(
fun hasSpoiler(hasSpoiler: Boolean) = applySelf { this.hasSpoiler = hasSpoiler }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 b0a933c43..a2a266ab0 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt
@@ -1,5 +1,6 @@
package com.pengrad.telegrambot.request
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
import java.io.File
@@ -91,7 +92,9 @@ class SendSticker private constructor(
}
var emoji: String? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun emoji(emoji: String) = applySelf { this.emoji = emoji }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 748103da9..c69aaac36 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt
@@ -1,5 +1,6 @@
package com.pengrad.telegrambot.request
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
import com.pengrad.telegrambot.utility.kotlin.requestParameter
@@ -75,6 +76,7 @@ class SendVenue private constructor(
var googlePlaceId: String? by optionalRequestParameter()
var googlePlaceType: String? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun foursquareId(foursquareId: String) = applySelf { this.foursquareId = foursquareId }
@@ -84,4 +86,5 @@ class SendVenue private constructor(
fun googlePlaceType(googlePlaceType: String) = applySelf { this.googlePlaceType = googlePlaceType }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 a0c5c2f10..05470774b 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt
@@ -1,6 +1,7 @@
package com.pengrad.telegrambot.request
import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
@@ -109,6 +110,7 @@ class SendVideo private constructor(
var hasSpoiler: Boolean? by optionalRequestParameter()
var supportsStreaming: Boolean? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun duration(duration: Int) = applySelf { this.duration = duration }
@@ -138,4 +140,5 @@ class SendVideo private constructor(
fun supportsStreaming(supportsStreaming: Boolean) = applySelf { this.supportsStreaming = supportsStreaming }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 28862020d..4957fd739 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt
@@ -1,5 +1,6 @@
package com.pengrad.telegrambot.request
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
import java.io.File
@@ -92,9 +93,11 @@ class SendVideoNote private constructor(
var duration: Int? by optionalRequestParameter()
var length: Int? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun duration(duration: Int) = apply { this.duration = duration }
fun length(length: Int) = apply { this.length = length }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
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 44fd60f42..a504d604e 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt
@@ -1,6 +1,7 @@
package com.pengrad.telegrambot.request
import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.model.request.ParseMode
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
@@ -96,6 +97,7 @@ class SendVoice private constructor(
var parseMode: ParseMode? by optionalRequestParameter()
var captionEntities: List? by optionalRequestParameter()
var duration: Int? by optionalRequestParameter()
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
fun caption(caption: String) = applySelf { this.caption = caption }
@@ -107,4 +109,5 @@ class SendVoice private constructor(
fun duration(duration: Int) = applySelf { this.duration = duration }
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
}
\ No newline at end of file
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/DeleteEphemeralMessage.kt b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/DeleteEphemeralMessage.kt
new file mode 100644
index 000000000..4160dbb41
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/DeleteEphemeralMessage.kt
@@ -0,0 +1,34 @@
+package com.pengrad.telegrambot.request.ephemeral
+
+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
+
+class DeleteEphemeralMessage private constructor(
+ chatId: Long?,
+ channelUsername: String?,
+ receiverUserId: Long,
+ ephemeralMessageId: Long
+) : KBaseRequest(BaseResponse::class) {
+
+ constructor(chatId: Long, receiverUserId: Long, ephemeralMessageId: Long) : this(
+ chatId = chatId,
+ channelUsername = null,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId
+ )
+
+ constructor(channelUsername: String, receiverUserId: Long, ephemeralMessageId: Long) : this(
+ chatId = null,
+ channelUsername = channelUsername,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId
+ )
+
+ val chatId: Long? by optionalRequestParameter(chatId, customParameterName = "chat_id")
+ val channelUsername: String? by optionalRequestParameter(channelUsername, customParameterName = "chat_id")
+ val receiverUserId: Long by requestParameter(receiverUserId)
+ val ephemeralMessageId: Long by requestParameter(ephemeralMessageId)
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageCaption.kt b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageCaption.kt
new file mode 100644
index 000000000..27cbe8d0a
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageCaption.kt
@@ -0,0 +1,55 @@
+package com.pengrad.telegrambot.request.ephemeral
+
+import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup
+import com.pengrad.telegrambot.model.request.ParseMode
+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
+
+class EditEphemeralMessageCaption private constructor(
+ chatId: Long?,
+ channelUsername: String?,
+ receiverUserId: Long,
+ ephemeralMessageId: Long
+) : KBaseRequest(BaseResponse::class) {
+
+ constructor(chatId: Long, receiverUserId: Long, ephemeralMessageId: Long) : this(
+ chatId = chatId,
+ channelUsername = null,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId
+ )
+
+ constructor(channelUsername: String, receiverUserId: Long, ephemeralMessageId: Long) : this(
+ chatId = null,
+ channelUsername = channelUsername,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId
+ )
+
+ val chatId: Long? by optionalRequestParameter(chatId, customParameterName = "chat_id")
+ val channelUsername: String? by optionalRequestParameter(channelUsername, customParameterName = "chat_id")
+ val receiverUserId: Long by requestParameter(receiverUserId)
+ val ephemeralMessageId: Long by requestParameter(ephemeralMessageId)
+
+ var caption: String? by optionalRequestParameter()
+ var parseMode: ParseMode? by optionalRequestParameter()
+ var captionEntities: List? by optionalRequestParameter()
+ var showCaptionAboveMedia: Boolean? by optionalRequestParameter()
+ var replyMarkup: InlineKeyboardMarkup? by optionalRequestParameter()
+
+ 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 replyMarkup(replyMarkup: InlineKeyboardMarkup) = applySelf { this.replyMarkup = replyMarkup }
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageMedia.kt b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageMedia.kt
new file mode 100644
index 000000000..974b9af96
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageMedia.kt
@@ -0,0 +1,64 @@
+package com.pengrad.telegrambot.request.ephemeral
+
+import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup
+import com.pengrad.telegrambot.model.request.InputMedia
+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
+
+class EditEphemeralMessageMedia private constructor(
+ chatId: Long?,
+ channelUsername: String?,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ media: InputMedia<*>
+) : KBaseRequest(BaseResponse::class) {
+
+ constructor(chatId: Long, receiverUserId: Long, ephemeralMessageId: Long, media: InputMedia<*>) : this(
+ chatId = chatId,
+ channelUsername = null,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId,
+ media = media
+ )
+
+ constructor(channelUsername: String, receiverUserId: Long, ephemeralMessageId: Long, media: InputMedia<*>) : this(
+ chatId = null,
+ channelUsername = channelUsername,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId,
+ media = media
+ )
+
+ val chatId: Long? by optionalRequestParameter(chatId, customParameterName = "chat_id")
+ val channelUsername: String? by optionalRequestParameter(channelUsername, customParameterName = "chat_id")
+ val receiverUserId: Long by requestParameter(receiverUserId)
+ val ephemeralMessageId: Long by requestParameter(ephemeralMessageId)
+ val media: InputMedia<*> by requestParameter(media)
+
+ var replyMarkup: InlineKeyboardMarkup? by optionalRequestParameter()
+
+ private var multipart = false
+
+ init {
+ val attachments = media.attachments
+ if (attachments != null && attachments.isNotEmpty()) {
+ addAll(attachments)
+ multipart = true
+ }
+ media.inputFile()?.let {
+ add(media.inputFileId, it)
+ multipart = true
+ }
+ }
+
+ fun replyMarkup(replyMarkup: InlineKeyboardMarkup) = applySelf { this.replyMarkup = replyMarkup }
+
+ override fun isMultipart() = multipart
+
+ override fun getFileName(): String = media.fileName
+
+ override fun getContentType(): String = media.contentType
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageReplyMarkup.kt b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageReplyMarkup.kt
new file mode 100644
index 000000000..e81545371
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageReplyMarkup.kt
@@ -0,0 +1,39 @@
+package com.pengrad.telegrambot.request.ephemeral
+
+import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup
+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
+
+class EditEphemeralMessageReplyMarkup private constructor(
+ chatId: Long?,
+ channelUsername: String?,
+ receiverUserId: Long,
+ ephemeralMessageId: Long
+) : KBaseRequest(BaseResponse::class) {
+
+ constructor(chatId: Long, receiverUserId: Long, ephemeralMessageId: Long) : this(
+ chatId = chatId,
+ channelUsername = null,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId
+ )
+
+ constructor(channelUsername: String, receiverUserId: Long, ephemeralMessageId: Long) : this(
+ chatId = null,
+ channelUsername = channelUsername,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId
+ )
+
+ val chatId: Long? by optionalRequestParameter(chatId, customParameterName = "chat_id")
+ val channelUsername: String? by optionalRequestParameter(channelUsername, customParameterName = "chat_id")
+ val receiverUserId: Long by requestParameter(receiverUserId)
+ val ephemeralMessageId: Long by requestParameter(ephemeralMessageId)
+
+ var replyMarkup: InlineKeyboardMarkup? by optionalRequestParameter()
+
+ fun replyMarkup(replyMarkup: InlineKeyboardMarkup) = applySelf { this.replyMarkup = replyMarkup }
+
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageText.kt b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageText.kt
new file mode 100644
index 000000000..2bec44088
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/request/ephemeral/EditEphemeralMessageText.kt
@@ -0,0 +1,98 @@
+package com.pengrad.telegrambot.request.ephemeral
+
+import com.pengrad.telegrambot.model.LinkPreviewOptions
+import com.pengrad.telegrambot.model.MessageEntity
+import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup
+import com.pengrad.telegrambot.model.request.ParseMode
+import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage
+import com.pengrad.telegrambot.request.KBaseRequest
+import com.pengrad.telegrambot.response.BaseResponse
+import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
+import com.pengrad.telegrambot.utility.kotlin.requestParameter
+
+class EditEphemeralMessageText private constructor(
+ chatId: Long?,
+ channelUsername: String?,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ text: String?,
+ richMessage: InputRichMessage?
+) : KBaseRequest(BaseResponse::class) {
+
+ constructor(chatId: Long, receiverUserId: Long, ephemeralMessageId: Long, text: String) : this(
+ chatId = chatId,
+ channelUsername = null,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId,
+ text = text,
+ richMessage = null
+ )
+
+ constructor(channelUsername: String, receiverUserId: Long, ephemeralMessageId: Long, text: String) : this(
+ chatId = null,
+ channelUsername = channelUsername,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId,
+ text = text,
+ richMessage = null
+ )
+
+ constructor(chatId: Long, receiverUserId: Long, ephemeralMessageId: Long, richMessage: InputRichMessage) : this(
+ chatId = chatId,
+ channelUsername = null,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId,
+ text = null,
+ richMessage = richMessage
+ )
+
+ constructor(channelUsername: String, receiverUserId: Long, ephemeralMessageId: Long, richMessage: InputRichMessage) : this(
+ chatId = null,
+ channelUsername = channelUsername,
+ receiverUserId = receiverUserId,
+ ephemeralMessageId = ephemeralMessageId,
+ text = null,
+ richMessage = richMessage
+ )
+
+ val chatId: Long? by optionalRequestParameter(chatId, customParameterName = "chat_id")
+ val channelUsername: String? by optionalRequestParameter(channelUsername, customParameterName = "chat_id")
+ val receiverUserId: Long by requestParameter(receiverUserId)
+ val ephemeralMessageId: Long by requestParameter(ephemeralMessageId)
+ val text: String? by optionalRequestParameter(text)
+ val richMessage: InputRichMessage? by optionalRequestParameter(richMessage)
+
+ var parseMode: ParseMode? by optionalRequestParameter()
+ var entities: List? by optionalRequestParameter()
+ var linkPreviewOptions: LinkPreviewOptions? by optionalRequestParameter()
+ var replyMarkup: InlineKeyboardMarkup? by optionalRequestParameter()
+
+ private var multipart = false
+
+ init {
+ richMessage?.inputMedia()?.forEach { media ->
+ val attachments = media.attachments
+ if (attachments != null && attachments.isNotEmpty()) {
+ addAll(attachments)
+ multipart = true
+ }
+ media.inputFile()?.let {
+ add(media.inputFileId, it)
+ multipart = true
+ }
+ }
+ }
+
+ fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode }
+
+ fun entities(entities: List) = applySelf { this.entities = entities }
+
+ fun entities(vararg entities: MessageEntity) = entities(entities.toList())
+
+ fun linkPreviewOptions(linkPreviewOptions: LinkPreviewOptions) = applySelf { this.linkPreviewOptions = linkPreviewOptions }
+
+ fun replyMarkup(replyMarkup: InlineKeyboardMarkup) = applySelf { this.replyMarkup = replyMarkup }
+
+ override fun isMultipart() = multipart
+
+}
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 72fa1f9ff..845b5a1b3 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
@@ -1,8 +1,10 @@
package com.pengrad.telegrambot.request.richmessages
+import com.pengrad.telegrambot.model.ephemeral.EphemeralMessageParameters
import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage
import com.pengrad.telegrambot.request.AbstractSendRequest
import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters
+import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter
import com.pengrad.telegrambot.utility.kotlin.requestParameter
@Suppress("unused")
@@ -37,4 +39,26 @@ class SendRichMessage private constructor(
}
val richMessage: InputRichMessage by requestParameter(richMessage)
+
+ var ephemeralMessageParameters: EphemeralMessageParameters? by optionalRequestParameter()
+
+ fun ephemeralMessageParameters(ephemeralMessageParameters: EphemeralMessageParameters) = applySelf { this.ephemeralMessageParameters = ephemeralMessageParameters }
+
+ private var multipart = false
+
+ init {
+ for (media in richMessage.inputMedia()) {
+ val attachments = media.attachments
+ if (attachments != null && attachments.isNotEmpty()) {
+ addAll(attachments)
+ multipart = true
+ }
+ media.inputFile()?.let {
+ add(media.inputFileId, it)
+ multipart = true
+ }
+ }
+ }
+
+ override fun isMultipart() = multipart
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt
index 5285729d7..a7c05a687 100644
--- a/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt
@@ -18,6 +18,30 @@ class SendRichMessageDraft(
val richMessage: InputRichMessage by requestParameter(richMessage)
var messageThreadId: Long? by optionalRequestParameter()
+ var canStop: Boolean? by optionalRequestParameter()
+ var keepOnStop: Boolean? by optionalRequestParameter()
fun messageThreadId(messageThreadId: Long) = applySelf { this.messageThreadId = messageThreadId }
+
+ fun canStop(canStop: Boolean) = applySelf { this.canStop = canStop }
+
+ fun keepOnStop(keepOnStop: Boolean) = applySelf { this.keepOnStop = keepOnStop }
+
+ private var multipart = false
+
+ init {
+ for (media in richMessage.inputMedia()) {
+ val attachments = media.attachments
+ if (attachments != null && attachments.isNotEmpty()) {
+ addAll(attachments)
+ multipart = true
+ }
+ media.inputFile()?.let {
+ add(media.inputFileId, it)
+ multipart = true
+ }
+ }
+ }
+
+ override fun isMultipart() = multipart
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt
index 53b812639..c349ad240 100644
--- a/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt
@@ -19,14 +19,17 @@ object RichBlockTypeAdapter : JsonDeserializer {
RichBlockType.ANCHOR to RichBlockAnchor::class,
RichBlockType.LIST to RichBlockList::class,
RichBlockType.BLOCKQUOTE to RichBlockBlockQuotation::class,
+ RichBlockType.EXPANDABLE_BLOCKQUOTE to RichBlockExpandableBlockQuotation::class,
RichBlockType.PULLQUOTE to RichBlockPullQuotation::class,
RichBlockType.COLLAGE to RichBlockCollage::class,
RichBlockType.SLIDESHOW to RichBlockSlideshow::class,
RichBlockType.TABLE to RichBlockTable::class,
RichBlockType.DETAILS to RichBlockDetails::class,
RichBlockType.MAP to RichBlockMap::class,
+ RichBlockType.BUTTONS to RichBlockButtons::class,
RichBlockType.ANIMATION to RichBlockAnimation::class,
RichBlockType.AUDIO to RichBlockAudio::class,
+ RichBlockType.DOCUMENT to RichBlockDocument::class,
RichBlockType.PHOTO to RichBlockPhoto::class,
RichBlockType.VIDEO to RichBlockVideo::class,
RichBlockType.VOICE_NOTE to RichBlockVoiceNote::class,
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 a7fc39756..040ac8139 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
@@ -1,13 +1,17 @@
package com.pengrad.telegrambot.utility.gson
+import com.google.gson.JsonArray
import com.google.gson.JsonDeserializationContext
import com.google.gson.JsonDeserializer
import com.google.gson.JsonElement
import com.google.gson.JsonParseException
+import com.google.gson.JsonPrimitive
+import com.google.gson.JsonSerializationContext
+import com.google.gson.JsonSerializer
import com.pengrad.telegrambot.model.richmessages.richtext.*
import java.lang.reflect.Type
-object RichTextTypeAdapter : JsonDeserializer {
+object RichTextTypeAdapter : JsonDeserializer, JsonSerializer {
private val typeMapping = mapOf(
RichTextType.BOLD to RichTextBold::class,
@@ -31,6 +35,7 @@ object RichTextTypeAdapter : JsonDeserializer {
RichTextType.HASHTAG to RichTextHashtag::class,
RichTextType.CASHTAG to RichTextCashtag::class,
RichTextType.BOT_COMMAND to RichTextBotCommand::class,
+ RichTextType.BUTTON to RichTextButton::class,
RichTextType.ANCHOR to RichTextAnchor::class,
RichTextType.ANCHOR_LINK to RichTextAnchorLink::class,
RichTextType.REFERENCE to RichTextReference::class,
@@ -57,4 +62,14 @@ object RichTextTypeAdapter : JsonDeserializer {
else -> RichTextUnknown(RichTextType.UNKNOWN)
}
}
+
+ override fun serialize(src: RichText, type: Type, context: JsonSerializationContext): JsonElement {
+ return when (src) {
+ is RichTextPlain -> JsonPrimitive(src.text)
+ is RichTextArray -> JsonArray().apply {
+ src.elements.forEach { add(context.serialize(it, RichText::class.java)) }
+ }
+ else -> context.serialize(src, src.javaClass)
+ }
+ }
}
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/DeleteEphemeralMessageExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/DeleteEphemeralMessageExtension.kt
new file mode 100644
index 000000000..922d6941c
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/DeleteEphemeralMessageExtension.kt
@@ -0,0 +1,19 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.request.ephemeral.DeleteEphemeralMessage
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.deleteEphemeralMessage(
+ chatId: Long,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ modifier: DeleteEphemeralMessage.() -> Unit = {}
+) = this.execute(DeleteEphemeralMessage(chatId, receiverUserId, ephemeralMessageId), modifier)
+
+inline fun TelegramAware.deleteEphemeralMessage(
+ channelUsername: String,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ modifier: DeleteEphemeralMessage.() -> Unit = {}
+) = this.execute(DeleteEphemeralMessage(channelUsername, receiverUserId, ephemeralMessageId), modifier)
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageCaptionExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageCaptionExtension.kt
new file mode 100644
index 000000000..69d11161b
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageCaptionExtension.kt
@@ -0,0 +1,27 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.request.ephemeral.EditEphemeralMessageCaption
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.editEphemeralMessageCaption(
+ chatId: Long,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ caption: String,
+ modifier: EditEphemeralMessageCaption.() -> Unit = {}
+) = this.execute(EditEphemeralMessageCaption(chatId, receiverUserId, ephemeralMessageId)) {
+ caption(caption)
+ modifier()
+}
+
+inline fun TelegramAware.editEphemeralMessageCaption(
+ channelUsername: String,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ caption: String,
+ modifier: EditEphemeralMessageCaption.() -> Unit = {}
+) = this.execute(EditEphemeralMessageCaption(channelUsername, receiverUserId, ephemeralMessageId)) {
+ caption(caption)
+ modifier()
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageMediaExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageMediaExtension.kt
new file mode 100644
index 000000000..b57513a3c
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageMediaExtension.kt
@@ -0,0 +1,22 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.model.request.InputMedia
+import com.pengrad.telegrambot.request.ephemeral.EditEphemeralMessageMedia
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.editEphemeralMessageMedia(
+ chatId: Long,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ media: InputMedia<*>,
+ modifier: EditEphemeralMessageMedia.() -> Unit = {}
+) = this.execute(EditEphemeralMessageMedia(chatId, receiverUserId, ephemeralMessageId, media), modifier)
+
+inline fun TelegramAware.editEphemeralMessageMedia(
+ channelUsername: String,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ media: InputMedia<*>,
+ modifier: EditEphemeralMessageMedia.() -> Unit = {}
+) = this.execute(EditEphemeralMessageMedia(channelUsername, receiverUserId, ephemeralMessageId, media), modifier)
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageReplyMarkupExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageReplyMarkupExtension.kt
new file mode 100644
index 000000000..9ea5751a6
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageReplyMarkupExtension.kt
@@ -0,0 +1,40 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup
+import com.pengrad.telegrambot.request.ephemeral.EditEphemeralMessageReplyMarkup
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.editEphemeralMessageReplyMarkup(
+ chatId: Long,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ modifier: EditEphemeralMessageReplyMarkup.() -> Unit = {}
+) = this.execute(EditEphemeralMessageReplyMarkup(chatId, receiverUserId, ephemeralMessageId), modifier)
+
+inline fun TelegramAware.editEphemeralMessageReplyMarkup(
+ channelUsername: String,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ modifier: EditEphemeralMessageReplyMarkup.() -> Unit = {}
+) = this.execute(EditEphemeralMessageReplyMarkup(channelUsername, receiverUserId, ephemeralMessageId), modifier)
+
+inline fun TelegramAware.removeEphemeralInlineKeyboard(
+ chatId: Long,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ modifier: EditEphemeralMessageReplyMarkup.() -> Unit = {}
+) = this.editEphemeralMessageReplyMarkup(chatId, receiverUserId, ephemeralMessageId) {
+ replyMarkup(InlineKeyboardMarkup())
+ modifier()
+}
+
+inline fun TelegramAware.removeEphemeralInlineKeyboard(
+ channelUsername: String,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ modifier: EditEphemeralMessageReplyMarkup.() -> Unit = {}
+) = this.editEphemeralMessageReplyMarkup(channelUsername, receiverUserId, ephemeralMessageId) {
+ replyMarkup(InlineKeyboardMarkup())
+ modifier()
+}
diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageTextExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageTextExtension.kt
new file mode 100644
index 000000000..321048ed1
--- /dev/null
+++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/EditEphemeralMessageTextExtension.kt
@@ -0,0 +1,38 @@
+package com.pengrad.telegrambot.utility.kotlin.extension.request
+
+import com.pengrad.telegrambot.TelegramAware
+import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage
+import com.pengrad.telegrambot.request.ephemeral.EditEphemeralMessageText
+import com.pengrad.telegrambot.utility.kotlin.extension.execute
+
+inline fun TelegramAware.editEphemeralMessageText(
+ chatId: Long,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ text: String,
+ modifier: EditEphemeralMessageText.() -> Unit = {}
+) = this.execute(EditEphemeralMessageText(chatId, receiverUserId, ephemeralMessageId, text), modifier)
+
+inline fun TelegramAware.editEphemeralMessageText(
+ channelUsername: String,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ text: String,
+ modifier: EditEphemeralMessageText.() -> Unit = {}
+) = this.execute(EditEphemeralMessageText(channelUsername, receiverUserId, ephemeralMessageId, text), modifier)
+
+inline fun TelegramAware.editEphemeralMessageText(
+ chatId: Long,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ richMessage: InputRichMessage,
+ modifier: EditEphemeralMessageText.() -> Unit = {}
+) = this.execute(EditEphemeralMessageText(chatId, receiverUserId, ephemeralMessageId, richMessage), modifier)
+
+inline fun TelegramAware.editEphemeralMessageText(
+ channelUsername: String,
+ receiverUserId: Long,
+ ephemeralMessageId: Long,
+ richMessage: InputRichMessage,
+ modifier: EditEphemeralMessageText.() -> Unit = {}
+) = this.execute(EditEphemeralMessageText(channelUsername, receiverUserId, ephemeralMessageId, richMessage), modifier)
diff --git a/library/src/test/java/com/pengrad/telegrambot/ModelTest.kt b/library/src/test/java/com/pengrad/telegrambot/ModelTest.kt
index 51ce8cccc..d848bf0d7 100644
--- a/library/src/test/java/com/pengrad/telegrambot/ModelTest.kt
+++ b/library/src/test/java/com/pengrad/telegrambot/ModelTest.kt
@@ -7,6 +7,9 @@ import com.pengrad.telegrambot.model.message.MaybeInaccessibleMessage
import com.pengrad.telegrambot.model.request.InlineKeyboardButton
import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup
import com.pengrad.telegrambot.model.request.ParseMode
+import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage
+import com.pengrad.telegrambot.model.request.richmessages.richblock.InputRichBlockParagraph
+import com.pengrad.telegrambot.model.richmessages.RichMessageButton
import com.pengrad.telegrambot.passport.Credentials
import com.pengrad.telegrambot.passport.decrypt.Decrypt
import nl.jqno.equalsverifier.EqualsVerifier
@@ -37,7 +40,9 @@ class ModelTest {
val excludedPackages = listOf(
ParseMode::class,
BotCommandScope::class,
- Decrypt::class
+ Decrypt::class,
+ InputRichMessage::class,
+ InputRichBlockParagraph::class
).map { it.java.`package`.name }
classes.addAll(Reflections(packages, SubTypesScanner(false))
@@ -91,6 +96,11 @@ class ModelTest {
verifierApi.withIgnoredFields("forum_topic_reopened")
verifierApi.withIgnoredFields("general_forum_topic_hidden")
verifierApi.withIgnoredFields("general_forum_topic_unhidden")
+ verifierApi.withIgnoredFields("community_chat_removed")
+ }
+
+ if (c == InlineKeyboardButton::class.java || c == RichMessageButton::class.java) {
+ verifierApi.withIgnoredFields("disabled")
}
verifierApi.verify()
diff --git a/pom.xml b/pom.xml
index 41763de98..4bc141524 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
4.0.0
com.github.pengrad
java-telegram-bot-api
- 10.1.0
+ 10.3.0
JavaTelegramBotApi
Java API for Telegram Bot API
https://github.com/pengrad/java-telegram-bot-api/