diff --git a/README.md b/README.md index a2887d93..0f7e91fb 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.8.1 + 4.9 ``` ```gradle - compile "org.telegram:telegrambots:4.8.1" + compile "org.telegram:telegrambots:4.9" ``` - 2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/4.8.1) - 3. Download the jar(including all dependencies) from [here](https://mvnrepository.com/artifact/org.telegram/telegrambots/4.8.1) + 2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/4.9) + 3. Download the jar(including all dependencies) from [here](https://mvnrepository.com/artifact/org.telegram/telegrambots/4.9) 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 05fa77f1..e8efbbc5 100644 --- a/TelegramBots.wiki/Changelog.md +++ b/TelegramBots.wiki/Changelog.md @@ -1,3 +1,7 @@ +### 4.9 ### +1. Update Api version [4.9](https://core.telegram.org/bots/api-changelog#june-4-2020) +2. Bug fixing: #731, #749, #752 and #753 + ### 4.8.1 ### 1. Update Api version [4.8](https://core.telegram.org/bots/api-changelog#april-24-2020) 2. Add stats for Abilities diff --git a/TelegramBots.wiki/Getting-Started.md b/TelegramBots.wiki/Getting-Started.md index 79af258e..24e4fa58 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.8.1 + 4.9 ``` * With **Gradle**: ```groovy - compile group: 'org.telegram', name: 'telegrambots', version: '4.8.1' + compile group: 'org.telegram', name: 'telegrambots', version: '4.9' ``` 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 fff16424..bd234493 100644 --- a/TelegramBots.wiki/abilities/Simple-Example.md +++ b/TelegramBots.wiki/abilities/Simple-Example.md @@ -9,12 +9,12 @@ As with any Java project, you will need to set your dependencies. org.telegram telegrambots-abilities - 4.8.1 + 4.9 ``` * **Gradle** ```groovy - implementation group: 'org.telegram', name: 'telegrambots-abilities', version: '4.8.1' + implementation group: 'org.telegram', name: 'telegrambots-abilities', version: '4.9' ``` * [JitPack](https://jitpack.io/#rubenlagus/TelegramBots) diff --git a/pom.xml b/pom.xml index a5a3d3d3..e54ebacc 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots pom - 4.8.1 + 4.9 telegrambots diff --git a/telegrambots-abilities/README.md b/telegrambots-abilities/README.md index 13d5c381..496ba550 100644 --- a/telegrambots-abilities/README.md +++ b/telegrambots-abilities/README.md @@ -18,19 +18,19 @@ Usage org.telegram telegrambots-abilities - 4.8.1 + 4.9 ``` **Gradle** ```gradle - compile "org.telegram:telegrambots-abilities:4.8.1" + compile "org.telegram:telegrambots-abilities:4.9" ``` -**JitPack** - [JitPack](https://jitpack.io/#rubenlagus/TelegramBots/v4.8.1) +**JitPack** - [JitPack](https://jitpack.io/#rubenlagus/TelegramBots/v4.9) -**Plain imports** - [Here](https://github.com/rubenlagus/TelegramBots/releases/tag/v4.8.1) +**Plain imports** - [Here](https://github.com/rubenlagus/TelegramBots/releases/tag/v4.9) Motivation ---------- diff --git a/telegrambots-abilities/pom.xml b/telegrambots-abilities/pom.xml index 6b69ccac..ec692783 100644 --- a/telegrambots-abilities/pom.xml +++ b/telegrambots-abilities/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.8.1 + 4.9 telegrambots-abilities @@ -84,7 +84,7 @@ org.telegram telegrambots - 4.8.1 + 4.9 org.apache.commons diff --git a/telegrambots-chat-session-bot/README.md b/telegrambots-chat-session-bot/README.md index fd1783b4..4b80eb7d 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.8.1 + 4.9 ``` diff --git a/telegrambots-chat-session-bot/pom.xml b/telegrambots-chat-session-bot/pom.xml index 8efda9c9..715e0224 100644 --- a/telegrambots-chat-session-bot/pom.xml +++ b/telegrambots-chat-session-bot/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.8.1 + 4.9 telegrambots-chat-session-bot @@ -84,7 +84,7 @@ org.telegram telegrambots - 4.8.1 + 4.9 diff --git a/telegrambots-extensions/README.md b/telegrambots-extensions/README.md index 76f2f969..247bb691 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.8.1 + 4.9 ``` 2. Using Gradle: ```gradle - compile "org.telegram:telegrambotsextensions:4.8.1" + compile "org.telegram:telegrambotsextensions:4.9" ``` \ No newline at end of file diff --git a/telegrambots-extensions/pom.xml b/telegrambots-extensions/pom.xml index d60c5552..7fde69c6 100644 --- a/telegrambots-extensions/pom.xml +++ b/telegrambots-extensions/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.8.1 + 4.9 telegrambotsextensions @@ -75,7 +75,7 @@ org.telegram telegrambots - 4.8.1 + 4.9 diff --git a/telegrambots-meta/pom.xml b/telegrambots-meta/pom.xml index a8f8e112..6a060936 100644 --- a/telegrambots-meta/pom.xml +++ b/telegrambots-meta/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.8.1 + 4.9 telegrambots-meta diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/send/SendDice.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/send/SendDice.java index b1366ee2..a81c0fe4 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/send/SendDice.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/methods/send/SendDice.java @@ -10,14 +10,18 @@ import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException; import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException; import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; /** * @author Ruben Bermudez * @version 4.7 - * Use this method to send a dice, which will have a random value from 1 to 6. On success, the sent Message is returned. - * (Yes, we're aware of the “proper” singular of die. But it's awkward, and we decided to help it change. One dice at a time!) + * Use this method to send an animated emoji that will display a random value. On success, the sent Message is returned. */ public class SendDice extends BotApiMethod { + private static final List VALIDEMOJIS = Collections.unmodifiableList(Arrays.asList("\uD83C\uDFB2", "\uD83C\uDFAF", "\uD83C\uDFC0")); + public static final String PATH = "sendDice"; private static final String CHATID_FIELD = "chat_id"; @@ -28,8 +32,12 @@ public class SendDice extends BotApiMethod { @JsonProperty(CHATID_FIELD) private String chatId; ///< Unique identifier for the target chat or username of the target channel (in the format @channelusername) + /** + * Emoji on which the dice throw animation is based. Currently, must be one of “🎲”, “🎯”, or “🏀”. + * Dice can have values 1-6 for “🎲” and “🎯”, and values 1-5 for “🏀”. Defauts to “🎲” + */ @JsonProperty(EMOJI_FIELD) - private String emoji; ///< Optional. Emoji on which the dice throw animation is based. Currently, must be one of “🎲” or “🎯”. Defauts to “🎲” + private String emoji; @JsonProperty(DISABLENOTIFICATION_FIELD) private Boolean disableNotification; ///< Optional. Sends the message silently. Users will receive a notification with no sound. @JsonProperty(REPLYTOMESSAGEID_FIELD) @@ -121,8 +129,8 @@ public class SendDice extends BotApiMethod { if (chatId == null) { throw new TelegramApiValidationException("ChatId parameter can't be empty", this); } - if (emoji != null && !emoji.equals("\uD83C\uDFB2") && !emoji.equals("\uD83C\uDFAF")) { - throw new TelegramApiValidationException("Only \uD83C\uDFB2 and \uD83C\uDFAF are allowed in Emoji field ", this); + if (emoji != null && !VALIDEMOJIS.contains(emoji)) { + throw new TelegramApiValidationException("Only \uD83C\uDFB2, \uD83C\uDFAF or \uD83C\uDFC0 are allowed in Emoji field ", this); } if (replyMarkup != null) { replyMarkup.validate(); diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Dice.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Dice.java index 2b57eb80..b0983a63 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Dice.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Dice.java @@ -6,15 +6,14 @@ import org.telegram.telegrambots.meta.api.interfaces.BotApiObject; /** * @author Ruben Bermudez * @version 4.7 - * This object represents a dice with random value from 1 to 6. - * (Yes, we're aware of the “proper” singular of die. But it's awkward, and we decided to help it change. One dice at a time!) + * This object represents an animated emoji that displays a random value. */ public class Dice implements BotApiObject { private static final String VALUE_FIELD = "value"; private static final String EMOJI_FIELD = "emoji"; @JsonProperty(VALUE_FIELD) - private Integer value; ///< Value of the dice, 1-6 + private Integer value; ///< Value of the dice, 1-6 for “🎲” and “🎯” base emoji, 1-5 for “🏀” base emoji @JsonProperty(EMOJI_FIELD) private String emoji; ///< Emoji on which the dice throw animation is based diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Message.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Message.java index 551922ab..b0723615 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Message.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/Message.java @@ -68,6 +68,7 @@ public class Message implements BotApiObject { private static final String POLL_FIELD = "poll"; private static final String REPLY_MARKUP_FIELD = "reply_markup"; private static final String DICE_FIELD = "dice"; + private static final String VIABOT_FIELD = "via_bot"; @JsonProperty(MESSAGEID_FIELD) private Integer messageId; ///< Integer Unique message identifier @@ -210,7 +211,8 @@ public class Message implements BotApiObject { private InlineKeyboardMarkup replyMarkup; @JsonProperty(DICE_FIELD) private Dice dice; // Optional. Message is a dice with random value from 1 to 6 - + @JsonProperty(VIABOT_FIELD) + private User viaBot; // Optional. Bot through which the message was sent public Message() { super(); } @@ -521,6 +523,14 @@ public class Message implements BotApiObject { return dice != null; } + public User getViaBot() { + return viaBot; + } + + public boolean hasViaBot() { + return viaBot != null; + } + public boolean hasReplyMarkup() { return replyMarkup != null; } @@ -579,6 +589,8 @@ public class Message implements BotApiObject { ", forwardSenderName='" + forwardSenderName + '\'' + ", poll=" + poll + ", replyMarkup=" + replyMarkup + + ", dice=" + dice + + ", viaBot=" + viaBot + '}'; } } diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/inlinequery/result/InlineQueryResultGif.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/inlinequery/result/InlineQueryResultGif.java index b290ec8d..3a037830 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/inlinequery/result/InlineQueryResultGif.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/inlinequery/result/InlineQueryResultGif.java @@ -7,6 +7,10 @@ import org.telegram.telegrambots.meta.api.objects.inlinequery.inputmessageconten import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + /** * @author Ruben Bermudez * @version 1.0 @@ -16,12 +20,15 @@ import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException; */ @JsonDeserialize public class InlineQueryResultGif implements InlineQueryResult { + private static final List VALIDTHUMBTYPES = Collections.unmodifiableList(Arrays.asList("image/jpeg", "image/gif", "video/mp4")); + private static final String TYPE_FIELD = "type"; private static final String ID_FIELD = "id"; private static final String GIFURL_FIELD = "gif_url"; private static final String GIFWIDTH_FIELD = "gif_width"; private static final String GIFHEIGHT_FIELD = "gif_height"; private static final String THUMBURL_FIELD = "thumb_url"; + private static final String THUMBMIMETYPE_FIELD = "thumb_mime_type"; private static final String TITLE_FIELD = "title"; private static final String CAPTION_FIELD = "caption"; private static final String INPUTMESSAGECONTENT_FIELD = "input_message_content"; @@ -40,7 +47,9 @@ public class InlineQueryResultGif implements InlineQueryResult { @JsonProperty(GIFHEIGHT_FIELD) private Integer gifHeight; ///< Optional. Height of the GIF @JsonProperty(THUMBURL_FIELD) - private String thumbUrl; ///< Optional. URL of a static thumbnail for the result (jpeg or gif) + private String thumbUrl; ///< Optional. URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for the result + @JsonProperty(THUMBMIMETYPE_FIELD) + private String thumbUrlType; ///< Optional. MIME type of the thumbnail, must be one of “image/jpeg”, “image/gif”, or “video/mp4” @JsonProperty(TITLE_FIELD) private String title; ///< Optional. Title for the result @JsonProperty(CAPTION_FIELD) @@ -107,6 +116,15 @@ public class InlineQueryResultGif implements InlineQueryResult { return this; } + public String getThumbUrlType() { + return thumbUrlType; + } + + public InlineQueryResultGif setThumbUrlType(String thumbUrlType) { + this.thumbUrlType = thumbUrlType; + return this; + } + public String getTitle() { return title; } @@ -169,6 +187,9 @@ public class InlineQueryResultGif implements InlineQueryResult { if (gifUrl == null || gifUrl.isEmpty()) { throw new TelegramApiValidationException("GifUrl parameter can't be empty", this); } + if (thumbUrlType != null && !VALIDTHUMBTYPES.contains(thumbUrlType)) { + throw new TelegramApiValidationException("ThumbUrlType parameter must be one of “image/jpeg”, “image/gif”, or “video/mp4”", this); + } if (inputMessageContent != null) { inputMessageContent.validate(); } @@ -186,6 +207,7 @@ public class InlineQueryResultGif implements InlineQueryResult { ", gifWidth=" + gifWidth + ", gifHeight=" + gifHeight + ", thumbUrl='" + thumbUrl + '\'' + + ", thumbUrlType='" + thumbUrlType + '\'' + ", title='" + title + '\'' + ", caption='" + caption + '\'' + ", inputMessageContent=" + inputMessageContent + diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/inlinequery/result/cached/InlineQueryResultCachedGif.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/inlinequery/result/cached/InlineQueryResultCachedGif.java index 17661bb3..bee3d835 100644 --- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/inlinequery/result/cached/InlineQueryResultCachedGif.java +++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/meta/api/objects/inlinequery/result/cached/InlineQueryResultCachedGif.java @@ -8,6 +8,10 @@ import org.telegram.telegrambots.meta.api.objects.inlinequery.result.InlineQuery import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + /** * @author Ruben Bermudez * @version 1.0 @@ -17,11 +21,15 @@ import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException; */ @JsonDeserialize public class InlineQueryResultCachedGif implements InlineQueryResult { + private static final List VALIDTHUMBTYPES = Collections.unmodifiableList(Arrays.asList("image/jpeg", "image/gif", "video/mp4")); + private static final String TYPE_FIELD = "type"; private static final String ID_FIELD = "id"; private static final String GIF_FILE_ID_FIELD = "gif_file_id"; private static final String TITLE_FIELD = "title"; private static final String CAPTION_FIELD = "caption"; + private static final String THUMBURL_FIELD = "thumb_url"; + private static final String THUMBMIMETYPE_FIELD = "thumb_mime_type"; private static final String INPUTMESSAGECONTENT_FIELD = "input_message_content"; private static final String REPLY_MARKUP_FIELD = "reply_markup"; private static final String PARSEMODE_FIELD = "parse_mode"; @@ -42,6 +50,10 @@ public class InlineQueryResultCachedGif implements InlineQueryResult { private InlineKeyboardMarkup replyMarkup; ///< Optional. Inline keyboard attached to the message @JsonProperty(PARSEMODE_FIELD) private String parseMode; ///< Send Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in the media caption. + @JsonProperty(THUMBURL_FIELD) + private String thumbUrl; ///< Optional. URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for the result + @JsonProperty(THUMBMIMETYPE_FIELD) + private String thumbUrlType; public InlineQueryResultCachedGif() { super(); @@ -114,6 +126,24 @@ public class InlineQueryResultCachedGif implements InlineQueryResult { return this; } + public String getThumbUrl() { + return thumbUrl; + } + + public InlineQueryResultCachedGif setThumbUrl(String thumbUrl) { + this.thumbUrl = thumbUrl; + return this; + } + + public String getThumbUrlType() { + return thumbUrlType; + } + + public InlineQueryResultCachedGif setThumbUrlType(String thumbUrlType) { + this.thumbUrlType = thumbUrlType; + return this; + } + @Override public void validate() throws TelegramApiValidationException { if (id == null || id.isEmpty()) { @@ -122,6 +152,9 @@ public class InlineQueryResultCachedGif implements InlineQueryResult { if (gifFileId == null || gifFileId.isEmpty()) { throw new TelegramApiValidationException("GifFileId parameter can't be empty", this); } + if (thumbUrlType != null && !VALIDTHUMBTYPES.contains(thumbUrlType)) { + throw new TelegramApiValidationException("ThumbUrlType parameter must be one of “image/jpeg”, “image/gif”, or “video/mp4”", this); + } if (inputMessageContent != null) { inputMessageContent.validate(); } @@ -141,6 +174,8 @@ public class InlineQueryResultCachedGif implements InlineQueryResult { ", inputMessageContent=" + inputMessageContent + ", replyMarkup=" + replyMarkup + ", parseMode='" + parseMode + '\'' + + ", thumbUrl='" + thumbUrl + '\'' + + ", thumbUrlType='" + thumbUrlType + '\'' + '}'; } } diff --git a/telegrambots-spring-boot-starter/pom.xml b/telegrambots-spring-boot-starter/pom.xml index 79c6a4c3..b9d59a0a 100644 --- a/telegrambots-spring-boot-starter/pom.xml +++ b/telegrambots-spring-boot-starter/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.8.1 + 4.9 telegrambots-spring-boot-starter @@ -79,7 +79,7 @@ org.telegram telegrambots - 4.8.1 + 4.9 org.springframework.boot diff --git a/telegrambots/pom.xml b/telegrambots/pom.xml index 981a1f55..03123e30 100644 --- a/telegrambots/pom.xml +++ b/telegrambots/pom.xml @@ -7,7 +7,7 @@ org.telegram Bots - 4.8.1 + 4.9 telegrambots @@ -95,7 +95,7 @@ org.telegram telegrambots-meta - 4.8.1 + 4.9 com.fasterxml.jackson.core