diff --git a/Bots.ipr b/Bots.ipr index 33b4badde..7aa2faec4 100644 --- a/Bots.ipr +++ b/Bots.ipr @@ -22,10 +22,10 @@ - + + - @@ -1280,39 +1280,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1456,37 +1423,37 @@ - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/README.md b/README.md index d66ba1f32..6c954a523 100644 --- a/README.md +++ b/README.md @@ -27,16 +27,16 @@ Just import add the library to your project with one of these options: org.telegram telegrambots - 4.4.0.2 + 4.5 ``` ```gradle - compile "org.telegram:telegrambots:4.4.0.2" + compile "org.telegram:telegrambots:4.5" ``` - 2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/4.4.0.2) - 3. Download the jar(including all dependencies) from [here](https://mvnrepository.com/artifact/org.telegram/telegrambots/4.4.0.2) + 2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/4.5) + 3. Download the jar(including all dependencies) from [here](https://mvnrepository.com/artifact/org.telegram/telegrambots/4.5) In order to use Long Polling mode, just create your own bot extending `org.telegram.telegrambots.bots.TelegramLongPollingBot`. diff --git a/TelegramBots.wiki/Changelog.md b/TelegramBots.wiki/Changelog.md index e568d16ae..c6964c1f0 100644 --- a/TelegramBots.wiki/Changelog.md +++ b/TelegramBots.wiki/Changelog.md @@ -1,3 +1,7 @@ +### 4.5 ### +1. Update Api version [4.5](https://core.telegram.org/bots/api-changelog#december-31-2019) +2. Fixes: #697, #710 + ### 4.4.0.2 ### 1. Use SLF4J 2. Support case-insensitive usernames diff --git a/TelegramBots.wiki/Getting-Started.md b/TelegramBots.wiki/Getting-Started.md index 64a63865d..ac075e5bb 100644 --- a/TelegramBots.wiki/Getting-Started.md +++ b/TelegramBots.wiki/Getting-Started.md @@ -11,13 +11,13 @@ First you need ot get the library and add it to your project. There are few poss org.telegram telegrambots - 4.4.0.2 + 4.5 ``` * With **Gradle**: ```groovy - compile group: 'org.telegram', name: 'telegrambots', version: '4.4.0.2' + compile group: 'org.telegram', name: 'telegrambots', version: '4.5' ``` 2. Don't like **Maven Central Repository**? It can also be taken from [Jitpack](https://jitpack.io/#rubenlagus/TelegramBots). diff --git a/TelegramBots.wiki/abilities/Simple-Example.md b/TelegramBots.wiki/abilities/Simple-Example.md index f541cd667..2cf4c06a8 100644 --- a/TelegramBots.wiki/abilities/Simple-Example.md +++ b/TelegramBots.wiki/abilities/Simple-Example.md @@ -9,7 +9,7 @@ As with any Java project, you will need to set your dependencies. org.telegram telegrambots-abilities - 4.4.0.2 + 4.5 ``` * **Gradle** diff --git a/pom.xml b/pom.xml index fb6636f44..4aee1c519 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots pom - 4.4.0.2 + 4.5 telegrambots diff --git a/telegrambots-abilities/README.md b/telegrambots-abilities/README.md index d4d1401aa..75c65d08a 100644 --- a/telegrambots-abilities/README.md +++ b/telegrambots-abilities/README.md @@ -18,19 +18,19 @@ Usage org.telegram telegrambots-abilities - 4.4.0.2 + 4.5 ``` **Gradle** ```gradle - compile "org.telegram:telegrambots-abilities:4.4.0.2" + compile "org.telegram:telegrambots-abilities:4.5" ``` -**JitPack** - [JitPack](https://jitpack.io/#rubenlagus/TelegramBots/v4.4.0.2) +**JitPack** - [JitPack](https://jitpack.io/#rubenlagus/TelegramBots/v4.5) -**Plain imports** - [Here](https://github.com/rubenlagus/TelegramBots/releases/tag/v4.4.0.2) +**Plain imports** - [Here](https://github.com/rubenlagus/TelegramBots/releases/tag/v4.5) Motivation ---------- diff --git a/telegrambots-abilities/pom.xml b/telegrambots-abilities/pom.xml index 20599cad7..da4ae7e6b 100644 --- a/telegrambots-abilities/pom.xml +++ b/telegrambots-abilities/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.4.0.2 + 4.5 telegrambots-abilities @@ -78,14 +78,13 @@ 3.9 3.0.7 - 2.12.1 org.telegram telegrambots - 4.4.0.2 + 4.5 org.apache.commons @@ -103,16 +102,6 @@ - - org.apache.logging.log4j - log4j-slf4j-impl - ${log4j.version} - - - org.apache.logging.log4j - log4j-core - ${log4j.version} - diff --git a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/bot/DefaultAbilities.java b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/bot/DefaultAbilities.java index 3d79a5c11..3405cfb88 100644 --- a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/bot/DefaultAbilities.java +++ b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/bot/DefaultAbilities.java @@ -3,8 +3,8 @@ import com.google.common.collect.ListMultimap; import com.google.common.collect.Multimap; import org.apache.commons.io.IOUtils; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.telegram.abilitybots.api.db.DBContext; import org.telegram.abilitybots.api.objects.Ability; import org.telegram.abilitybots.api.objects.MessageContext; @@ -35,12 +35,36 @@ import static java.util.stream.Collectors.joining; import static org.apache.commons.lang3.StringUtils.isEmpty; import static org.telegram.abilitybots.api.objects.Ability.builder; -import static org.telegram.abilitybots.api.objects.Flag.*; +import static org.telegram.abilitybots.api.objects.Flag.DOCUMENT; +import static org.telegram.abilitybots.api.objects.Flag.MESSAGE; +import static org.telegram.abilitybots.api.objects.Flag.REPLY; import static org.telegram.abilitybots.api.objects.Locality.ALL; import static org.telegram.abilitybots.api.objects.Locality.USER; -import static org.telegram.abilitybots.api.objects.Privacy.*; -import static org.telegram.abilitybots.api.util.AbilityMessageCodes.*; -import static org.telegram.abilitybots.api.util.AbilityUtils.*; +import static org.telegram.abilitybots.api.objects.Privacy.ADMIN; +import static org.telegram.abilitybots.api.objects.Privacy.CREATOR; +import static org.telegram.abilitybots.api.objects.Privacy.PUBLIC; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_BAN_FAIL; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_BAN_SUCCESS; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_CLAIM_FAIL; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_CLAIM_SUCCESS; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_COMMANDS_NOT_FOUND; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_DEMOTE_FAIL; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_DEMOTE_SUCCESS; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_PROMOTE_FAIL; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_PROMOTE_SUCCESS; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_RECOVER_ERROR; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_RECOVER_FAIL; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_RECOVER_MESSAGE; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_RECOVER_SUCCESS; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_UNBAN_FAIL; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.ABILITY_UNBAN_SUCCESS; +import static org.telegram.abilitybots.api.util.AbilityMessageCodes.USER_NOT_FOUND; +import static org.telegram.abilitybots.api.util.AbilityUtils.addTag; +import static org.telegram.abilitybots.api.util.AbilityUtils.commitTo; +import static org.telegram.abilitybots.api.util.AbilityUtils.escape; +import static org.telegram.abilitybots.api.util.AbilityUtils.getLocalizedMessage; +import static org.telegram.abilitybots.api.util.AbilityUtils.shortName; +import static org.telegram.abilitybots.api.util.AbilityUtils.stripTag; public final class DefaultAbilities implements AbilityExtension { // Default commands @@ -53,7 +77,7 @@ public final class DefaultAbilities implements AbilityExtension { public static final String RECOVER = "recover"; public static final String COMMANDS = "commands"; public static final String REPORT = "report"; - private static final Logger log = LogManager.getLogger(DefaultAbilities.class); + private static final Logger log = LoggerFactory.getLogger(DefaultAbilities.class); private final BaseAbilityBot bot; public DefaultAbilities(BaseAbilityBot bot) { diff --git a/telegrambots-chat-session-bot/README.md b/telegrambots-chat-session-bot/README.md index 095f2bc95..614ed46fb 100644 --- a/telegrambots-chat-session-bot/README.md +++ b/telegrambots-chat-session-bot/README.md @@ -15,7 +15,7 @@ Usage org.telegram telegrambots-chat-session-bot - 4.4.0.2 + 4.5 ``` diff --git a/telegrambots-chat-session-bot/pom.xml b/telegrambots-chat-session-bot/pom.xml index fef0e5d2a..78faae633 100644 --- a/telegrambots-chat-session-bot/pom.xml +++ b/telegrambots-chat-session-bot/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.4.0.2 + 4.5 telegrambots-chat-session-bot @@ -84,7 +84,7 @@ org.telegram telegrambots - 4.4.0.2 + 4.5 diff --git a/telegrambots-extensions/README.md b/telegrambots-extensions/README.md index 72abbcf3f..e3019b980 100644 --- a/telegrambots-extensions/README.md +++ b/telegrambots-extensions/README.md @@ -16,12 +16,12 @@ Just import add the library to your project with one of these options: org.telegram telegrambotsextensions - 4.4.0.2 + 4.5 ``` 2. Using Gradle: ```gradle - compile "org.telegram:telegrambotsextensions:4.4.0.2" + compile "org.telegram:telegrambotsextensions:4.5" ``` \ No newline at end of file diff --git a/telegrambots-extensions/pom.xml b/telegrambots-extensions/pom.xml index 8c346d7e5..c6763c244 100644 --- a/telegrambots-extensions/pom.xml +++ b/telegrambots-extensions/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.4.0.2 + 4.5 telegrambotsextensions @@ -75,7 +75,7 @@ org.telegram telegrambots - 4.4.0.2 + 4.5 diff --git a/telegrambots-meta/pom.xml b/telegrambots-meta/pom.xml index a6167035c..757818dd2 100644 --- a/telegrambots-meta/pom.xml +++ b/telegrambots-meta/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.4.0.2 + 4.5 telegrambots-meta diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/ParseMode.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/ParseMode.java index 496e2f37f..bfae5cc14 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/ParseMode.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/ParseMode.java @@ -3,10 +3,10 @@ /** * @author Ruben Bermudez * @version 1.0 - * @brief Type of parse modes for text in messages - * @date 10 of April of 2016 + * Type of parse modes for text in messages */ public class ParseMode { public static final String MARKDOWN = "Markdown"; + public static final String MARKDOWNV2 = "MarkdownV2"; public static final String HTML = "html"; } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/groupadministration/SetChatAdministratorCustomTitle.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/groupadministration/SetChatAdministratorCustomTitle.java new file mode 100644 index 000000000..c88a3d544 --- /dev/null +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/groupadministration/SetChatAdministratorCustomTitle.java @@ -0,0 +1,129 @@ +package org.telegram.telegrambots.meta.api.methods.groupadministration; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.type.TypeReference; +import org.telegram.telegrambots.meta.api.methods.BotApiMethod; +import org.telegram.telegrambots.meta.api.objects.ApiResponse; +import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException; +import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException; + +import java.io.IOException; +import java.util.Objects; + +import static com.google.common.base.Preconditions.checkNotNull; + +/** + * @author Ruben Bermudez + * @version 4.5 + * Use this method to set a custom title for an administrator in a supergroup promoted by the bot. + * Returns True on success. + */ +public class SetChatAdministratorCustomTitle extends BotApiMethod { + public static final String PATH = "setChatAdministratorCustomTitle"; + + private static final String CHATID_FIELD = "chat_id"; + private static final String USERID_FIELD = "user_id"; + private static final String CUSTOMTITLE_FIELD = "custom_title"; + + @JsonProperty(CHATID_FIELD) + private String chatId; ///< Unique identifier for the target chat or username of the target channel (in the format @channelusername) + @JsonProperty(USERID_FIELD) + private Integer userId; ///< Unique identifier of the target user + @JsonProperty(CUSTOMTITLE_FIELD) + private String customTitle; ///< New custom title for the administrator; 0-16 characters, emoji are not allowed + + public SetChatAdministratorCustomTitle() { + super(); + } + + public SetChatAdministratorCustomTitle(String chatId, Integer userId, String customTitle) { + super(); + this.chatId = checkNotNull(chatId); + this.userId = checkNotNull(userId); + this.customTitle = checkNotNull(customTitle); + } + + public SetChatAdministratorCustomTitle(Long chatId, Integer userId, String customTitle) { + super(); + this.chatId = checkNotNull(chatId).toString(); + this.userId = checkNotNull(userId); + this.customTitle = checkNotNull(customTitle); + } + + public String getChatId() { + return chatId; + } + + public SetChatAdministratorCustomTitle setChatId(String chatId) { + this.chatId = chatId; + return this; + } + + public SetChatAdministratorCustomTitle setChatId(Long chatId) { + Objects.requireNonNull(chatId); + this.chatId = chatId.toString(); + return this; + } + + public Integer getUserId() { + return userId; + } + + public SetChatAdministratorCustomTitle setUserId(Integer userId) { + checkNotNull(userId); + this.userId = userId; + return this; + } + + public String getCustomTitle() { + return customTitle; + } + + public SetChatAdministratorCustomTitle setCustomTitle(String customTitle) { + checkNotNull(customTitle); + this.customTitle = customTitle; + return this; + } + + @Override + public String getMethod() { + return PATH; + } + + @Override + public Boolean deserializeResponse(String answer) throws TelegramApiRequestException { + try { + ApiResponse result = OBJECT_MAPPER.readValue(answer, + new TypeReference>(){}); + if (result.getOk()) { + return result.getResult(); + } else { + throw new TelegramApiRequestException("Error setting chat description", result); + } + } catch (IOException e) { + throw new TelegramApiRequestException("Unable to deserialize response", e); + } + } + + @Override + public void validate() throws TelegramApiValidationException { + if (chatId == null || chatId.isEmpty()) { + throw new TelegramApiValidationException("ChatId can't be empty", this); + } + if (userId == null || userId == 0) { + throw new TelegramApiValidationException("UserId can't be empty", this); + } + if (customTitle == null) { + throw new TelegramApiValidationException("CustomTitle can't be null", this); + } + } + + @Override + public String toString() { + return "SetChatDescription{" + + "chatId='" + chatId + '\'' + + "userId='" + userId + '\'' + + ", customTitle='" + customTitle + '\'' + + '}'; + } +} diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/send/SendMessage.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/send/SendMessage.java index 6be6fd988..5377de337 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/send/SendMessage.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/send/SendMessage.java @@ -5,8 +5,8 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import org.telegram.telegrambots.meta.api.methods.BotApiMethod; import org.telegram.telegrambots.meta.api.methods.ParseMode; -import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.api.objects.ApiResponse; +import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboard; import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException; import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException; @@ -155,6 +155,15 @@ public SendMessage enableHtml(boolean enable) { return this; } + public SendMessage enableMarkdownV2(boolean enable) { + if (enable) { + this.parseMode = ParseMode.MARKDOWNV2; + } else { + this.parseMode = null; + } + return this; + } + @Override public String getMethod() { return PATH; diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Audio.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Audio.java index 4bfd326ea..62280fb7c 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Audio.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Audio.java @@ -1,7 +1,6 @@ package org.telegram.telegrambots.meta.api.objects; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; /** @@ -12,6 +11,7 @@ public class Audio implements BotApiObject { private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String DURATION_FIELD = "duration"; private static final String MIMETYPE_FIELD = "mime_type"; private static final String FILESIZE_FIELD = "file_size"; @@ -20,7 +20,13 @@ public class Audio implements BotApiObject { private static final String THUMB_FIELD = "thumb"; @JsonProperty(FILEID_FIELD) - private String fileId; ///< Unique identifier for this file + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(DURATION_FIELD) private Integer duration; ///< Integer Duration of the audio in seconds as defined by sender @JsonProperty(MIMETYPE_FIELD) @@ -66,6 +72,10 @@ public PhotoSize getThumb() { return thumb; } + public String getFileUniqueId() { + return fileUniqueId; + } + @Override public String toString() { return "Audio{" + @@ -76,6 +86,7 @@ public String toString() { ", title='" + title + '\'' + ", performer='" + performer + '\'' + ", thumb=" + thumb + + ", fileUniqueId=" + fileUniqueId + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Chat.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Chat.java index b543e3a03..2fedbf9c6 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Chat.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Chat.java @@ -1,7 +1,6 @@ package org.telegram.telegrambots.meta.api.objects; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; /** @@ -26,6 +25,7 @@ public class Chat implements BotApiObject { private static final String STICKERSETNAME_FIELD = "sticker_set_name"; private static final String CANSETSTICKERSET_FIELD = "can_set_sticker_set"; private static final String PERMISSIONS_FIELD = "permissions"; + private static final String SLOWMODEDELAY_FIELD = "slow_mode_delay"; private static final String USERCHATTYPE = "private"; private static final String GROUPCHATTYPE = "group"; @@ -75,6 +75,13 @@ public class Chat implements BotApiObject { private Boolean canSetStickerSet; ///< Optional. True, if the bot can change group the sticker set. Returned only in getChat. @JsonProperty(PERMISSIONS_FIELD) private ChatPermissions permissions; ///< Optional. Default chat member permissions, for groups and supergroups. Returned only in getChat. + /** + * Optional. + * For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user. + * Returned only in getChat. + */ + @JsonProperty(SLOWMODEDELAY_FIELD) + private Integer slowModeDelay; public Chat() { super(); @@ -152,6 +159,10 @@ public Boolean getCanSetStickerSet() { return canSetStickerSet; } + public Integer getSlowModeDelay() { + return slowModeDelay; + } + @Override public String toString() { return "Chat{" + @@ -169,6 +180,7 @@ public String toString() { ", stickerSetName='" + stickerSetName + '\'' + ", canSetStickerSet=" + canSetStickerSet + ", permissions=" + permissions + + ", slowModeDelay=" + slowModeDelay + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/ChatMember.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/ChatMember.java index 2afcf8009..3ab0c2401 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/ChatMember.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/ChatMember.java @@ -1,7 +1,6 @@ package org.telegram.telegrambots.meta.api.objects; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; import java.time.Instant; @@ -21,7 +20,7 @@ public class ChatMember implements BotApiObject { private static final String CANEDITMESSAGES_FIELD = "can_edit_messages"; private static final String CANDELETEMESSAGES_FIELD = "can_delete_messages"; private static final String CANINVITEUSERS_FIELD = "can_invite_users"; - private static final String CANRESTRICTUSERS_FIELD = "can_restrict_users"; + private static final String CANRESTRICTMEMBERS_FIELD = "can_restrict_members"; private static final String CANPINMESSAGES_FIELD = "can_pin_messages"; private static final String CANPROMOTEMEMBERS_FIELD = "can_promote_members"; private static final String CANSENDMESSAGES_FIELD = "can_send_messages"; @@ -30,6 +29,7 @@ public class ChatMember implements BotApiObject { private static final String CANADDWEBPAGEPREVIEWS_FIELD = "can_add_web_page_previews"; private static final String CAN_SEND_POLLS_FIELD = "can_send_polls"; private static final String ISMEMBER_FIELD = "is_member"; + private static final String CUSTOMTITLE_FIELD = "custom_title"; @JsonProperty(USER_FIELD) private User user; ///< Information about the user @@ -49,8 +49,8 @@ public class ChatMember implements BotApiObject { private Boolean canDeleteMessages; ///< Optional. Administrators only. True, if the administrator can delete messages of other users @JsonProperty(CANINVITEUSERS_FIELD) private Boolean canInviteUsers; ///< Optional. Administrators and restricted only. True, if the administrator can invite new users to the chat - @JsonProperty(CANRESTRICTUSERS_FIELD) - private Boolean canRestrictUsers; ///< Optional. Administrators only. True, if the administrator can restrict, ban or unban chat members + @JsonProperty(CANRESTRICTMEMBERS_FIELD) + private Boolean canRestrictMembers; ///< Optional. Administrators only. True, if the administrator can restrict, ban or unban chat members @JsonProperty(CANPINMESSAGES_FIELD) private Boolean canPinMessages; ///< Optional. Administrators and restricted only. True, if the administrator can pin messages, groups and supergroups only @JsonProperty(CANPROMOTEMEMBERS_FIELD) @@ -67,6 +67,8 @@ public class ChatMember implements BotApiObject { private Boolean canSendPolls; ///< Optional. Restricted only. True, if the user is allowed to send polls. @JsonProperty(ISMEMBER_FIELD) private Boolean isMemberField; ///< True, if the user is a member of the chat at the moment of the request. For example, it can be false for the chat creator or for a restricted user. + @JsonProperty(CUSTOMTITLE_FIELD) + private String customTitle; ///< Optional. Owner and administrators only. Custom title for this user public ChatMember() { super(); @@ -115,8 +117,16 @@ public Boolean getCanInviteUsers() { return canInviteUsers; } + public Boolean getCanRestrictMembers() { + return canRestrictMembers; + } + + /** + * @deprecated Use {{@link #getCanRestrictMembers()}} + */ + @Deprecated public Boolean getCanRestrictUsers() { - return canRestrictUsers; + return canRestrictMembers; } public Boolean getCanPinMessages() { @@ -151,6 +161,10 @@ public Boolean getMemberField() { return isMemberField; } + public String getCustomTitle() { + return customTitle; + } + @Override public String toString() { return "ChatMember{" + @@ -163,7 +177,7 @@ public String toString() { ", canEditMessages=" + canEditMessages + ", canDeleteMessages=" + canDeleteMessages + ", canInviteUsers=" + canInviteUsers + - ", canRestrictUsers=" + canRestrictUsers + + ", canRestrictMembers=" + canRestrictMembers + ", canPinMessages=" + canPinMessages + ", canPromoteMembers=" + canPromoteMembers + ", canSendMessages=" + canSendMessages + @@ -172,6 +186,7 @@ public String toString() { ", canAddWebPagePreviews=" + canAddWebPagePreviews + ", canSendPolls=" + canSendPolls + ", isMemberField=" + isMemberField + + ", customTitle=" + customTitle + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/ChatPhoto.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/ChatPhoto.java index d12f2e84e..aa7297a7e 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/ChatPhoto.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/ChatPhoto.java @@ -10,20 +10,36 @@ */ public class ChatPhoto implements BotApiObject { private static final String SMALLFILEID_FIELD = "small_file_id"; + private static final String SMALLFILEUNIQUEID_FIELD = "small_file_unique_id"; private static final String BIGFILEID_FIELD = "big_file_id"; + private static final String BIGFILEUNIQUEID_FIELD = "big_file_unique_id"; /** - * Unique file identifier of a small chat photo (160x160). + * File identifier of small (160x160) chat photo. * This file_id can be used only for photo download and only for as long as the photo is not changed. */ @JsonProperty(SMALLFILEID_FIELD) private String smallFileId; /** - * Unique file identifier of a big chat photo (640x640). + * Unique file identifier of small (160x160) chat photo, + * which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(SMALLFILEUNIQUEID_FIELD) + private String smallFileUniqueId; + /** + * File identifier of big (640x640) chat photo. * This file_id can be used only for photo download and only for as long as the photo is not changed. */ @JsonProperty(BIGFILEID_FIELD) private String bigFileId; + /** + * Unique file identifier of big (640x640) chat photo, + * which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(BIGFILEUNIQUEID_FIELD) + private String bigFileUniqueId; public ChatPhoto() { super(); @@ -37,11 +53,21 @@ public String getBigFileId() { return bigFileId; } + public String getSmallFileUniqueId() { + return smallFileUniqueId; + } + + public String getBigFileUniqueId() { + return bigFileUniqueId; + } + @Override public String toString() { return "ChatPhoto{" + "smallFileId='" + smallFileId + '\'' + + ", smallFileUniqueId='" + smallFileUniqueId + '\'' + ", bigFileId='" + bigFileId + '\'' + + ", bigFileUniqueId='" + bigFileUniqueId + '\'' + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Document.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Document.java index 46a2e7a98..ff342b8cf 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Document.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Document.java @@ -1,7 +1,6 @@ package org.telegram.telegrambots.meta.api.objects; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; /** @@ -14,13 +13,20 @@ public class Document implements BotApiObject { private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String THUMB_FIELD = "thumb"; private static final String FILENAME_FIELD = "file_name"; private static final String MIMETYPE_FIELD = "mime_type"; private static final String FILESIZE_FIELD = "file_size"; @JsonProperty(FILEID_FIELD) - private String fileId; ///< Unique identifier for this file + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(THUMB_FIELD) private PhotoSize thumb; ///< Document thumbnail as defined by sender @JsonProperty(FILENAME_FIELD) @@ -54,6 +60,10 @@ public Integer getFileSize() { return fileSize; } + public String getFileUniqueId() { + return fileUniqueId; + } + @Override public String toString() { return "Document{" + @@ -62,6 +72,7 @@ public String toString() { ", fileName='" + fileName + '\'' + ", mimeType='" + mimeType + '\'' + ", fileSize=" + fileSize + + ", fileUniqueId=" + fileUniqueId + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/File.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/File.java index c9991f1c2..24e003867 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/File.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/File.java @@ -1,7 +1,6 @@ package org.telegram.telegrambots.meta.api.objects; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; import java.security.InvalidParameterException; @@ -14,12 +13,19 @@ * @date 24 of June of 2015 */ public class File implements BotApiObject { - private static final String FILE_ID = "file_id"; + private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String FILE_SIZE_FIELD = "file_size"; private static final String FILE_PATH_FIELD = "file_path"; - @JsonProperty(FILE_ID) - private String fileId; ///< Unique identifier for this file + @JsonProperty(FILEID_FIELD) + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(FILE_SIZE_FIELD) private Integer fileSize; ///< Optional. File size, if known @JsonProperty(FILE_PATH_FIELD) @@ -41,13 +47,8 @@ public String getFilePath() { return filePath; } - @Override - public String toString() { - return "File{" + - "fileId='" + fileId + '\'' + - ", fileSize=" + fileSize + - ", filePath='" + filePath + '\'' + - '}'; + public String getFileUniqueId() { + return fileUniqueId; } public String getFileUrl(String botToken) { @@ -60,4 +61,14 @@ public static String getFileUrl(String botToken, String filePath) { } return MessageFormat.format("https://api.telegram.org/file/bot{0}/{1}", botToken, filePath); } + + @Override + public String toString() { + return "File{" + + "fileId='" + fileId + '\'' + + ", fileSize=" + fileSize + + ", filePath='" + filePath + '\'' + + ", fileUniqueId=" + fileUniqueId + + '}'; + } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/LoginUrl.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/LoginUrl.java index c422d9c82..c3d859875 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/LoginUrl.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/LoginUrl.java @@ -5,6 +5,8 @@ import org.telegram.telegrambots.meta.api.interfaces.Validable; import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException; +import java.util.Objects; + import static com.google.common.base.Preconditions.checkNotNull; /** @@ -105,4 +107,22 @@ public String toString() { ", requestWriteAccess=" + requestWriteAccess + '}'; } + + @Override + public boolean equals(Object o) { + if (o == this) return true; + if (!(o instanceof LoginUrl)) { + return false; + } + LoginUrl loginUrl = (LoginUrl) o; + return Objects.equals(url, loginUrl.url) && + Objects.equals(forwardText, loginUrl.forwardText) && + Objects.equals(botUsername, loginUrl.botUsername) && + Objects.equals(requestWriteAccess, loginUrl.requestWriteAccess); + } + + @Override + public int hashCode() { + return Objects.hash(url, forwardText, botUsername, requestWriteAccess); + } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/MessageEntity.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/MessageEntity.java index 9629a5dec..c26ba89fb 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/MessageEntity.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/MessageEntity.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; /** @@ -31,8 +30,10 @@ public class MessageEntity implements BotApiObject { * italic (italic text), * code (monowidth string), * pre (monowidth block), - * text_link (for clickable text URLs) - * text_mention (for users without usernames) + * text_link (for clickable text URLs), + * text_mention (for users without usernames), + * underline, + * strikethrough */ @JsonProperty(TYPE_FIELD) diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/PhotoSize.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/PhotoSize.java index bdf8cbecb..d097d524a 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/PhotoSize.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/PhotoSize.java @@ -1,7 +1,6 @@ package org.telegram.telegrambots.meta.api.objects; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; /** @@ -13,13 +12,20 @@ public class PhotoSize implements BotApiObject { private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String WIDTH_FIELD = "width"; private static final String HEIGHT_FIELD = "height"; private static final String FILESIZE_FIELD = "file_size"; private static final String FILEPATH_FIELD = "file_path"; @JsonProperty(FILEID_FIELD) - private String fileId; ///< Unique identifier for this file + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(WIDTH_FIELD) private Integer width; ///< Photo width @JsonProperty(HEIGHT_FIELD) @@ -57,6 +63,10 @@ public boolean hasFilePath() { return filePath != null && !filePath.isEmpty(); } + public String getFileUniqueId() { + return fileUniqueId; + } + @Override public String toString() { return "PhotoSize{" + @@ -64,6 +74,7 @@ public String toString() { ", width=" + width + ", height=" + height + ", fileSize=" + fileSize + + ", fileUniqueId=" + fileUniqueId + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Video.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Video.java index e6d6cb0e7..78467f0d2 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Video.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Video.java @@ -1,7 +1,6 @@ package org.telegram.telegrambots.meta.api.objects; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; /** @@ -13,6 +12,7 @@ public class Video implements BotApiObject { private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String WIDTH_FIELD = "width"; private static final String HEIGHT_FIELD = "height"; private static final String DURATION_FIELD = "duration"; @@ -21,7 +21,13 @@ public class Video implements BotApiObject { private static final String FILESIZE_FIELD = "file_size"; @JsonProperty(FILEID_FIELD) - private String fileId; ///< Unique identifier for this file + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(WIDTH_FIELD) private Integer width; ///< Video width as defined by sender @JsonProperty(HEIGHT_FIELD) @@ -67,6 +73,10 @@ public Integer getFileSize() { return fileSize; } + public String getFileUniqueId() { + return fileUniqueId; + } + @Override public String toString() { return "Video{" + @@ -77,6 +87,7 @@ public String toString() { ", thumb=" + thumb + ", mimeType='" + mimeType + '\'' + ", fileSize=" + fileSize + + ", fileUniqueId=" + fileUniqueId + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/VideoNote.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/VideoNote.java index 365da3fd7..53698020d 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/VideoNote.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/VideoNote.java @@ -11,13 +11,20 @@ */ public class VideoNote implements BotApiObject { private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String LENGTH_FIELD = "length"; private static final String DURATION_FIELD = "duration"; private static final String THUMB_FIELD = "thumb"; private static final String FILESIZE_FIELD = "file_size"; @JsonProperty(FILEID_FIELD) - private String fileId; ///< Unique identifier for this file + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(LENGTH_FIELD) private Integer length; ///< Video width and height as defined by sender @JsonProperty(DURATION_FIELD) @@ -51,6 +58,10 @@ public Integer getFileSize() { return fileSize; } + public String getFileUniqueId() { + return fileUniqueId; + } + @Override public String toString() { return "VideoNote{" + @@ -59,6 +70,7 @@ public String toString() { ", duration=" + duration + ", thumb=" + thumb + ", fileSize=" + fileSize + + ", fileUniqueId=" + fileUniqueId + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Voice.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Voice.java index 977a684ef..4025d8eff 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Voice.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Voice.java @@ -1,7 +1,6 @@ package org.telegram.telegrambots.meta.api.objects; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; /** @@ -12,12 +11,19 @@ */ public class Voice implements BotApiObject { private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String DURATION_FIELD = "duration"; private static final String MIMETYPE_FIELD = "mime_type"; private static final String FILESIZE_FIELD = "file_size"; @JsonProperty(FILEID_FIELD) - private String fileId; ///< Unique identifier for this file + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(DURATION_FIELD) private Integer duration; ///< Integer Duration of the audio in seconds as defined by sender @JsonProperty(MIMETYPE_FIELD) @@ -45,6 +51,10 @@ public Integer getFileSize() { return fileSize; } + public String getFileUniqueId() { + return fileUniqueId; + } + @Override public String toString() { return "Voice{" + @@ -52,6 +62,7 @@ public String toString() { ", duration=" + duration + ", mimeType='" + mimeType + '\'' + ", fileSize=" + fileSize + + ", fileUniqueId=" + fileUniqueId + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/games/Animation.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/games/Animation.java index c88d07a3a..75d2d76e8 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/games/Animation.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/games/Animation.java @@ -17,7 +17,6 @@ package org.telegram.telegrambots.meta.api.objects.games; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; import org.telegram.telegrambots.meta.api.objects.PhotoSize; @@ -28,6 +27,7 @@ */ public class Animation implements BotApiObject { private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String WIDTH_FIELD = "width"; private static final String HEIGHT_FIELD = "height"; private static final String DURATION_FIELD = "duration"; @@ -37,7 +37,13 @@ public class Animation implements BotApiObject { private static final String FILESIZE_FIELD = "file_size"; @JsonProperty(FILEID_FIELD) - private String fileId; ///< Unique file identifier + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(WIDTH_FIELD) private Integer width; ///< Video width as defined by sender @JsonProperty(HEIGHT_FIELD) @@ -89,6 +95,10 @@ public Integer getDuration() { return duration; } + public String getFileUniqueId() { + return fileUniqueId; + } + @Override public String toString() { return "Animation{" + @@ -100,6 +110,7 @@ public String toString() { ", fileName='" + fileName + '\'' + ", mimetype='" + mimetype + '\'' + ", fileSize=" + fileSize + + ", fileUniqueId=" + fileUniqueId + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/games/CallbackGame.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/games/CallbackGame.java index 9f4fbe462..6528163b6 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/games/CallbackGame.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/games/CallbackGame.java @@ -34,4 +34,14 @@ public CallbackGame() { public String toString() { return "CallbackGame{}"; } + + @Override + public boolean equals(Object o) { + return o == this || o instanceof CallbackGame; + } + + @Override + public int hashCode() { + return getClass().hashCode(); + } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/passport/PassportFile.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/passport/PassportFile.java index 9c80d9b75..73a2f6fe7 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/passport/PassportFile.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/passport/PassportFile.java @@ -11,11 +11,18 @@ */ public class PassportFile implements BotApiObject { private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String FILESIZE_FIELD = "file_size"; private static final String FILEDATE_FIELD = "file_date"; @JsonProperty(FILEID_FIELD) - private String fileId; ///< Unique identifier for this file + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(FILESIZE_FIELD) private Integer fileSize; ///< File size @JsonProperty(FILEDATE_FIELD) @@ -42,12 +49,17 @@ public Integer getFileDate() { return fileDate; } + public String getFileUniqueId() { + return fileUniqueId; + } + @Override public String toString() { return "PassportFile{" + "fileId='" + fileId + '\'' + ", fileSize=" + fileSize + ", fileDate=" + fileDate + + ", fileUniqueId=" + fileUniqueId + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/replykeyboard/InlineKeyboardMarkup.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/replykeyboard/InlineKeyboardMarkup.java index c9ac11cf7..0b042c4a1 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/replykeyboard/InlineKeyboardMarkup.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/replykeyboard/InlineKeyboardMarkup.java @@ -29,6 +29,11 @@ public InlineKeyboardMarkup() { keyboard = new ArrayList<>(); } + public InlineKeyboardMarkup(List> keyboard) { + super(); + this.keyboard = keyboard; + } + public List> getKeyboard() { return keyboard; } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/replykeyboard/ReplyKeyboardMarkup.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/replykeyboard/ReplyKeyboardMarkup.java index e9b5c4fef..c225d2358 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/replykeyboard/ReplyKeyboardMarkup.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/replykeyboard/ReplyKeyboardMarkup.java @@ -43,6 +43,11 @@ public ReplyKeyboardMarkup() { keyboard = new ArrayList<>(); } + public ReplyKeyboardMarkup(List keyboard) { + super(); + this.keyboard = keyboard; + } + public List getKeyboard() { return keyboard; } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/stickers/Sticker.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/stickers/Sticker.java index ea243e43e..f0e21f1cc 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/stickers/Sticker.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/stickers/Sticker.java @@ -1,7 +1,6 @@ package org.telegram.telegrambots.meta.api.objects.stickers; import com.fasterxml.jackson.annotation.JsonProperty; - import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; import org.telegram.telegrambots.meta.api.objects.PhotoSize; @@ -13,6 +12,7 @@ public class Sticker implements BotApiObject { private static final String FILEID_FIELD = "file_id"; + private static final String FILEUNIQUEID_FIELD = "file_unique_id"; private static final String WIDTH_FIELD = "width"; private static final String HEIGHT_FIELD = "height"; private static final String THUMB_FIELD = "thumb"; @@ -23,7 +23,13 @@ public class Sticker implements BotApiObject { private static final String ISANIMATED_FIELD = "is_animated"; @JsonProperty(FILEID_FIELD) - private String fileId; ///< Unique identifier for this file + private String fileId; ///< Identifier for this file, which can be used to download or reuse the file + /** + * Unique identifier for this file, which is supposed to be the same over time and for different bots. + * Can't be used to download or reuse the file. + */ + @JsonProperty(FILEUNIQUEID_FIELD) + private String fileUniqueId; @JsonProperty(WIDTH_FIELD) private Integer width; ///< Sticker width @JsonProperty(HEIGHT_FIELD) @@ -81,6 +87,10 @@ public Boolean getAnimated() { return isAnimated; } + public String getFileUniqueId() { + return fileUniqueId; + } + @Override public String toString() { return "Sticker{" + @@ -93,6 +103,7 @@ public String toString() { ", setName='" + setName + '\'' + ", maskPosition=" + maskPosition + ", isAnimated=" + isAnimated + + ", fileUniqueId=" + fileUniqueId + '}'; } } diff --git a/telegrambots-spring-boot-starter/pom.xml b/telegrambots-spring-boot-starter/pom.xml index dbd57c85f..73ed80e09 100644 --- a/telegrambots-spring-boot-starter/pom.xml +++ b/telegrambots-spring-boot-starter/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.4.0.2 + 4.5 telegrambots-spring-boot-starter @@ -78,7 +78,7 @@ org.telegram telegrambots - 4.4.0.2 + 4.5 org.springframework.boot diff --git a/telegrambots/pom.xml b/telegrambots/pom.xml index 9ea6cb512..e1768165d 100644 --- a/telegrambots/pom.xml +++ b/telegrambots/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.4.0.2 + 4.5 telegrambots @@ -95,7 +95,7 @@ org.telegram telegrambots-meta - 4.4.0.2 + 4.5 com.fasterxml.jackson.core