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