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