diff --git a/README.md b/README.md index c9ae45cbb..1e6c446c5 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![codecov](https://codecov.io/gh/pengrad/java-telegram-bot-api/branch/master/graph/badge.svg)](https://codecov.io/gh/pengrad/java-telegram-bot-api) Java library for interacting with [Telegram Bot API](https://core.telegram.org/bots/api) -- Full support of all Bot API 10.0 methods +- Full support of all Bot API 10.1 methods - Telegram [Passport](https://core.telegram.org/passport) and Decryption API - Bot [Payments](https://core.telegram.org/bots/payments) - [Gaming Platform](https://telegram.org/blog/games) @@ -13,14 +13,14 @@ Java library for interacting with [Telegram Bot API](https://core.telegram.org/b Gradle: ```groovy -implementation 'com.github.pengrad:java-telegram-bot-api:10.0.0' +implementation 'com.github.pengrad:java-telegram-bot-api:10.1.0' ``` Maven: ```xml com.github.pengrad java-telegram-bot-api - 10.0.0 + 10.1.0 ``` [JAR with all dependencies on release page](https://github.com/pengrad/java-telegram-bot-api/releases) diff --git a/gradle.properties b/gradle.properties index 69db2f62a..4be86b119 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ GROUP=com.github.pengrad -VERSION_NAME=10.0.0 +VERSION_NAME=10.1.0 POM_DESCRIPTION=Java API for Telegram Bot API POM_URL=https://github.com/pengrad/java-telegram-bot-api/ diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java index e928a1b70..af73d609e 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatFullInfo.java @@ -51,7 +51,7 @@ public enum Type { private Integer profile_accent_color_id; private String profile_background_custom_emoji_id; private String emoji_status_custom_emoji_id; - private Integer emoji_status_expiration_date; + private Long emoji_status_expiration_date; private String bio; private Boolean has_private_forwards; private Boolean has_restricted_voice_and_video_messages; @@ -79,6 +79,7 @@ public enum Type { private Integer paid_message_star_count; private UniqueGiftColors unique_gift_colors; private Audio first_profile_audio; + private User guard_bot; public Long id() { return id; @@ -172,7 +173,7 @@ public String emojiStatusCustomEmojiId() { return emoji_status_custom_emoji_id; } - public Integer emojiStatusExpirationDate() { + public Long emojiStatusExpirationDate() { return emoji_status_expiration_date; } @@ -283,6 +284,10 @@ public Audio firstProfileAudio() { return first_profile_audio; } + public User guardBot() { + return guard_bot; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -338,7 +343,8 @@ public boolean equals(Object o) { Objects.equals(rating, chat.rating) && Objects.equals(paid_message_star_count, chat.paid_message_star_count) && Objects.equals(unique_gift_colors, chat.unique_gift_colors) && - Objects.equals(first_profile_audio, chat.first_profile_audio); + Objects.equals(first_profile_audio, chat.first_profile_audio) && + Objects.equals(guard_bot, chat.guard_bot); } @Override @@ -400,6 +406,7 @@ public String toString() { ", paid_message_star_count=" + paid_message_star_count + ", unique_gift_colors=" + unique_gift_colors + ", first_profile_audio=" + first_profile_audio + + ", guard_bot=" + guard_bot + '}'; } } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatInviteLink.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatInviteLink.java index f5c584587..cccab2350 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatInviteLink.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatInviteLink.java @@ -16,7 +16,7 @@ public class ChatInviteLink implements Serializable { private Boolean is_primary; private Boolean is_revoked; private String name; - private Integer expire_date; + private Long expire_date; private Integer member_limit; private Integer pending_join_request_count; @@ -45,7 +45,7 @@ public String name() { return name; } - public Integer expireDate() { + public Long expireDate() { return expire_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java index b067670fd..5d4ecc24e 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatJoinRequest.java @@ -13,9 +13,10 @@ public class ChatJoinRequest implements Serializable { private Chat chat; private User from; private Long user_chat_id; - private Integer date; + private Long date; private String bio; private ChatInviteLink invite_link; + private String query_id; public Chat chat() { return chat; @@ -29,7 +30,7 @@ public Long userChatId() { return user_chat_id; } - public Integer date() { + public Long date() { return date; } @@ -41,6 +42,9 @@ public ChatInviteLink inviteLink() { return invite_link; } + public String queryId() { + return query_id; + } @Override public boolean equals(Object o) { @@ -52,12 +56,13 @@ public boolean equals(Object o) { Objects.equals(user_chat_id, that.user_chat_id) && Objects.equals(date, that.date) && Objects.equals(bio, that.bio) && - Objects.equals(invite_link, that.invite_link); + Objects.equals(invite_link, that.invite_link) && + Objects.equals(query_id, that.query_id); } @Override public int hashCode() { - return Objects.hash(chat, from, user_chat_id, date, bio, invite_link); + return Objects.hash(chat, from, user_chat_id, date, bio, invite_link, query_id); } @Override @@ -69,6 +74,7 @@ public String toString() { ", date=" + date + ", bio=" + bio + ", invite_link=" + invite_link + + ", query_id=" + query_id + '}'; } } 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..5ee8e1751 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatMember.java @@ -19,7 +19,7 @@ public enum Status { private String custom_title; private Boolean is_anonymous; - private Integer until_date; + private Long until_date; private Boolean can_be_edited; private Boolean can_manage_chat; private Boolean can_post_messages; @@ -70,7 +70,7 @@ public Boolean isAnonymous() { return is_anonymous != null && is_anonymous; } - public Integer untilDate() { + public Long untilDate() { return until_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/ChatMemberUpdated.java b/library/src/main/java/com/pengrad/telegrambot/model/ChatMemberUpdated.java index 10ec6ac4f..565594276 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/ChatMemberUpdated.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/ChatMemberUpdated.java @@ -12,7 +12,7 @@ public class ChatMemberUpdated implements Serializable { private Chat chat; private User from; - private Integer date; + private Long date; private ChatMember old_chat_member; private ChatMember new_chat_member; private ChatInviteLink invite_link; @@ -27,7 +27,7 @@ public User from() { return from; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Link.kt b/library/src/main/java/com/pengrad/telegrambot/model/Link.kt new file mode 100644 index 000000000..05a5353d7 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/Link.kt @@ -0,0 +1,5 @@ +package com.pengrad.telegrambot.model + +data class Link( + @get:JvmName("url") val url: String, +) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Message.java b/library/src/main/java/com/pengrad/telegrambot/model/Message.java index 9606ea51d..03756586a 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/Message.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/Message.java @@ -17,6 +17,7 @@ import com.pengrad.telegrambot.model.message.origin.*; import com.pengrad.telegrambot.model.paidmedia.PaidMediaInfo; import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup; +import com.pengrad.telegrambot.model.richmessages.RichMessage; import com.pengrad.telegrambot.model.stars.DirectMessagePriceChanged; import com.pengrad.telegrambot.model.stars.PaidMessagePriceChanged; import com.pengrad.telegrambot.model.suggestedposts.*; @@ -50,7 +51,7 @@ public class Message extends MaybeInaccessibleMessage implements Serializable { private Story reply_to_story; private Integer reply_to_checklist_task_id; private User via_bot; - private Integer edit_date; + private Long edit_date; private Boolean has_protected_content; private Boolean is_from_offline; private Boolean is_paid_post; @@ -64,6 +65,7 @@ public class Message extends MaybeInaccessibleMessage implements Serializable { private LinkPreviewOptions link_preview_options; private SuggestedPostInfo suggested_post_info; private String effect_id; + private RichMessage rich_message; private Audio audio; private PaidMediaInfo paid_media; private Document document; @@ -213,7 +215,7 @@ public User viaBot() { return via_bot; } - public Integer editDate() { + public Long editDate() { return edit_date; } @@ -270,6 +272,10 @@ public String effectId() { return effect_id; } + public RichMessage richMessage() { + return rich_message; + } + public Audio audio() { return audio; } @@ -607,7 +613,7 @@ void setMessageId(Integer messageId) { /** * Only for backwards-compatibility with MaybeInaccessibleMessage */ - void setDate(Integer date) { + void setDate(Long date) { this.date = date; } @@ -650,6 +656,7 @@ public boolean equals(Object o) { Objects.equals(link_preview_options, message.link_preview_options) && Objects.equals(suggested_post_info, message.suggested_post_info) && Objects.equals(effect_id, message.effect_id) && + Objects.equals(rich_message, message.rich_message) && Objects.equals(audio, message.audio) && Objects.equals(paid_media, message.paid_media) && Objects.equals(document, message.document) && @@ -774,6 +781,7 @@ public String toString() { ", link_preview_options=" + link_preview_options + ", suggested_post_info=" + suggested_post_info + ", effect_id=" + effect_id + + ", rich_message=" + rich_message + ", audio=" + audio + ", paid_media=" + paid_media + ", document=" + document + diff --git a/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java b/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java index 9f2e8bbf6..095a63286 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/MessageEntity.java @@ -22,7 +22,7 @@ public enum Type { private User user; private String language; private String custom_emoji_id; - private Integer unix_time; + private Long unix_time; private String date_time_format; private MessageEntity() { @@ -62,7 +62,7 @@ public String customEmojiId() { return custom_emoji_id; } - public Integer unixTime() { + public Long unixTime() { return unix_time; } @@ -90,7 +90,7 @@ public MessageEntity customEmojiId(String custom_emoji_id) { return this; } - public MessageEntity unixTime(Integer unix_time) { + public MessageEntity unixTime(Long unix_time) { this.unix_time = unix_time; return this; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionCountUpdated.java b/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionCountUpdated.java index 55a386944..5dcdade6b 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionCountUpdated.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionCountUpdated.java @@ -9,7 +9,7 @@ public class MessageReactionCountUpdated { private Chat chat; private Integer message_id; - private Integer date; + private Long date; private ReactionCount[] reactions; public Chat chat() { @@ -20,7 +20,7 @@ public Integer messageId() { return message_id; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionUpdated.java b/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionUpdated.java index 73e60f528..68c910723 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionUpdated.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/MessageReactionUpdated.java @@ -11,7 +11,7 @@ public class MessageReactionUpdated { private Integer message_id; private User user; private Chat actor_chat; - private Integer date; + private Long date; private ReactionType[] old_reaction; private ReactionType[] new_reaction; @@ -31,7 +31,7 @@ public Chat actorChat() { return actor_chat; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/Poll.java b/library/src/main/java/com/pengrad/telegrambot/model/Poll.java index bdd6f2c38..42d8286c5 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/Poll.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/Poll.java @@ -28,7 +28,7 @@ public enum Type { private String explanation; private MessageEntity[] explanation_entities; private Integer open_period; - private Integer close_date; + private Long close_date; private String description; private MessageEntity[] description_entities; private PollMedia media; @@ -96,7 +96,7 @@ public Integer openPeriod() { return open_period; } - public Integer closeDate() { + public Long closeDate() { return close_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/PollMedia.kt b/library/src/main/java/com/pengrad/telegrambot/model/PollMedia.kt index fa569af34..67fc35a8c 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/PollMedia.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/PollMedia.kt @@ -10,6 +10,7 @@ data class PollMedia( @get:JvmName("sticker") val sticker: Sticker? = null, @get:JvmName("venue") val venue: Venue? = null, @get:JvmName("video") val video: Video? = null, + @get:JvmName("link") val link: Link? = null, ) { override fun equals(other: Any?): Boolean { if (this === other) return true @@ -22,7 +23,8 @@ data class PollMedia( photo contentEquals other.photo && sticker == other.sticker && venue == other.venue && - video == other.video + video == other.video && + link == other.link } override fun hashCode(): Int { @@ -35,6 +37,7 @@ data class PollMedia( result = 31 * result + (sticker?.hashCode() ?: 0) result = 31 * result + (venue?.hashCode() ?: 0) result = 31 * result + (video?.hashCode() ?: 0) + result = 31 * result + (link?.hashCode() ?: 0) return result } } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/PollOption.java b/library/src/main/java/com/pengrad/telegrambot/model/PollOption.java index c74139183..86e3c7f96 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/PollOption.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/PollOption.java @@ -17,7 +17,7 @@ public class PollOption implements Serializable { private MessageEntity[] text_entities; private User added_by_user; private Chat added_by_chat; - private Integer addition_date; + private Long addition_date; private PollMedia media; public String persistentId() { @@ -44,7 +44,7 @@ public Chat addedByChat() { return added_by_chat; } - public Integer additionDate() { + public Long additionDate() { return addition_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/PreparedInlineMessage.kt b/library/src/main/java/com/pengrad/telegrambot/model/PreparedInlineMessage.kt index 7c68320ae..e59dc795e 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/PreparedInlineMessage.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/PreparedInlineMessage.kt @@ -2,5 +2,5 @@ package com.pengrad.telegrambot.model data class PreparedInlineMessage( @get:JvmName("id") val id: String, - @get:JvmName("expirationDate") val expirationDate: Int + @get:JvmName("expirationDate") val expirationDate: Long ) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/SuccessfulPayment.kt b/library/src/main/java/com/pengrad/telegrambot/model/SuccessfulPayment.kt index a888f036c..16d85dcee 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/SuccessfulPayment.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/SuccessfulPayment.kt @@ -4,7 +4,7 @@ data class SuccessfulPayment( @get:JvmName("currency") val currency: String, @get:JvmName("totalAmount") val totalAmount: Int, @get:JvmName("invoicePayload") val invoicePayload: String, - @get:JvmName("subscriptionExpirationDate") val subscriptionExpirationDate: Int? = null, + @get:JvmName("subscriptionExpirationDate") val subscriptionExpirationDate: Long? = null, @get:JvmName("isRecurring") val isRecurring: Boolean? = null, @get:JvmName("isFirstRecurring") val isFirstRecurring: Boolean? = null, @get:JvmName("shippingOptionId") val shippingOptionId: String? = null, diff --git a/library/src/main/java/com/pengrad/telegrambot/model/User.java b/library/src/main/java/com/pengrad/telegrambot/model/User.java index 896294755..f10bb8900 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/User.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/User.java @@ -27,6 +27,7 @@ public class User implements Serializable { private Boolean allows_users_to_create_topics; private Boolean can_manage_bots; private Boolean supports_guest_queries; + private Boolean supports_join_request_queries; private User() { } @@ -103,6 +104,10 @@ public Boolean supportsGuestQueries() { return supports_guest_queries != null && supports_guest_queries; } + public Boolean supportsJoinRequestQueries() { + return supports_join_request_queries != null && supports_join_request_queries; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -116,7 +121,8 @@ public boolean equals(Object o) { && Objects.equals(has_main_web_app, user.has_main_web_app) && Objects.equals(has_topics_enabled, user.has_topics_enabled) && Objects.equals(allows_users_to_create_topics, user.allows_users_to_create_topics) && Objects.equals(can_manage_bots, user.can_manage_bots) - && Objects.equals(supports_guest_queries, user.supports_guest_queries); + && Objects.equals(supports_guest_queries, user.supports_guest_queries) + && Objects.equals(supports_join_request_queries, user.supports_join_request_queries); } @Override @@ -144,6 +150,7 @@ public String toString() { ", allows_users_to_create_topics=" + allows_users_to_create_topics + ", can_manage_bots=" + can_manage_bots + ", supports_guest_queries=" + supports_guest_queries + + ", supports_join_request_queries=" + supports_join_request_queries + '}'; } } \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/model/VideoChatScheduled.java b/library/src/main/java/com/pengrad/telegrambot/model/VideoChatScheduled.java index 857d0c78a..8bff858ec 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/VideoChatScheduled.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/VideoChatScheduled.java @@ -7,9 +7,9 @@ public class VideoChatScheduled implements Serializable { private final static long serialVersionUID = 0L; - private Integer start_date; + private Long start_date; - public Integer startDate() { + public Long startDate() { return start_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/WebhookInfo.java b/library/src/main/java/com/pengrad/telegrambot/model/WebhookInfo.java index d3b0c9689..7c4c3d493 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/WebhookInfo.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/WebhookInfo.java @@ -15,9 +15,9 @@ public class WebhookInfo implements Serializable { private Boolean has_custom_certificate; private Integer pending_update_count; private String ip_address; - private Integer last_error_date; + private Long last_error_date; private String last_error_message; - private Integer last_synchronization_error_date; + private Long last_synchronization_error_date; private Integer max_connections; private String[] allowed_updates; @@ -37,7 +37,7 @@ public String ipAddress() { return ip_address; } - public Integer lastErrorDate() { + public Long lastErrorDate() { return last_error_date; } @@ -45,7 +45,7 @@ public String lastErrorMessage() { return last_error_message; } - public Integer lastSynchronizationErrorDate() { + public Long lastSynchronizationErrorDate() { return last_synchronization_error_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/business/BusinessConnection.java b/library/src/main/java/com/pengrad/telegrambot/model/business/BusinessConnection.java index 36809eb83..eb2cc2126 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/business/BusinessConnection.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/business/BusinessConnection.java @@ -9,7 +9,7 @@ public class BusinessConnection { private String id; private User user; private Long user_chat_id; - private Integer date; + private Long date; private BusinessBotRights rights; private Boolean is_enabled; @@ -25,7 +25,7 @@ public Long userChatId() { return user_chat_id; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoost.java b/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoost.java index 97bb9c83f..8f6e5f04f 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoost.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoost.java @@ -7,19 +7,19 @@ public class ChatBoost { private String boost_id; - private Integer add_date; - private Integer expiration_date; + private Long add_date; + private Long expiration_date; private ChatBoostSource source; public String boostId() { return boost_id; } - public Integer addDate() { + public Long addDate() { return add_date; } - public Integer expirationDate() { + public Long expirationDate() { return expiration_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoostRemoved.java b/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoostRemoved.java index 02f5bd0e8..b3b2f01f2 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoostRemoved.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/chatboost/ChatBoostRemoved.java @@ -9,7 +9,7 @@ public class ChatBoostRemoved { private Chat chat; private String boost_id; - private Integer remove_date; + private Long remove_date; private ChatBoostSource source; public Chat chat() { @@ -20,7 +20,7 @@ public String boostId() { return boost_id; } - public Integer removeDate() { + public Long removeDate() { return remove_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/checklist/ChecklistTask.kt b/library/src/main/java/com/pengrad/telegrambot/model/checklist/ChecklistTask.kt index e236b4b6c..fce40378b 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/checklist/ChecklistTask.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/checklist/ChecklistTask.kt @@ -11,7 +11,7 @@ data class ChecklistTask( @get:JvmName("textEntities") val textEntities: Array?, @get:JvmName("completedByUser") val completedByUser: User?, @get:JvmName("completedByChat") val completedByChat: Chat? = null, - @get:JvmName("completionDate") val completionDate: Int? + @get:JvmName("completionDate") val completionDate: Long? ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/model/giveaway/Giveaway.java b/library/src/main/java/com/pengrad/telegrambot/model/giveaway/Giveaway.java index 0a40a104f..d9b4d7971 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/giveaway/Giveaway.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/giveaway/Giveaway.java @@ -12,7 +12,7 @@ public class Giveaway implements Serializable { private final static long serialVersionUID = 0L; private Chat[] chats; - private Integer winners_selection_date; + private Long winners_selection_date; private Integer winner_count; private Boolean only_new_members; private Boolean has_public_winners; @@ -24,7 +24,7 @@ public class Giveaway implements Serializable { public Chat[] chats() { return chats; } - public Integer winnersSelectionDate() { + public Long winnersSelectionDate() { return winners_selection_date; } public Integer winnerCount() { diff --git a/library/src/main/java/com/pengrad/telegrambot/model/giveaway/GiveawayWinners.java b/library/src/main/java/com/pengrad/telegrambot/model/giveaway/GiveawayWinners.java index 3f8feff6d..9fafce42b 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/giveaway/GiveawayWinners.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/giveaway/GiveawayWinners.java @@ -13,7 +13,7 @@ public class GiveawayWinners implements Serializable { private Chat chat; private Integer giveaway_message_id; - private Integer winners_selection_date; + private Long winners_selection_date; private Integer winner_count; private User[] winners; private Integer additional_chat_count; @@ -32,7 +32,7 @@ public Integer giveawayMessageId() { return giveaway_message_id; } - public Integer winnersSelectionDate() { + public Long winnersSelectionDate() { return winners_selection_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/message/MaybeInaccessibleMessage.java b/library/src/main/java/com/pengrad/telegrambot/model/message/MaybeInaccessibleMessage.java index 4dc9511c2..a91975eb8 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/message/MaybeInaccessibleMessage.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/message/MaybeInaccessibleMessage.java @@ -8,7 +8,7 @@ public class MaybeInaccessibleMessage { protected Chat chat; protected Integer message_id; - protected Integer date; + protected Long date; public Chat chat() { return chat; @@ -18,7 +18,7 @@ public Integer messageId() { return message_id; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/message/origin/MessageOrigin.java b/library/src/main/java/com/pengrad/telegrambot/model/message/origin/MessageOrigin.java index a5c9f253b..97333b8c0 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/message/origin/MessageOrigin.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/message/origin/MessageOrigin.java @@ -7,7 +7,7 @@ public class MessageOrigin implements Serializable { private final static long serialVersionUID = 0L; protected String type; - protected Integer date; + protected Long date; public MessageOrigin(String type) { this.type = type; @@ -17,7 +17,7 @@ public String type() { return type; } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaLink.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaLink.kt new file mode 100644 index 000000000..bf42933b4 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/request/InputMediaLink.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.request + +import java.io.Serializable + +class InputMediaLink( + val url: String, +) : InputPollOptionMedia, Serializable { + + val type: String = "link" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt new file mode 100644 index 000000000..ec61a5d27 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessage.kt @@ -0,0 +1,45 @@ +package com.pengrad.telegrambot.model.request.richmessages + +class InputRichMessage private constructor( + @get:JvmName("html") var html: String?, + @get:JvmName("markdown") var markdown: String?, + @get:JvmName("isRtl") var isRtl: Boolean?, + @get:JvmName("skipEntityDetection") var skipEntityDetection: Boolean? +) { + + constructor() : this( + html = null, + markdown = null, + isRtl = null, + skipEntityDetection = null + ) + + fun html(html: String) = apply { this.html = html } + + fun markdown(markdown: String) = apply { this.markdown = markdown } + + fun isRtl(isRtl: Boolean) = apply { this.isRtl = isRtl } + + fun skipEntityDetection(skipEntityDetection: Boolean) = apply { this.skipEntityDetection = skipEntityDetection } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as InputRichMessage + return html == other.html && + markdown == other.markdown && + isRtl == other.isRtl && + skipEntityDetection == other.skipEntityDetection + } + + override fun hashCode(): Int { + var result = html?.hashCode() ?: 0 + result = 31 * result + (markdown?.hashCode() ?: 0) + result = 31 * result + (isRtl?.hashCode() ?: 0) + result = 31 * result + (skipEntityDetection?.hashCode() ?: 0) + return result + } + + override fun toString(): String = + "InputRichMessage(html=$html, markdown=$markdown, isRtl=$isRtl, skipEntityDetection=$skipEntityDetection)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageContent.kt b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageContent.kt new file mode 100644 index 000000000..8350bcde2 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/request/richmessages/InputRichMessageContent.kt @@ -0,0 +1,19 @@ +package com.pengrad.telegrambot.model.request.richmessages + +import com.pengrad.telegrambot.model.request.InputMessageContent + +class InputRichMessageContent( + @get:JvmName("richMessage") val richMessage: InputRichMessage +) : InputMessageContent() { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as InputRichMessageContent + return richMessage == other.richMessage + } + + override fun hashCode(): Int = richMessage.hashCode() + + override fun toString(): String = "InputRichMessageContent(richMessage=$richMessage)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessage.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessage.kt new file mode 100644 index 000000000..12eb2c837 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/RichMessage.kt @@ -0,0 +1,24 @@ +package com.pengrad.telegrambot.model.richmessages + +import com.pengrad.telegrambot.model.richmessages.richblock.RichBlock + +class RichMessage( + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("isRtl") val isRtl: Boolean? = null +) { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichMessage + return blocks.contentEquals(other.blocks) && isRtl == other.isRtl + } + + override fun hashCode(): Int { + var result = blocks.contentHashCode() + result = 31 * result + (isRtl?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichMessage(blocks=${blocks.contentToString()}, isRtl=$isRtl)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlock.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlock.kt new file mode 100644 index 000000000..1531c09a3 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlock.kt @@ -0,0 +1,5 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +interface RichBlock { + val type: String +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnchor.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnchor.kt new file mode 100644 index 000000000..5b6fe16aa --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnchor.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +data class RichBlockAnchor( + @get:JvmName("name") val name: String +) : RichBlock { + override val type: String get() = RichBlockType.ANCHOR +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnimation.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnimation.kt new file mode 100644 index 000000000..bbfaf9886 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAnimation.kt @@ -0,0 +1,11 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Animation + +data class RichBlockAnimation( + @get:JvmName("animation") val animation: Animation, + @get:JvmName("hasSpoiler") val hasSpoiler: Boolean? = null, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.ANIMATION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAudio.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAudio.kt new file mode 100644 index 000000000..c7804cc56 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockAudio.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Audio + +data class RichBlockAudio( + @get:JvmName("audio") val audio: Audio, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.AUDIO +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockBlockQuotation.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockBlockQuotation.kt new file mode 100644 index 000000000..0ead7f7dc --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockBlockQuotation.kt @@ -0,0 +1,26 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +class RichBlockBlockQuotation( + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("credit") val credit: RichText? = null +) : RichBlock { + + override val type: String get() = RichBlockType.BLOCKQUOTE + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockBlockQuotation + return blocks.contentEquals(other.blocks) && credit == other.credit + } + + override fun hashCode(): Int { + var result = blocks.contentHashCode() + result = 31 * result + (credit?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockBlockQuotation(blocks=${blocks.contentToString()}, credit=$credit)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCaption.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCaption.kt new file mode 100644 index 000000000..6b1966eee --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCaption.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockCaption( + @get:JvmName("text") val text: RichText, + @get:JvmName("credit") val credit: RichText? = null +) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCollage.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCollage.kt new file mode 100644 index 000000000..07d7abd93 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockCollage.kt @@ -0,0 +1,24 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockCollage( + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + + override val type: String get() = RichBlockType.COLLAGE + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockCollage + return blocks.contentEquals(other.blocks) && caption == other.caption + } + + override fun hashCode(): Int { + var result = blocks.contentHashCode() + result = 31 * result + (caption?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockCollage(blocks=${blocks.contentToString()}, caption=$caption)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDetails.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDetails.kt new file mode 100644 index 000000000..d34a95308 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDetails.kt @@ -0,0 +1,28 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +class RichBlockDetails( + @get:JvmName("summary") val summary: RichText, + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("isOpen") val isOpen: Boolean? = null +) : RichBlock { + + override val type: String get() = RichBlockType.DETAILS + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockDetails + return summary == other.summary && blocks.contentEquals(other.blocks) && isOpen == other.isOpen + } + + override fun hashCode(): Int { + var result = summary.hashCode() + result = 31 * result + blocks.contentHashCode() + result = 31 * result + (isOpen?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockDetails(summary=$summary, blocks=${blocks.contentToString()}, isOpen=$isOpen)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDivider.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDivider.kt new file mode 100644 index 000000000..9162c2257 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockDivider.kt @@ -0,0 +1,14 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockDivider : RichBlock { + override val type: String get() = RichBlockType.DIVIDER + + override fun equals(other: Any?): Boolean { + if (this === other) return true + return other is RichBlockDivider + } + + override fun hashCode(): Int = type.hashCode() + + override fun toString(): String = "RichBlockDivider()" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockFooter.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockFooter.kt new file mode 100644 index 000000000..cf7fce611 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockFooter.kt @@ -0,0 +1,9 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockFooter( + @get:JvmName("text") val text: RichText +) : RichBlock { + override val type: String get() = RichBlockType.FOOTER +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockList.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockList.kt new file mode 100644 index 000000000..f1332c32b --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockList.kt @@ -0,0 +1,19 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockList( + @get:JvmName("items") val items: Array +) : RichBlock { + + override val type: String get() = RichBlockType.LIST + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockList + return items.contentEquals(other.items) + } + + override fun hashCode(): Int = items.contentHashCode() + + override fun toString(): String = "RichBlockList(items=${items.contentToString()})" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockListItem.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockListItem.kt new file mode 100644 index 000000000..619d99857 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockListItem.kt @@ -0,0 +1,36 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockListItem( + @get:JvmName("label") val label: String, + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("hasCheckbox") val hasCheckbox: Boolean? = null, + @get:JvmName("isChecked") val isChecked: Boolean? = null, + @get:JvmName("value") val value: Int? = null, + @get:JvmName("type") val type: String? = null +) { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockListItem + return label == other.label && + blocks.contentEquals(other.blocks) && + hasCheckbox == other.hasCheckbox && + isChecked == other.isChecked && + value == other.value && + type == other.type + } + + override fun hashCode(): Int { + var result = label.hashCode() + result = 31 * result + blocks.contentHashCode() + result = 31 * result + (hasCheckbox?.hashCode() ?: 0) + result = 31 * result + (isChecked?.hashCode() ?: 0) + result = 31 * result + (value ?: 0) + result = 31 * result + (type?.hashCode() ?: 0) + return result + } + + override fun toString(): String = + "RichBlockListItem(label='$label', blocks=${blocks.contentToString()}, hasCheckbox=$hasCheckbox, isChecked=$isChecked, value=$value, type=$type)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMap.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMap.kt new file mode 100644 index 000000000..970ab3470 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMap.kt @@ -0,0 +1,13 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Location + +data class RichBlockMap( + @get:JvmName("location") val location: Location, + @get:JvmName("zoom") val zoom: Int, + @get:JvmName("width") val width: Int, + @get:JvmName("height") val height: Int, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.MAP +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMathematicalExpression.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMathematicalExpression.kt new file mode 100644 index 000000000..66cdb94e7 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockMathematicalExpression.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +data class RichBlockMathematicalExpression( + @get:JvmName("expression") val expression: String +) : RichBlock { + override val type: String get() = RichBlockType.MATHEMATICAL_EXPRESSION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockParagraph.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockParagraph.kt new file mode 100644 index 000000000..5fa2c51c2 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockParagraph.kt @@ -0,0 +1,9 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockParagraph( + @get:JvmName("text") val text: RichText +) : RichBlock { + override val type: String get() = RichBlockType.PARAGRAPH +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPhoto.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPhoto.kt new file mode 100644 index 000000000..de5816b09 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPhoto.kt @@ -0,0 +1,28 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.PhotoSize + +class RichBlockPhoto( + @get:JvmName("photo") val photo: Array, + @get:JvmName("hasSpoiler") val hasSpoiler: Boolean? = null, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + + override val type: String get() = RichBlockType.PHOTO + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockPhoto + return photo.contentEquals(other.photo) && hasSpoiler == other.hasSpoiler && caption == other.caption + } + + override fun hashCode(): Int { + var result = photo.contentHashCode() + result = 31 * result + (hasSpoiler?.hashCode() ?: 0) + result = 31 * result + (caption?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockPhoto(photo=${photo.contentToString()}, hasSpoiler=$hasSpoiler, caption=$caption)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPreformatted.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPreformatted.kt new file mode 100644 index 000000000..fc8f3aac3 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPreformatted.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockPreformatted( + @get:JvmName("text") val text: RichText, + @get:JvmName("language") val language: String? = null +) : RichBlock { + override val type: String get() = RichBlockType.PRE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPullQuotation.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPullQuotation.kt new file mode 100644 index 000000000..49aa118cb --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockPullQuotation.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockPullQuotation( + @get:JvmName("text") val text: RichText, + @get:JvmName("credit") val credit: RichText? = null +) : RichBlock { + override val type: String get() = RichBlockType.PULLQUOTE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSectionHeading.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSectionHeading.kt new file mode 100644 index 000000000..4d352390f --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSectionHeading.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockSectionHeading( + @get:JvmName("text") val text: RichText, + @get:JvmName("size") val size: Int +) : RichBlock { + override val type: String get() = RichBlockType.HEADING +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSlideshow.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSlideshow.kt new file mode 100644 index 000000000..e7193a912 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockSlideshow.kt @@ -0,0 +1,24 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockSlideshow( + @get:JvmName("blocks") val blocks: Array, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + + override val type: String get() = RichBlockType.SLIDESHOW + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockSlideshow + return blocks.contentEquals(other.blocks) && caption == other.caption + } + + override fun hashCode(): Int { + var result = blocks.contentHashCode() + result = 31 * result + (caption?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockSlideshow(blocks=${blocks.contentToString()}, caption=$caption)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt new file mode 100644 index 000000000..409520951 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTable.kt @@ -0,0 +1,33 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +class RichBlockTable( + @get:JvmName("cells") val cells: Array>, + @get:JvmName("isBordered") val isBordered: Boolean? = null, + @get:JvmName("isStriped") val isStriped: Boolean? = null, + @get:JvmName("caption") val caption: RichText? = null +) : RichBlock { + + override val type: String get() = RichBlockType.TABLE + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockTable + return cells.contentDeepEquals(other.cells) && + isBordered == other.isBordered && + isStriped == other.isStriped && + caption == other.caption + } + + override fun hashCode(): Int { + var result = cells.contentDeepHashCode() + result = 31 * result + (isBordered?.hashCode() ?: 0) + result = 31 * result + (isStriped?.hashCode() ?: 0) + result = 31 * result + (caption?.hashCode() ?: 0) + return result + } + + override fun toString(): String = "RichBlockTable(cells=${cells.contentDeepToString()}, isBordered=$isBordered, isStriped=$isStriped, caption=$caption)" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTableCell.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTableCell.kt new file mode 100644 index 000000000..15c22cafb --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockTableCell.kt @@ -0,0 +1,12 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockTableCell( + @get:JvmName("text") val text: RichText? = null, + @get:JvmName("isHeader") val isHeader: Boolean? = null, + @get:JvmName("colspan") val colspan: Int? = null, + @get:JvmName("rowspan") val rowspan: Int? = null, + @get:JvmName("align") val align: String? = null, + @get:JvmName("valign") val valign: String? = null +) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockThinking.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockThinking.kt new file mode 100644 index 000000000..0dfebf77c --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockThinking.kt @@ -0,0 +1,9 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.richmessages.richtext.RichText + +data class RichBlockThinking( + @get:JvmName("text") val text: RichText +) : RichBlock { + override val type: String get() = RichBlockType.THINKING +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt new file mode 100644 index 000000000..7408aa18e --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockType.kt @@ -0,0 +1,26 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +object RichBlockType { + const val PARAGRAPH = "paragraph" + const val HEADING = "heading" + const val PRE = "pre" + const val FOOTER = "footer" + const val DIVIDER = "divider" + const val MATHEMATICAL_EXPRESSION = "mathematical_expression" + const val ANCHOR = "anchor" + const val LIST = "list" + const val BLOCKQUOTE = "blockquote" + const val PULLQUOTE = "pullquote" + const val COLLAGE = "collage" + const val SLIDESHOW = "slideshow" + const val TABLE = "table" + const val DETAILS = "details" + const val MAP = "map" + const val ANIMATION = "animation" + const val AUDIO = "audio" + const val PHOTO = "photo" + const val VIDEO = "video" + const val VOICE_NOTE = "voice_note" + const val THINKING = "thinking" + const val UNKNOWN = "unknown" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockUnknown.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockUnknown.kt new file mode 100644 index 000000000..9e11df6ea --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockUnknown.kt @@ -0,0 +1,15 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +class RichBlockUnknown(override val type: String = RichBlockType.UNKNOWN) : RichBlock { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichBlockUnknown + return type == other.type + } + + override fun hashCode(): Int = type.hashCode() + + override fun toString(): String = "RichBlockUnknown(type='$type')" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVideo.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVideo.kt new file mode 100644 index 000000000..12c72a329 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVideo.kt @@ -0,0 +1,11 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Video + +data class RichBlockVideo( + @get:JvmName("video") val video: Video, + @get:JvmName("hasSpoiler") val hasSpoiler: Boolean? = null, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.VIDEO +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVoiceNote.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVoiceNote.kt new file mode 100644 index 000000000..9d8c0c8af --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richblock/RichBlockVoiceNote.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richblock + +import com.pengrad.telegrambot.model.Voice + +data class RichBlockVoiceNote( + @get:JvmName("voiceNote") val voiceNote: Voice, + @get:JvmName("caption") val caption: RichBlockCaption? = null +) : RichBlock { + override val type: String get() = RichBlockType.VOICE_NOTE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichText.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichText.kt new file mode 100644 index 000000000..8f78aee7c --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichText.kt @@ -0,0 +1,5 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +interface RichText { + val type: String +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt new file mode 100644 index 000000000..57a3191c2 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchor.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextAnchor( + @get:JvmName("name") val name: String +) : RichText { + override val type: String get() = RichTextType.ANCHOR +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt new file mode 100644 index 000000000..15759d4de --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextAnchorLink.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextAnchorLink( + @get:JvmName("text") val text: RichText, + @get:JvmName("anchorName") val anchorName: String +) : RichText { + override val type: String get() = RichTextType.ANCHOR_LINK +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextArray.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextArray.kt new file mode 100644 index 000000000..19a508a76 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextArray.kt @@ -0,0 +1,19 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +class RichTextArray( + @get:JvmName("elements") val elements: Array +) : RichText { + + override val type: String get() = "array" + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichTextArray + return elements.contentEquals(other.elements) + } + + override fun hashCode(): Int = elements.contentHashCode() + + override fun toString(): String = "RichTextArray(elements=${elements.contentToString()})" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt new file mode 100644 index 000000000..e30a640b1 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBankCardNumber.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextBankCardNumber( + @get:JvmName("text") val text: RichText, + @get:JvmName("bankCardNumber") val bankCardNumber: String +) : RichText { + override val type: String get() = RichTextType.BANK_CARD_NUMBER +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt new file mode 100644 index 000000000..abe838685 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBold.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextBold( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.BOLD +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt new file mode 100644 index 000000000..2ccfa4815 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextBotCommand.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextBotCommand( + @get:JvmName("text") val text: RichText, + @get:JvmName("botCommand") val botCommand: String +) : RichText { + override val type: String get() = RichTextType.BOT_COMMAND +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt new file mode 100644 index 000000000..2ee11987f --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCashtag.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextCashtag( + @get:JvmName("text") val text: RichText, + @get:JvmName("cashtag") val cashtag: String +) : RichText { + override val type: String get() = RichTextType.CASHTAG +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt new file mode 100644 index 000000000..a43219bb0 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCode.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextCode( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.CODE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt new file mode 100644 index 000000000..6f35924a2 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextCustomEmoji.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextCustomEmoji( + @get:JvmName("customEmojiId") val customEmojiId: String, + @get:JvmName("alternativeText") val alternativeText: String +) : RichText { + override val type: String get() = RichTextType.CUSTOM_EMOJI +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt new file mode 100644 index 000000000..ff5c1d82d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextDateTime.kt @@ -0,0 +1,9 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextDateTime( + @get:JvmName("text") val text: RichText, + @get:JvmName("unixTime") val unixTime: Long, + @get:JvmName("dateTimeFormat") val dateTimeFormat: String +) : RichText { + override val type: String get() = RichTextType.DATE_TIME +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt new file mode 100644 index 000000000..4acad159d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextEmailAddress.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextEmailAddress( + @get:JvmName("text") val text: RichText, + @get:JvmName("emailAddress") val emailAddress: String +) : RichText { + override val type: String get() = RichTextType.EMAIL_ADDRESS +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt new file mode 100644 index 000000000..ccc8dc23b --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextHashtag.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextHashtag( + @get:JvmName("text") val text: RichText, + @get:JvmName("hashtag") val hashtag: String +) : RichText { + override val type: String get() = RichTextType.HASHTAG +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt new file mode 100644 index 000000000..d8d19b32b --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextItalic.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextItalic( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.ITALIC +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt new file mode 100644 index 000000000..5e964d97c --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMarked.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextMarked( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.MARKED +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt new file mode 100644 index 000000000..8cae1cf26 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMathematicalExpression.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextMathematicalExpression( + @get:JvmName("expression") val expression: String +) : RichText { + override val type: String get() = RichTextType.MATHEMATICAL_EXPRESSION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt new file mode 100644 index 000000000..d354e0985 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextMention.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextMention( + @get:JvmName("text") val text: RichText, + @get:JvmName("username") val username: String +) : RichText { + override val type: String get() = RichTextType.MENTION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt new file mode 100644 index 000000000..60a5b71b6 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPhoneNumber.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextPhoneNumber( + @get:JvmName("text") val text: RichText, + @get:JvmName("phoneNumber") val phoneNumber: String +) : RichText { + override val type: String get() = RichTextType.PHONE_NUMBER +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPlain.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPlain.kt new file mode 100644 index 000000000..788f8c76d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextPlain.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextPlain( + @get:JvmName("text") val text: String +) : RichText { + override val type: String get() = "plain" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt new file mode 100644 index 000000000..09700dbc0 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReference.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextReference( + @get:JvmName("text") val text: RichText, + @get:JvmName("name") val name: String +) : RichText { + override val type: String get() = RichTextType.REFERENCE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt new file mode 100644 index 000000000..35f1a3c90 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextReferenceLink.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextReferenceLink( + @get:JvmName("text") val text: RichText, + @get:JvmName("referenceName") val referenceName: String +) : RichText { + override val type: String get() = RichTextType.REFERENCE_LINK +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt new file mode 100644 index 000000000..e3138bb41 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSpoiler.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextSpoiler( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.SPOILER +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt new file mode 100644 index 000000000..932a2a1fe --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextStrikethrough.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextStrikethrough( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.STRIKETHROUGH +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt new file mode 100644 index 000000000..118ad673a --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSubscript.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextSubscript( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.SUBSCRIPT +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt new file mode 100644 index 000000000..5118f307f --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextSuperscript.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextSuperscript( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.SUPERSCRIPT +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt new file mode 100644 index 000000000..f3d0c640e --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextTextMention.kt @@ -0,0 +1,10 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +import com.pengrad.telegrambot.model.User + +data class RichTextTextMention( + @get:JvmName("text") val text: RichText, + @get:JvmName("user") val user: User +) : RichText { + override val type: String get() = RichTextType.TEXT_MENTION +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt new file mode 100644 index 000000000..429d79d9a --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextType.kt @@ -0,0 +1,30 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +object RichTextType { + const val BOLD = "bold" + const val ITALIC = "italic" + const val UNDERLINE = "underline" + const val STRIKETHROUGH = "strikethrough" + const val SPOILER = "spoiler" + const val DATE_TIME = "date_time" + const val TEXT_MENTION = "text_mention" + const val SUBSCRIPT = "subscript" + const val SUPERSCRIPT = "superscript" + const val MARKED = "marked" + const val CODE = "code" + const val CUSTOM_EMOJI = "custom_emoji" + const val MATHEMATICAL_EXPRESSION = "mathematical_expression" + const val URL = "url" + const val EMAIL_ADDRESS = "email_address" + const val PHONE_NUMBER = "phone_number" + const val BANK_CARD_NUMBER = "bank_card_number" + const val MENTION = "mention" + const val HASHTAG = "hashtag" + const val CASHTAG = "cashtag" + const val BOT_COMMAND = "bot_command" + const val ANCHOR = "anchor" + const val ANCHOR_LINK = "anchor_link" + const val REFERENCE = "reference" + const val REFERENCE_LINK = "reference_link" + const val UNKNOWN = "unknown" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt new file mode 100644 index 000000000..fb0fba3e0 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnderline.kt @@ -0,0 +1,7 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextUnderline( + @get:JvmName("text") val text: RichText +) : RichText { + override val type: String get() = RichTextType.UNDERLINE +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnknown.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnknown.kt new file mode 100644 index 000000000..deae2b77d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUnknown.kt @@ -0,0 +1,15 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +class RichTextUnknown(override val type: String = RichTextType.UNKNOWN) : RichText { + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as RichTextUnknown + return type == other.type + } + + override fun hashCode(): Int = type.hashCode() + + override fun toString(): String = "RichTextUnknown(type='$type')" +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt new file mode 100644 index 000000000..0fda6a550 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/model/richmessages/richtext/RichTextUrl.kt @@ -0,0 +1,8 @@ +package com.pengrad.telegrambot.model.richmessages.richtext + +data class RichTextUrl( + @get:JvmName("text") val text: RichText, + @get:JvmName("url") val url: String +) : RichText { + override val type: String get() = RichTextType.URL +} diff --git a/library/src/main/java/com/pengrad/telegrambot/model/stars/StarTransaction.kt b/library/src/main/java/com/pengrad/telegrambot/model/stars/StarTransaction.kt index 6dba92c63..0845cb5f0 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/stars/StarTransaction.kt +++ b/library/src/main/java/com/pengrad/telegrambot/model/stars/StarTransaction.kt @@ -6,7 +6,7 @@ data class StarTransaction( @get:JvmName("id") val id: String, @get:JvmName("amount") val amount: Int, @get:JvmName("nanostarAmount") val nanostarAmount: Int? = null, - @get:JvmName("date") val date: Int, + @get:JvmName("date") val date: Long, @get:JvmName("source") val source: TransactionPartner? = null, @get:JvmName("receiver") val receiver: TransactionPartner? = null ) diff --git a/library/src/main/java/com/pengrad/telegrambot/model/stars/withdrawal/RevenueWithdrawalStateSucceeded.java b/library/src/main/java/com/pengrad/telegrambot/model/stars/withdrawal/RevenueWithdrawalStateSucceeded.java index 6875aa025..a65d70501 100644 --- a/library/src/main/java/com/pengrad/telegrambot/model/stars/withdrawal/RevenueWithdrawalStateSucceeded.java +++ b/library/src/main/java/com/pengrad/telegrambot/model/stars/withdrawal/RevenueWithdrawalStateSucceeded.java @@ -6,14 +6,14 @@ public class RevenueWithdrawalStateSucceeded extends RevenueWithdrawalState { public static final String TYPE = "succeeded"; - private Integer date; + private Long date; private String url; public RevenueWithdrawalStateSucceeded() { super(TYPE); } - public Integer date() { + public Long date() { return date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/passport/PassportFile.java b/library/src/main/java/com/pengrad/telegrambot/passport/PassportFile.java index 687f9ab13..27a48d2f1 100644 --- a/library/src/main/java/com/pengrad/telegrambot/passport/PassportFile.java +++ b/library/src/main/java/com/pengrad/telegrambot/passport/PassportFile.java @@ -12,7 +12,7 @@ public class PassportFile implements Serializable { private String file_id; private String file_unique_id; private Long file_size; - private Integer file_date; + private Long file_date; public String fileId() { return file_id; @@ -26,7 +26,7 @@ public Long fileSize() { return file_size; } - public Integer fileDate() { + public Long fileDate() { return file_date; } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/AnswerChatJoinRequestQuery.kt b/library/src/main/java/com/pengrad/telegrambot/request/AnswerChatJoinRequestQuery.kt new file mode 100644 index 000000000..8d7207f95 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/AnswerChatJoinRequestQuery.kt @@ -0,0 +1,14 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.response.BaseResponse +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class AnswerChatJoinRequestQuery( + chatJoinRequestQueryId: String, + result: String, +) : KBaseRequest(BaseResponse::class) { + + val chatJoinRequestQueryId: String by requestParameter(chatJoinRequestQueryId) + val result: String by requestParameter(result) + +} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/BanChatMember.java b/library/src/main/java/com/pengrad/telegrambot/request/BanChatMember.java index a94c04ee6..7d98f3b28 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/BanChatMember.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/BanChatMember.java @@ -9,7 +9,7 @@ public BanChatMember(Object chatId, long userId) { add("chat_id", chatId).add("user_id", userId); } - public BanChatMember untilDate(int untilDate) { + public BanChatMember untilDate(long untilDate) { return add("until_date", untilDate); } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/CreateChatInviteLink.java b/library/src/main/java/com/pengrad/telegrambot/request/CreateChatInviteLink.java index 10637e9c4..a36d2067f 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/CreateChatInviteLink.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/CreateChatInviteLink.java @@ -21,7 +21,7 @@ public CreateChatInviteLink name(String name) { return add("name", name); } - public CreateChatInviteLink expireDate(Integer expireDate) { + public CreateChatInviteLink expireDate(Long expireDate) { return add("expire_date", expireDate); } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/EditChatInviteLink.java b/library/src/main/java/com/pengrad/telegrambot/request/EditChatInviteLink.java index 2934af2d8..be7765a35 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/EditChatInviteLink.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/EditChatInviteLink.java @@ -23,7 +23,7 @@ public EditChatInviteLink name(String name) { return add("name", name); } - public EditChatInviteLink expireDate(Integer expireDate) { + public EditChatInviteLink expireDate(Long expireDate) { return add("expire_date", expireDate); } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java b/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java index 1443e0ddd..4a3aeb281 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/EditMessageText.java @@ -4,6 +4,7 @@ import com.pengrad.telegrambot.model.MessageEntity; import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup; import com.pengrad.telegrambot.model.request.ParseMode; +import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage; import com.pengrad.telegrambot.response.BaseResponse; import com.pengrad.telegrambot.response.SendResponse; @@ -23,6 +24,16 @@ public EditMessageText(String inlineMessageId, String text) { add("inline_message_id", inlineMessageId).add("text", text); } + public EditMessageText(Object chatId, int messageId, InputRichMessage richMessage) { + super(SendResponse.class); + add("chat_id", chatId).add("message_id", messageId).add("rich_message", richMessage); + } + + public EditMessageText(String inlineMessageId, InputRichMessage richMessage) { + super(BaseResponse.class); + add("inline_message_id", inlineMessageId).add("rich_message", richMessage); + } + public EditMessageText parseMode(ParseMode parseMode) { return add("parse_mode", parseMode.name()); } @@ -43,4 +54,8 @@ public EditMessageText businessConnectionId(String businessConnectionId) { return add("business_connection_id", businessConnectionId); } + public EditMessageText richMessage(InputRichMessage richMessage) { + return add("rich_message", richMessage); + } + } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/RestrictChatMember.java b/library/src/main/java/com/pengrad/telegrambot/request/RestrictChatMember.java index 1f44747f9..844d68c06 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/RestrictChatMember.java +++ b/library/src/main/java/com/pengrad/telegrambot/request/RestrictChatMember.java @@ -14,7 +14,7 @@ public RestrictChatMember(Object chatId, long userId, ChatPermissions permission add("chat_id", chatId).add("user_id", userId).add("permissions", permissions); } - public RestrictChatMember untilDate(int untilDate) { + public RestrictChatMember untilDate(long untilDate) { return add("until_date", untilDate); } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendChatJoinRequestWebApp.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendChatJoinRequestWebApp.kt new file mode 100644 index 000000000..6dfe8e163 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendChatJoinRequestWebApp.kt @@ -0,0 +1,14 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.response.BaseResponse +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class SendChatJoinRequestWebApp( + chatJoinRequestQueryId: String, + webAppUrl: String, +) : KBaseRequest(BaseResponse::class) { + + val chatJoinRequestQueryId: String by requestParameter(chatJoinRequestQueryId) + val webAppUrl: String by requestParameter(webAppUrl) + +} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SetUserEmojiStatus.kt b/library/src/main/java/com/pengrad/telegrambot/request/SetUserEmojiStatus.kt index 9a790e595..7314a9ca7 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SetUserEmojiStatus.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SetUserEmojiStatus.kt @@ -6,11 +6,11 @@ import com.pengrad.telegrambot.utility.kotlin.requestParameter class SetUserEmojiStatus( userId: Long, emojiStatusCustomEmojiId: String, - emojiStatusExpirationDate: Int + emojiStatusExpirationDate: Long ) : KBaseRequest(BaseResponse::class) { val userId: Long by requestParameter(userId) val emojiStatusCustomEmojiId: String by requestParameter(emojiStatusCustomEmojiId) - val emojiStatusExpirationDate: Int by requestParameter(emojiStatusExpirationDate) + val emojiStatusExpirationDate: Long by requestParameter(emojiStatusExpirationDate) } \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt new file mode 100644 index 000000000..72fa1f9ff --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessage.kt @@ -0,0 +1,40 @@ +package com.pengrad.telegrambot.request.richmessages + +import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage +import com.pengrad.telegrambot.request.AbstractSendRequest +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +@Suppress("unused") +class SendRichMessage private constructor( + chatId: Long? = null, + channelUsername: String? = null, + richMessage: InputRichMessage +) : AbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername +) { + + constructor(chatId: Long, richMessage: InputRichMessage) : this( + chatId = chatId, + channelUsername = null, + richMessage = richMessage + ) + + constructor(channelUsername: String, richMessage: InputRichMessage) : this( + chatId = null, + channelUsername = channelUsername, + richMessage = richMessage + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendRichMessage(chatId, richMessage)")) + constructor(chatId: Any, richMessage: InputRichMessage) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + richMessage = richMessage + ) { + checkDeprecatedConstructorParameters() + } + + val richMessage: InputRichMessage by requestParameter(richMessage) +} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt new file mode 100644 index 000000000..5285729d7 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/richmessages/SendRichMessageDraft.kt @@ -0,0 +1,23 @@ +package com.pengrad.telegrambot.request.richmessages + +import com.pengrad.telegrambot.model.request.richmessages.InputRichMessage +import com.pengrad.telegrambot.request.KBaseRequest +import com.pengrad.telegrambot.response.BaseResponse +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +@Suppress("unused") +class SendRichMessageDraft( + chatId: Long, + draftId: Int, + richMessage: InputRichMessage +) : KBaseRequest(BaseResponse::class) { + + val chatId: Long by requestParameter(chatId) + val draftId: Int by requestParameter(draftId) + val richMessage: InputRichMessage by requestParameter(richMessage) + + var messageThreadId: Long? by optionalRequestParameter() + + fun messageThreadId(messageThreadId: Long) = applySelf { this.messageThreadId = messageThreadId } +} diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java b/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java index 323a79e03..640786b4e 100644 --- a/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java +++ b/library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java @@ -12,6 +12,8 @@ import com.pengrad.telegrambot.model.message.origin.MessageOrigin; import com.pengrad.telegrambot.model.paidmedia.PaidMedia; import com.pengrad.telegrambot.model.reaction.ReactionType; +import com.pengrad.telegrambot.model.richmessages.richblock.RichBlock; +import com.pengrad.telegrambot.model.richmessages.richtext.RichText; import com.pengrad.telegrambot.model.stars.partner.TransactionPartner; import com.pengrad.telegrambot.model.stars.withdrawal.RevenueWithdrawalState; import com.pengrad.telegrambot.utility.gson.*; @@ -40,6 +42,8 @@ private BotUtils() {} .registerTypeAdapter(TransactionPartner.class, TransactionPartnerTypeAdapter.INSTANCE) .registerTypeAdapter(PaidMedia.class, new PaidMediaTypeAdapter()) .registerTypeAdapter(OwnedGift.class, new OwnedGiftTypeAdapter()) + .registerTypeAdapter(RichText.class, RichTextTypeAdapter.INSTANCE) + .registerTypeAdapter(RichBlock.class, RichBlockTypeAdapter.INSTANCE) .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .create(); diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt new file mode 100644 index 000000000..53b812639 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichBlockTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.pengrad.telegrambot.utility.gson + +import com.google.gson.JsonDeserializationContext +import com.google.gson.JsonDeserializer +import com.google.gson.JsonElement +import com.google.gson.JsonParseException +import com.pengrad.telegrambot.model.richmessages.richblock.* +import java.lang.reflect.Type + +object RichBlockTypeAdapter : JsonDeserializer { + + private val typeMapping = mapOf( + RichBlockType.PARAGRAPH to RichBlockParagraph::class, + RichBlockType.HEADING to RichBlockSectionHeading::class, + RichBlockType.PRE to RichBlockPreformatted::class, + RichBlockType.FOOTER to RichBlockFooter::class, + RichBlockType.DIVIDER to RichBlockDivider::class, + RichBlockType.MATHEMATICAL_EXPRESSION to RichBlockMathematicalExpression::class, + RichBlockType.ANCHOR to RichBlockAnchor::class, + RichBlockType.LIST to RichBlockList::class, + RichBlockType.BLOCKQUOTE to RichBlockBlockQuotation::class, + RichBlockType.PULLQUOTE to RichBlockPullQuotation::class, + RichBlockType.COLLAGE to RichBlockCollage::class, + RichBlockType.SLIDESHOW to RichBlockSlideshow::class, + RichBlockType.TABLE to RichBlockTable::class, + RichBlockType.DETAILS to RichBlockDetails::class, + RichBlockType.MAP to RichBlockMap::class, + RichBlockType.ANIMATION to RichBlockAnimation::class, + RichBlockType.AUDIO to RichBlockAudio::class, + RichBlockType.PHOTO to RichBlockPhoto::class, + RichBlockType.VIDEO to RichBlockVideo::class, + RichBlockType.VOICE_NOTE to RichBlockVoiceNote::class, + RichBlockType.THINKING to RichBlockThinking::class + ) + + @Throws(JsonParseException::class) + override fun deserialize(element: JsonElement, type: Type, context: JsonDeserializationContext): RichBlock { + val obj = element.asJsonObject + val discriminator = obj.getAsJsonPrimitive("type")?.asString ?: RichBlockType.UNKNOWN + return typeMapping[discriminator]?.let { + context.deserialize(obj, it.java) + } ?: RichBlockUnknown(discriminator) + } +} diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt new file mode 100644 index 000000000..a7fc39756 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/gson/RichTextTypeAdapter.kt @@ -0,0 +1,60 @@ +package com.pengrad.telegrambot.utility.gson + +import com.google.gson.JsonDeserializationContext +import com.google.gson.JsonDeserializer +import com.google.gson.JsonElement +import com.google.gson.JsonParseException +import com.pengrad.telegrambot.model.richmessages.richtext.* +import java.lang.reflect.Type + +object RichTextTypeAdapter : JsonDeserializer { + + private val typeMapping = mapOf( + RichTextType.BOLD to RichTextBold::class, + RichTextType.ITALIC to RichTextItalic::class, + RichTextType.UNDERLINE to RichTextUnderline::class, + RichTextType.STRIKETHROUGH to RichTextStrikethrough::class, + RichTextType.SPOILER to RichTextSpoiler::class, + RichTextType.DATE_TIME to RichTextDateTime::class, + RichTextType.TEXT_MENTION to RichTextTextMention::class, + RichTextType.SUBSCRIPT to RichTextSubscript::class, + RichTextType.SUPERSCRIPT to RichTextSuperscript::class, + RichTextType.MARKED to RichTextMarked::class, + RichTextType.CODE to RichTextCode::class, + RichTextType.CUSTOM_EMOJI to RichTextCustomEmoji::class, + RichTextType.MATHEMATICAL_EXPRESSION to RichTextMathematicalExpression::class, + RichTextType.URL to RichTextUrl::class, + RichTextType.EMAIL_ADDRESS to RichTextEmailAddress::class, + RichTextType.PHONE_NUMBER to RichTextPhoneNumber::class, + RichTextType.BANK_CARD_NUMBER to RichTextBankCardNumber::class, + RichTextType.MENTION to RichTextMention::class, + RichTextType.HASHTAG to RichTextHashtag::class, + RichTextType.CASHTAG to RichTextCashtag::class, + RichTextType.BOT_COMMAND to RichTextBotCommand::class, + RichTextType.ANCHOR to RichTextAnchor::class, + RichTextType.ANCHOR_LINK to RichTextAnchorLink::class, + RichTextType.REFERENCE to RichTextReference::class, + RichTextType.REFERENCE_LINK to RichTextReferenceLink::class + ) + + @Throws(JsonParseException::class) + override fun deserialize(element: JsonElement, type: Type, context: JsonDeserializationContext): RichText { + return when { + element.isJsonPrimitive -> RichTextPlain(element.asString) + element.isJsonArray -> { + val elements = element.asJsonArray + .map { context.deserialize(it, RichText::class.java) } + .toTypedArray() + RichTextArray(elements) + } + element.isJsonObject -> { + val obj = element.asJsonObject + val discriminator = obj.getAsJsonPrimitive("type")?.asString ?: RichTextType.UNKNOWN + typeMapping[discriminator]?.let { + context.deserialize(obj, it.java) + } ?: RichTextUnknown(discriminator) + } + else -> RichTextUnknown(RichTextType.UNKNOWN) + } + } +} diff --git a/library/src/test/java/com/pengrad/telegrambot/TelegramBotTest.java b/library/src/test/java/com/pengrad/telegrambot/TelegramBotTest.java index cd8da1755..6bed0864d 100644 --- a/library/src/test/java/com/pengrad/telegrambot/TelegramBotTest.java +++ b/library/src/test/java/com/pengrad/telegrambot/TelegramBotTest.java @@ -1062,7 +1062,7 @@ public void setWebhook() throws IOException { assertTrue(webhookInfo.hasCustomCertificate()); assertEquals(maxConnections, webhookInfo.maxConnections()); assertArrayEquals(allowedUpdates, webhookInfo.allowedUpdates()); - Integer lastErrorDate = webhookInfo.lastErrorDate(); + Long lastErrorDate = webhookInfo.lastErrorDate(); if (lastErrorDate != null) { assertEquals(System.currentTimeMillis(), lastErrorDate * 1000L, 30_000L); } @@ -2127,7 +2127,7 @@ public void deleteMyCommands() { @Test public void inviteLinks() { int memberLimit = 2; - int expireDate = (int) (System.currentTimeMillis() / 1000) + 500; + long expireDate = System.currentTimeMillis() / 1000 + 500; String name = "TestName"; ChatInviteLinkResponse response = bot.execute(new CreateChatInviteLink(groupId) @@ -2135,21 +2135,21 @@ public void inviteLinks() { .memberLimit(memberLimit) .name(name)); ChatInviteLink link = response.chatInviteLink(); - assertEquals(expireDate, link.expireDate().intValue()); + assertEquals(expireDate, link.expireDate().longValue()); assertEquals(memberLimit, link.memberLimit().intValue()); assertFalse(link.isRevoked()); assertTrue(link.creator().isBot()); assertEquals(name, link.name()); int editMemberLimit = 3; - int editExpireDate = (int) (System.currentTimeMillis() / 1000) + 1500; + long editExpireDate = System.currentTimeMillis() / 1000 + 1500; String editName = name + "edit"; response = bot.execute(new EditChatInviteLink(groupId, link.inviteLink()) .expireDate(editExpireDate) .memberLimit(editMemberLimit) .name(editName)); link = response.chatInviteLink(); - assertEquals(editExpireDate, link.expireDate().intValue()); + assertEquals(editExpireDate, link.expireDate().longValue()); assertEquals(editMemberLimit, link.memberLimit().intValue()); assertEquals(editName, link.name()); assertFalse(link.isRevoked()); diff --git a/pom.xml b/pom.xml index 23269862b..41763de98 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 4.0.0 com.github.pengrad java-telegram-bot-api - 10.0.0 + 10.1.0 JavaTelegramBotApi Java API for Telegram Bot API https://github.com/pengrad/java-telegram-bot-api/