diff --git a/README.md b/README.md
index bf9022a9..98e5ecce 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
- 3.1.2
+ 3.2
```
```gradle
- compile "org.telegram:telegrambots:3.1.2"
+ compile "org.telegram:telegrambots:3.2"
```
- 2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/3.1.2)
- 3. Download the jar(including all dependencies) from [here](https://github.com/rubenlagus/TelegramBots/releases/tag/v3.1.2)
+ 2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/3.2)
+ 3. Download the jar(including all dependencies) from [here](https://github.com/rubenlagus/TelegramBots/releases/tag/v3.2)
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 b0dc16d6..0ef3a7b0 100644
--- a/TelegramBots.wiki/Changelog.md
+++ b/TelegramBots.wiki/Changelog.md
@@ -82,4 +82,15 @@
### 3.1.2 ###
-1. Fix bug #266
\ No newline at end of file
+1. Fix bug #266
+
+### 3.2 ###
+1. Support for Api Version [3.2](https://core.telegram.org/bots/api-changelog#july-21-2017)
+2. Deprecated all redundant methods in AbsSender, will be removed in next major release
+3. New Abstract methods `addStickerToSet`, `createNewStickerSet` and `uploadStickerFile` in AbsSender.
+4. Abilities module
+5. Removed deprecated methods from previous versions
+6. Bug fixing: #257, #270
+7. Simplify code from DefaultAbsSender: #272
+
+**[[How to update to version 3.2|How-To-Update#3.2]]**
\ No newline at end of file
diff --git a/TelegramBots.wiki/Getting-Started.md b/TelegramBots.wiki/Getting-Started.md
index 7c0893be..c45cc993 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
- 3.1.2
+ 3.2
```
* With **Gradle**:
```groovy
- compile group: 'org.telegram', name: 'telegrambots', version: '3.1.2'
+ compile group: 'org.telegram', name: 'telegrambots', version: '3.2'
```
2. Don't like **Maven Central Repository**? It can also be taken from [Jitpack](https://jitpack.io/#rubenlagus/TelegramBots).
diff --git a/TelegramBots.wiki/How-To-Update.md b/TelegramBots.wiki/How-To-Update.md
index a09bfae3..d641fa88 100644
--- a/TelegramBots.wiki/How-To-Update.md
+++ b/TelegramBots.wiki/How-To-Update.md
@@ -27,4 +27,9 @@
### To version 3.0.2 ###
1. If you were using `TelegramLongPollingCommandBot`, add the new [extensions dependency](https://github.com/rubenlagus/TelegramBots/tree/master/telegrambots-extensions) to your maven and fix import statements in your project.
-2. If you were using `TelegramLongPollingCommandBot`, make sure you start using constructors with username and prevent overriding `getUsername` method.
\ No newline at end of file
+2. If you were using `TelegramLongPollingCommandBot`, make sure you start using constructors with username and prevent overriding `getUsername` method.
+
+
+### To version 3.2 ###
+1. Replace usage of all deprecated methods from AbsSender with methods `execute` or `executeAsync`.
+2. If you are extending AbsSender class, implement new added methods.
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 124187fc..af5ae0f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
org.telegram
Bots
pom
- 3.1.2
+ 3.2
telegrambots
@@ -26,6 +26,6 @@
true
- 3.1.2
+ 3.2
\ No newline at end of file
diff --git a/telegrambots-abilities/README.md b/telegrambots-abilities/README.md
index 8837ed7d..c4f76df4 100644
--- a/telegrambots-abilities/README.md
+++ b/telegrambots-abilities/README.md
@@ -18,19 +18,19 @@ Usage
org.telegram
telegrambots-abilities
- 3.1.1
+ 3.2
```
**Gradle**
```gradle
- compile "org.telegram:telegrambots-abilities:3.1.1"
+ compile "org.telegram:telegrambots-abilities:3.2"
```
-**JitPack** - [JitPack](https://jitpack.io/#rubenlagus/TelegramBots/v3.1.1)
+**JitPack** - [JitPack](https://jitpack.io/#rubenlagus/TelegramBots/v3.2)
-**Plain imports** - [Jar](https://github.com/addo37/AbilityBots/releases/download/v1.2.5/AbilityBots-1.2.5.jar) | [fatJar](https://github.com/addo37/AbilityBots/releases/download/v1.2.5/AbilityBots-with-dependencies-1.2.5.jar)
+**Plain imports** - [Here](https://github.com/rubenlagus/TelegramBots/releases/tag/v3.2)
Motivation
----------
diff --git a/telegrambots-abilities/pom.xml b/telegrambots-abilities/pom.xml
index 6ac35993..6017c0bc 100644
--- a/telegrambots-abilities/pom.xml
+++ b/telegrambots-abilities/pom.xml
@@ -5,7 +5,7 @@
4.0.0
org.telegram
telegrambots-abilities
- 3.1.2
+ 3.2
jar
Telegram Ability Bot
@@ -35,6 +35,12 @@
https://github.com/addo37
addo37
+
+ rberlopez@gmail.com
+ Ruben Bermudez
+ https://github.com/rubenlagus
+ rubenlagus
+
@@ -59,7 +65,7 @@
UTF-8
UTF-8
- 3.1.2
+ 3.2
3.5
3.0.4
19.0
diff --git a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/Ability.java b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/Ability.java
index 46a9e326..1064bb29 100644
--- a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/Ability.java
+++ b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/Ability.java
@@ -46,6 +46,7 @@ public final class Ability {
private final List replies;
private final List> flags;
+ @SafeVarargs
private Ability(String name, String info, Locality locality, Privacy privacy, int argNum, Consumer action, Consumer postAction, List replies, Predicate... flags) {
checkArgument(!isEmpty(name), "Method name cannot be empty");
checkArgument(!containsWhitespace(name), "Method name cannot contain spaces");
diff --git a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/Reply.java b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/Reply.java
index e6e08e4c..113d26b8 100644
--- a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/Reply.java
+++ b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/Reply.java
@@ -27,6 +27,7 @@ public final class Reply {
this.action = action;
}
+ @SafeVarargs
public static Reply of(Consumer action, Predicate... conditions) {
return new Reply(asList(conditions), action);
}
diff --git a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/sender/DefaultMessageSender.java b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/sender/DefaultMessageSender.java
index 6e49d764..f73f64ba 100644
--- a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/sender/DefaultMessageSender.java
+++ b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/sender/DefaultMessageSender.java
@@ -70,67 +70,67 @@ public class DefaultMessageSender implements MessageSender {
@Override
public Boolean answerInlineQuery(AnswerInlineQuery answerInlineQuery) throws TelegramApiException {
- return bot.answerInlineQuery(answerInlineQuery);
+ return bot.execute(answerInlineQuery);
}
@Override
public Boolean sendChatAction(SendChatAction sendChatAction) throws TelegramApiException {
- return bot.sendChatAction(sendChatAction);
+ return bot.execute(sendChatAction);
}
@Override
public Message forwardMessage(ForwardMessage forwardMessage) throws TelegramApiException {
- return bot.forwardMessage(forwardMessage);
+ return bot.execute(forwardMessage);
}
@Override
public Message sendLocation(SendLocation sendLocation) throws TelegramApiException {
- return bot.sendLocation(sendLocation);
+ return bot.execute(sendLocation);
}
@Override
public Message sendVenue(SendVenue sendVenue) throws TelegramApiException {
- return bot.sendVenue(sendVenue);
+ return bot.execute(sendVenue);
}
@Override
public Message sendContact(SendContact sendContact) throws TelegramApiException {
- return bot.sendContact(sendContact);
+ return bot.execute(sendContact);
}
@Override
public Boolean kickMember(KickChatMember kickChatMember) throws TelegramApiException {
- return bot.kickMember(kickChatMember);
+ return bot.execute(kickChatMember);
}
@Override
public Boolean unbanMember(UnbanChatMember unbanChatMember) throws TelegramApiException {
- return bot.unbanMember(unbanChatMember);
+ return bot.execute(unbanChatMember);
}
@Override
public Boolean leaveChat(LeaveChat leaveChat) throws TelegramApiException {
- return bot.leaveChat(leaveChat);
+ return bot.execute(leaveChat);
}
@Override
public Chat getChat(GetChat getChat) throws TelegramApiException {
- return bot.getChat(getChat);
+ return bot.execute(getChat);
}
@Override
public List getChatAdministrators(GetChatAdministrators getChatAdministrators) throws TelegramApiException {
- return bot.getChatAdministrators(getChatAdministrators);
+ return bot.execute(getChatAdministrators);
}
@Override
public ChatMember getChatMember(GetChatMember getChatMember) throws TelegramApiException {
- return bot.getChatMember(getChatMember);
+ return bot.execute(getChatMember);
}
@Override
public Integer getChatMemberCount(GetChatMemberCount getChatMemberCount) throws TelegramApiException {
- return bot.getChatMemberCount(getChatMemberCount);
+ return bot.execute(getChatMemberCount);
}
@Override
@@ -140,117 +140,117 @@ public class DefaultMessageSender implements MessageSender {
@Override
public Boolean deleteChatPhoto(DeleteChatPhoto deleteChatPhoto) throws TelegramApiException {
- return bot.deleteChatPhoto(deleteChatPhoto);
+ return bot.execute(deleteChatPhoto);
}
@Override
public void deleteChatPhoto(DeleteChatPhoto deleteChatPhoto, SentCallback sentCallback) throws TelegramApiException {
- bot.deleteChatPhoto(deleteChatPhoto, sentCallback);
+ bot.executeAsync(deleteChatPhoto, sentCallback);
}
@Override
public Boolean pinChatMessage(PinChatMessage pinChatMessage) throws TelegramApiException {
- return bot.pinChatMessage(pinChatMessage);
+ return bot.execute(pinChatMessage);
}
@Override
public void pinChatMessage(PinChatMessage pinChatMessage, SentCallback sentCallback) throws TelegramApiException {
- bot.pinChatMessage(pinChatMessage, sentCallback);
+ bot.executeAsync(pinChatMessage, sentCallback);
}
@Override
public Boolean unpinChatMessage(UnpinChatMessage unpinChatMessage) throws TelegramApiException {
- return bot.unpinChatMessage(unpinChatMessage);
+ return bot.execute(unpinChatMessage);
}
@Override
public void unpinChatMessage(UnpinChatMessage unpinChatMessage, SentCallback sentCallback) throws TelegramApiException {
- bot.unpinChatMessage(unpinChatMessage, sentCallback);
+ bot.executeAsync(unpinChatMessage, sentCallback);
}
@Override
public Boolean promoteChatMember(PromoteChatMember promoteChatMember) throws TelegramApiException {
- return bot.promoteChatMember(promoteChatMember);
+ return bot.execute(promoteChatMember);
}
@Override
public void promoteChatMember(PromoteChatMember promoteChatMember, SentCallback sentCallback) throws TelegramApiException {
- bot.promoteChatMember(promoteChatMember, sentCallback);
+ bot.executeAsync(promoteChatMember, sentCallback);
}
@Override
public Boolean restrictChatMember(RestrictChatMember restrictChatMember) throws TelegramApiException {
- return bot.restrictChatMember(restrictChatMember);
+ return bot.execute(restrictChatMember);
}
@Override
public void restrictChatMember(RestrictChatMember restrictChatMember, SentCallback sentCallback) throws TelegramApiException {
- bot.restrictChatMember(restrictChatMember, sentCallback);
+ bot.executeAsync(restrictChatMember, sentCallback);
}
@Override
public Boolean setChatDescription(SetChatDescription setChatDescription) throws TelegramApiException {
- return bot.setChatDescription(setChatDescription);
+ return bot.execute(setChatDescription);
}
@Override
public void setChatDescription(SetChatDescription setChatDescription, SentCallback sentCallback) throws TelegramApiException {
- bot.setChatDescription(setChatDescription, sentCallback);
+ bot.executeAsync(setChatDescription, sentCallback);
}
@Override
public Boolean setChatTite(SetChatTitle setChatTitle) throws TelegramApiException {
- return bot.setChatTitle(setChatTitle);
+ return bot.execute(setChatTitle);
}
@Override
public void setChatTite(SetChatTitle setChatTitle, SentCallback sentCallback) throws TelegramApiException {
- bot.setChatTitle(setChatTitle, sentCallback);
+ bot.executeAsync(setChatTitle, sentCallback);
}
@Override
public String exportChatInviteLink(ExportChatInviteLink exportChatInviteLink) throws TelegramApiException {
- return bot.exportChatInviteLink(exportChatInviteLink);
+ return bot.execute(exportChatInviteLink);
}
@Override
public void exportChatInviteLinkAsync(ExportChatInviteLink exportChatInviteLink, SentCallback sentCallback) throws TelegramApiException {
- bot.exportChatInviteLinkAsync(exportChatInviteLink, sentCallback);
+ bot.executeAsync(exportChatInviteLink, sentCallback);
}
@Override
public Boolean deleteMessage(DeleteMessage deleteMessage) throws TelegramApiException {
- return bot.deleteMessage(deleteMessage);
+ return bot.execute(deleteMessage);
}
@Override
public void deleteMessageAsync(DeleteMessage deleteMessage, SentCallback sentCallback) throws TelegramApiException {
- bot.deleteMessage(deleteMessage, sentCallback);
+ bot.executeAsync(deleteMessage, sentCallback);
}
@Override
public Serializable editMessageText(EditMessageText editMessageText) throws TelegramApiException {
- return bot.editMessageText(editMessageText);
+ return bot.execute(editMessageText);
}
@Override
public Serializable editMessageCaption(EditMessageCaption editMessageCaption) throws TelegramApiException {
- return bot.editMessageCaption(editMessageCaption);
+ return bot.execute(editMessageCaption);
}
@Override
public Serializable editMessageReplyMarkup(EditMessageReplyMarkup editMessageReplyMarkup) throws TelegramApiException {
- return bot.editMessageReplyMarkup(editMessageReplyMarkup);
+ return bot.execute(editMessageReplyMarkup);
}
@Override
public Boolean answerCallbackQuery(AnswerCallbackQuery answerCallbackQuery) throws TelegramApiException {
- return bot.answerCallbackQuery(answerCallbackQuery);
+ return bot.execute(answerCallbackQuery);
}
@Override
public UserProfilePhotos getUserProfilePhotos(GetUserProfilePhotos getUserProfilePhotos) throws TelegramApiException {
- return bot.getUserProfilePhotos(getUserProfilePhotos);
+ return bot.execute(getUserProfilePhotos);
}
@Override
@@ -275,7 +275,7 @@ public class DefaultMessageSender implements MessageSender {
@Override
public File getFile(GetFile getFile) throws TelegramApiException {
- return bot.getFile(getFile);
+ return bot.execute(getFile);
}
@Override
@@ -290,127 +290,127 @@ public class DefaultMessageSender implements MessageSender {
@Override
public Serializable setGameScore(SetGameScore setGameScore) throws TelegramApiException {
- return bot.setGameScore(setGameScore);
+ return bot.execute(setGameScore);
}
@Override
public Serializable getGameHighScores(GetGameHighScores getGameHighScores) throws TelegramApiException {
- return bot.getGameHighScores(getGameHighScores);
+ return bot.execute(getGameHighScores);
}
@Override
public Message sendGame(SendGame sendGame) throws TelegramApiException {
- return bot.sendGame(sendGame);
+ return bot.execute(sendGame);
}
@Override
public Boolean deleteWebhook(DeleteWebhook deleteWebhook) throws TelegramApiException {
- return bot.deleteWebhook(deleteWebhook);
+ return bot.execute(deleteWebhook);
}
@Override
public Message sendMessage(SendMessage sendMessage) throws TelegramApiException {
- return bot.sendMessage(sendMessage);
+ return bot.execute(sendMessage);
}
@Override
public void sendMessageAsync(SendMessage sendMessage, SentCallback sentCallback) throws TelegramApiException {
- bot.sendMessageAsync(sendMessage, sentCallback);
+ bot.executeAsync(sendMessage, sentCallback);
}
@Override
public void answerInlineQueryAsync(AnswerInlineQuery answerInlineQuery, SentCallback sentCallback) throws TelegramApiException {
- bot.answerInlineQueryAsync(answerInlineQuery, sentCallback);
+ bot.executeAsync(answerInlineQuery, sentCallback);
}
@Override
public void sendChatActionAsync(SendChatAction sendChatAction, SentCallback sentCallback) throws TelegramApiException {
- bot.sendChatActionAsync(sendChatAction, sentCallback);
+ bot.executeAsync(sendChatAction, sentCallback);
}
@Override
public void forwardMessageAsync(ForwardMessage forwardMessage, SentCallback sentCallback) throws TelegramApiException {
- bot.forwardMessageAsync(forwardMessage, sentCallback);
+ bot.executeAsync(forwardMessage, sentCallback);
}
@Override
public void sendLocationAsync(SendLocation sendLocation, SentCallback sentCallback) throws TelegramApiException {
- bot.sendLocationAsync(sendLocation, sentCallback);
+ bot.executeAsync(sendLocation, sentCallback);
}
@Override
public void sendVenueAsync(SendVenue sendVenue, SentCallback sentCallback) throws TelegramApiException {
- bot.sendVenueAsync(sendVenue, sentCallback);
+ bot.executeAsync(sendVenue, sentCallback);
}
@Override
public void sendContactAsync(SendContact sendContact, SentCallback sentCallback) throws TelegramApiException {
- bot.sendContactAsync(sendContact, sentCallback);
+ bot.executeAsync(sendContact, sentCallback);
}
@Override
public void kickMemberAsync(KickChatMember kickChatMember, SentCallback sentCallback) throws TelegramApiException {
- bot.kickMemberAsync(kickChatMember, sentCallback);
+ bot.executeAsync(kickChatMember, sentCallback);
}
@Override
public void unbanMemberAsync(UnbanChatMember unbanChatMember, SentCallback sentCallback) throws TelegramApiException {
- bot.unbanMemberAsync(unbanChatMember, sentCallback);
+ bot.executeAsync(unbanChatMember, sentCallback);
}
@Override
public void leaveChatAsync(LeaveChat leaveChat, SentCallback sentCallback) throws TelegramApiException {
- bot.leaveChatAsync(leaveChat, sentCallback);
+ bot.executeAsync(leaveChat, sentCallback);
}
@Override
public void getChatAsync(GetChat getChat, SentCallback sentCallback) throws TelegramApiException {
- bot.getChatAsync(getChat, sentCallback);
+ bot.executeAsync(getChat, sentCallback);
}
@Override
public void getChatAdministratorsAsync(GetChatAdministrators getChatAdministrators, SentCallback> sentCallback) throws TelegramApiException {
- bot.getChatAdministratorsAsync(getChatAdministrators, sentCallback);
+ bot.executeAsync(getChatAdministrators, sentCallback);
}
@Override
public void getChatMemberAsync(GetChatMember getChatMember, SentCallback sentCallback) throws TelegramApiException {
- bot.getChatMemberAsync(getChatMember, sentCallback);
+ bot.executeAsync(getChatMember, sentCallback);
}
@Override
public void getChatMemberCountAsync(GetChatMemberCount getChatMemberCount, SentCallback sentCallback) throws TelegramApiException {
- bot.getChatMemberCountAsync(getChatMemberCount, sentCallback);
+ bot.executeAsync(getChatMemberCount, sentCallback);
}
@Override
public void editMessageTextAsync(EditMessageText editMessageText, SentCallback sentCallback) throws TelegramApiException {
- bot.editMessageTextAsync(editMessageText, sentCallback);
+ bot.executeAsync(editMessageText, sentCallback);
}
@Override
public void editMessageCaptionAsync(EditMessageCaption editMessageCaption, SentCallback sentCallback) throws TelegramApiException {
- bot.editMessageCaptionAsync(editMessageCaption, sentCallback);
+ bot.executeAsync(editMessageCaption, sentCallback);
}
@Override
public void editMessageReplyMarkup(EditMessageReplyMarkup editMessageReplyMarkup, SentCallback sentCallback) throws TelegramApiException {
- bot.editMessageReplyMarkup(editMessageReplyMarkup, sentCallback);
+ bot.executeAsync(editMessageReplyMarkup, sentCallback);
}
@Override
public void answerCallbackQueryAsync(AnswerCallbackQuery answerCallbackQuery, SentCallback sentCallback) throws TelegramApiException {
- bot.answerCallbackQueryAsync(answerCallbackQuery, sentCallback);
+ bot.executeAsync(answerCallbackQuery, sentCallback);
}
@Override
public void getUserProfilePhotosAsync(GetUserProfilePhotos getUserProfilePhotos, SentCallback sentCallback) throws TelegramApiException {
- bot.getUserProfilePhotosAsync(getUserProfilePhotos, sentCallback);
+ bot.executeAsync(getUserProfilePhotos, sentCallback);
}
@Override
public void getFileAsync(GetFile getFile, SentCallback sentCallback) throws TelegramApiException {
- bot.getFileAsync(getFile, sentCallback);
+ bot.executeAsync(getFile, sentCallback);
}
@Override
@@ -425,22 +425,22 @@ public class DefaultMessageSender implements MessageSender {
@Override
public void setGameScoreAsync(SetGameScore setGameScore, SentCallback sentCallback) throws TelegramApiException {
- bot.setGameScoreAsync(setGameScore, sentCallback);
+ bot.executeAsync(setGameScore, sentCallback);
}
@Override
public void getGameHighScoresAsync(GetGameHighScores getGameHighScores, SentCallback> sentCallback) throws TelegramApiException {
- bot.getGameHighScoresAsync(getGameHighScores, sentCallback);
+ bot.executeAsync(getGameHighScores, sentCallback);
}
@Override
public void sendGameAsync(SendGame sendGame, SentCallback sentCallback) throws TelegramApiException {
- bot.sendGameAsync(sendGame, sentCallback);
+ bot.executeAsync(sendGame, sentCallback);
}
@Override
public void deleteWebhook(DeleteWebhook deleteWebhook, SentCallback sentCallback) throws TelegramApiException {
- bot.deleteWebhook(deleteWebhook, sentCallback);
+ bot.executeAsync(deleteWebhook, sentCallback);
}
@Override
diff --git a/telegrambots-extensions/README.md b/telegrambots-extensions/README.md
index 0578c717..e6176851 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
- 3.1.2
+ 3.2
```
2. Using Gradle:
```gradle
- compile "org.telegram:telegrambotsextensions:3.1.2"
+ compile "org.telegram:telegrambotsextensions:3.2"
```
\ No newline at end of file
diff --git a/telegrambots-extensions/pom.xml b/telegrambots-extensions/pom.xml
index c5a113d6..f4d66ff8 100644
--- a/telegrambots-extensions/pom.xml
+++ b/telegrambots-extensions/pom.xml
@@ -5,7 +5,7 @@
4.0.0
org.telegram
telegrambotsextensions
- 3.1.2
+ 3.2
jar
Telegram Bots Extensions
@@ -59,7 +59,7 @@
UTF-8
UTF-8
- 3.1.2
+ 3.2
diff --git a/telegrambots-extensions/src/main/java/org/telegram/telegrambots/bots/commandbot/TelegramLongPollingCommandBot.java b/telegrambots-extensions/src/main/java/org/telegram/telegrambots/bots/commandbot/TelegramLongPollingCommandBot.java
index 428e8279..1ddb1ac1 100644
--- a/telegrambots-extensions/src/main/java/org/telegram/telegrambots/bots/commandbot/TelegramLongPollingCommandBot.java
+++ b/telegrambots-extensions/src/main/java/org/telegram/telegrambots/bots/commandbot/TelegramLongPollingCommandBot.java
@@ -24,17 +24,6 @@ public abstract class TelegramLongPollingCommandBot extends TelegramLongPollingB
private final CommandRegistry commandRegistry;
private String botUsername;
- /**
- * Creates a TelegramLongPollingCommandBot using default options
- * Use ICommandRegistry's methods on this bot to register commands
- *
- * @deprecated Uses {@link #TelegramLongPollingCommandBot(String)} instead
- */
- @Deprecated
- public TelegramLongPollingCommandBot() {
- this(ApiContext.getInstance(DefaultBotOptions.class));
- }
-
/**
* Creates a TelegramLongPollingCommandBot using default options
* Use ICommandRegistry's methods on this bot to register commands
@@ -45,19 +34,6 @@ public abstract class TelegramLongPollingCommandBot extends TelegramLongPollingB
this(ApiContext.getInstance(DefaultBotOptions.class), botUsername);
}
- /**
- * Creates a TelegramLongPollingCommandBot with custom options and allowing commands with
- * usernames
- * Use ICommandRegistry's methods on this bot to register commands
- * @param options Bot options
- *
- * @deprecated Use {@link #TelegramLongPollingCommandBot(DefaultBotOptions, String)} instead
- */
- @Deprecated
- public TelegramLongPollingCommandBot(DefaultBotOptions options) {
- this(options, true);
- }
-
/**
* Creates a TelegramLongPollingCommandBot with custom options and allowing commands with
* usernames
@@ -69,21 +45,6 @@ public abstract class TelegramLongPollingCommandBot extends TelegramLongPollingB
this(options, true, botUsername);
}
- /**
- * Creates a TelegramLongPollingCommandBot
- * Use ICommandRegistry's methods on this bot to register commands
- * @param options Bot options
- * @param allowCommandsWithUsername true to allow commands with parameters (default),
- * false otherwise
- *
- * @deprecated Use {@link #TelegramLongPollingCommandBot(DefaultBotOptions, boolean, String)} instead
- */
- @Deprecated
- public TelegramLongPollingCommandBot(DefaultBotOptions options, boolean allowCommandsWithUsername) {
- super(options);
- this.commandRegistry = new CommandRegistry(allowCommandsWithUsername, getBotUsername());
- }
-
/**
* Creates a TelegramLongPollingCommandBot
* Use ICommandRegistry's methods on this bot to register commands
@@ -164,11 +125,10 @@ public abstract class TelegramLongPollingCommandBot extends TelegramLongPollingB
}
/**
- * TODO This method will become final in next mayor release, avoid overriding it
* @return Bot username
*/
@Override
- public String getBotUsername() {
+ public final String getBotUsername() {
return botUsername;
}
diff --git a/telegrambots-meta/pom.xml b/telegrambots-meta/pom.xml
index a1341b3d..8d9fecf3 100644
--- a/telegrambots-meta/pom.xml
+++ b/telegrambots-meta/pom.xml
@@ -5,7 +5,7 @@
4.0.0
org.telegram
telegrambots-meta
- 3.1.2
+ 3.2
jar
Telegram Bots Meta
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/ApiContext.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/ApiContext.java
index 76bab484..6a647bbd 100644
--- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/ApiContext.java
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/ApiContext.java
@@ -50,6 +50,7 @@ public class ApiContext {
return INJECTOR;
}
+ @SuppressWarnings("unchecked")
private static class ApiModule extends AbstractModule {
@Override
protected void configure() {
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/AddStickerToSet.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/AddStickerToSet.java
new file mode 100644
index 00000000..93b6031f
--- /dev/null
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/AddStickerToSet.java
@@ -0,0 +1,190 @@
+package org.telegram.telegrambots.api.methods.stickers;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.telegram.telegrambots.api.methods.PartialBotApiMethod;
+import org.telegram.telegrambots.api.objects.replykeyboard.ApiResponse;
+import org.telegram.telegrambots.api.objects.stickers.MaskPosition;
+import org.telegram.telegrambots.exceptions.TelegramApiRequestException;
+import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Objects;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * @author Ruben Bermudez
+ * @version 1.0
+ * Use this method to add a new sticker to a set created by the bot. Returns True on success.
+ */
+public class AddStickerToSet extends PartialBotApiMethod {
+ public static final String PATH = "addStickerToSet";
+
+ public static final String USERID_FIELD = "user_id";
+ public static final String NAME_FIELD = "name";
+ public static final String PNGSTICKER_FIELD = "png_sticker";
+ public static final String EMOJIS_FIELD = "emojis";
+ public static final String MASKPOSITION_FIELD = "mask_position";
+
+ private Integer userId; ///< User identifier of sticker set owner
+ private String name; ///< Sticker set name
+ private String emojis; ///< One or more emoji corresponding to the sticker
+ private MaskPosition maskPosition; ///< Position where the mask should be placed on faces
+ /**
+ * Png image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px,
+ * and either width or height must be exactly 512px. Pass a file_id as a String to send a file
+ * that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram
+ * to get a file from the Internet, or upload a new one using multipart/form-data.
+ */
+ private Boolean isNewPngSticker;
+ private String pngSticker;
+ private File pngStickerFile; ///< New sticker file
+ private InputStream pngStickerStream; ///< New sticker stream
+ private String pngStickerName; ///< New sticker stream name
+
+ public AddStickerToSet() {
+ super();
+ }
+
+ public AddStickerToSet(Integer userId, String name, String emojis) {
+ this.userId = checkNotNull(userId);
+ this.name = checkNotNull(name);
+ this.emojis = checkNotNull(emojis);
+ }
+
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public AddStickerToSet setUserId(Integer userId) {
+ this.userId = userId;
+ return this;
+ }
+
+ public String getPngSticker() {
+ return pngSticker;
+ }
+
+ public AddStickerToSet setPngSticker(String pngSticker) {
+ this.pngSticker = pngSticker;
+ this.isNewPngSticker = false;
+ return this;
+ }
+
+ public File getPngStickerFile() {
+ return pngStickerFile;
+ }
+
+ public AddStickerToSet setPngStickerFile(File pngStickerFile) {
+ Objects.requireNonNull(pngStickerFile, "pngStickerFile cannot be null!");
+ this.pngStickerFile = pngStickerFile;
+ this.isNewPngSticker = true;
+ return this;
+ }
+
+ public InputStream getPngStickerStream() {
+ return pngStickerStream;
+ }
+
+ public AddStickerToSet setPngStickerStream(String pngStickerName, InputStream pngStickerStream) {
+ Objects.requireNonNull(pngStickerName, "pngStickerName cannot be null!");
+ Objects.requireNonNull(pngStickerStream, "pngStickerStream cannot be null!");
+ this.pngStickerStream = pngStickerStream;
+ this.pngStickerName = pngStickerName;
+ this.isNewPngSticker = true;
+ return this;
+ }
+
+ public String getPngStickerName() {
+ return pngStickerName;
+ }
+
+ public Boolean isNewPngSticker() {
+ return isNewPngSticker;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public AddStickerToSet setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getEmojis() {
+ return emojis;
+ }
+
+ public AddStickerToSet setEmojis(String emojis) {
+ this.emojis = emojis;
+ return this;
+ }
+
+ public MaskPosition getMaskPosition() {
+ return maskPosition;
+ }
+
+ public AddStickerToSet setMaskPosition(MaskPosition maskPosition) {
+ this.maskPosition = maskPosition;
+ return this;
+ }
+
+ @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 creating new sticker set", result);
+ }
+ } catch (IOException e) {
+ throw new TelegramApiRequestException("Unable to deserialize response", e);
+ }
+ }
+
+ @Override
+ public void validate() throws TelegramApiValidationException {
+ if (userId == null || userId <= 0) {
+ throw new TelegramApiValidationException("userId can't be empty", this);
+ }
+ if (name == null || name.isEmpty()) {
+ throw new TelegramApiValidationException("name can't be empty", this);
+ }
+ if (emojis == null || emojis.isEmpty()) {
+ throw new TelegramApiValidationException("emojis can't be empty", this);
+ }
+ if (isNewPngSticker) {
+ if (pngStickerFile == null && pngStickerStream == null) {
+ throw new TelegramApiValidationException("PngSticker can't be empty", this);
+ }
+ if (pngStickerStream != null && (pngStickerName == null || pngStickerName.isEmpty())) {
+ throw new TelegramApiValidationException("PngSticker name can't be empty", this);
+ }
+ } else if (pngSticker == null) {
+ throw new TelegramApiValidationException("PngSticker can't be empty", this);
+ }
+ if (maskPosition != null) {
+ maskPosition.validate();
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "AddStickerToSet{" +
+ "userId=" + userId +
+ ", name='" + name + '\'' +
+ ", emojis='" + emojis + '\'' +
+ ", maskPosition=" + maskPosition +
+ ", isNewPngSticker=" + isNewPngSticker +
+ ", pngSticker='" + pngSticker + '\'' +
+ ", pngStickerFile=" + pngStickerFile +
+ ", pngStickerStream=" + pngStickerStream +
+ ", pngStickerName='" + pngStickerName + '\'' +
+ '}';
+ }
+}
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/CreateNewStickerSet.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/CreateNewStickerSet.java
new file mode 100644
index 00000000..a9c2b308
--- /dev/null
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/CreateNewStickerSet.java
@@ -0,0 +1,220 @@
+package org.telegram.telegrambots.api.methods.stickers;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.telegram.telegrambots.api.methods.PartialBotApiMethod;
+import org.telegram.telegrambots.api.objects.replykeyboard.ApiResponse;
+import org.telegram.telegrambots.api.objects.stickers.MaskPosition;
+import org.telegram.telegrambots.exceptions.TelegramApiRequestException;
+import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Objects;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * @author Ruben Bermudez
+ * @version 1.0
+ * Use this method to create new sticker set owned by a user. The bot will be able to edit the created sticker set.
+ * Returns True on success.
+ */
+public class CreateNewStickerSet extends PartialBotApiMethod {
+ public static final String PATH = "createNewStickerSet";
+
+ public static final String USERID_FIELD = "user_id";
+ public static final String NAME_FIELD = "name";
+ public static final String TITLE_FIELD = "title";
+ public static final String PNGSTICKER_FIELD = "png_sticker";
+ public static final String EMOJIS_FIELD = "emojis";
+ public static final String CONTAINSMASKS_FIELD = "contains_masks";
+ public static final String MASKPOSITION_FIELD = "mask_position";
+
+ private Integer userId; ///< User identifier of created sticker set owner
+ /**
+ * Name of sticker set, to be used in t.me/addstickers/ URLs.
+ * Can contain only english letters, digits and underscores.
+ * Must begin with a letter, can't contain consecutive underscores and must end in “_by_”.
+ * is case insensitive. 7-64 characters.
+ */
+ private String name; ///< Sticker set title, 1-64 characters
+ private String title; ///< User identifier of created sticker set owner
+ private String emojis; ///< One or more emoji corresponding to the sticker
+ private Boolean containsMasks; ///< Pass True, if a set of mask stickers should be created
+ private MaskPosition maskPosition; ///< Position where the mask should be placed on faces
+ /**
+ * Png image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px,
+ * and either width or height must be exactly 512px.
+ * Pass a file_id as a String to send a file that already exists on the Telegram servers,
+ * pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one
+ * using multipart/form-data. More info on Sending Files »
+ */
+ private Boolean isNewPngSticker;
+ private String pngSticker;
+ private java.io.File pngStickerFile; ///< New sticker file
+ private InputStream pngStickerStream; ///< New sticker stream
+ private String pngStickerName; ///< New sticker stream name
+
+ public CreateNewStickerSet() {
+ super();
+ }
+
+ public CreateNewStickerSet(Integer userId, String name, String title, String emojis) {
+ this.userId = checkNotNull(userId);
+ this.name = checkNotNull(name);
+ this.title = checkNotNull(title);
+ this.emojis = checkNotNull(emojis);
+ }
+
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+
+ public String getPngSticker() {
+ return pngSticker;
+ }
+
+ public CreateNewStickerSet setPngSticker(String pngSticker) {
+ this.pngSticker = pngSticker;
+ this.isNewPngSticker = false;
+ return this;
+ }
+
+ public File getPngStickerFile() {
+ return pngStickerFile;
+ }
+
+ public CreateNewStickerSet setPngStickerFile(File pngStickerFile) {
+ Objects.requireNonNull(pngStickerFile, "pngStickerFile cannot be null!");
+ this.pngStickerFile = pngStickerFile;
+ this.isNewPngSticker = true;
+ return this;
+ }
+
+ public InputStream getPngStickerStream() {
+ return pngStickerStream;
+ }
+
+ public CreateNewStickerSet setPngStickerStream(String pngStickerName, InputStream pngStickerStream) {
+ Objects.requireNonNull(pngStickerName, "pngStickerName cannot be null!");
+ Objects.requireNonNull(pngStickerStream, "pngStickerStream cannot be null!");
+ this.pngStickerStream = pngStickerStream;
+ this.pngStickerName = pngStickerName;
+ this.isNewPngSticker = true;
+ return this;
+ }
+
+ public String getPngStickerName() {
+ return pngStickerName;
+ }
+
+ public Boolean isNewPngSticker() {
+ return isNewPngSticker;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getEmojis() {
+ return emojis;
+ }
+
+ public void setEmojis(String emojis) {
+ this.emojis = emojis;
+ }
+
+ public Boolean getContainsMasks() {
+ return containsMasks;
+ }
+
+ public void setContainsMasks(Boolean containsMasks) {
+ this.containsMasks = containsMasks;
+ }
+
+ public MaskPosition getMaskPosition() {
+ return maskPosition;
+ }
+
+ public void setMaskPosition(MaskPosition maskPosition) {
+ this.maskPosition = maskPosition;
+ }
+
+ @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 creating new sticker set", result);
+ }
+ } catch (IOException e) {
+ throw new TelegramApiRequestException("Unable to deserialize response", e);
+ }
+ }
+
+ @Override
+ public void validate() throws TelegramApiValidationException {
+ if (userId == null || userId <= 0) {
+ throw new TelegramApiValidationException("userId can't be empty", this);
+ }
+ if (name == null || name.isEmpty()) {
+ throw new TelegramApiValidationException("name can't be empty", this);
+ }
+ if (title == null || title.isEmpty()) {
+ throw new TelegramApiValidationException("userId can't be empty", this);
+ }
+ if (emojis == null || emojis.isEmpty()) {
+ throw new TelegramApiValidationException("emojis can't be empty", this);
+ }
+ if (isNewPngSticker) {
+ if (pngStickerFile == null && pngStickerStream == null) {
+ throw new TelegramApiValidationException("PngSticker can't be empty", this);
+ }
+ if (pngStickerStream != null && (pngStickerName == null || pngStickerName.isEmpty())) {
+ throw new TelegramApiValidationException("PngSticker name can't be empty", this);
+ }
+ } else if (pngSticker == null) {
+ throw new TelegramApiValidationException("PngSticker can't be empty", this);
+ }
+ if (maskPosition != null) {
+ maskPosition.validate();
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "CreateNewStickerSet{" +
+ "userId=" + userId +
+ ", name='" + name + '\'' +
+ ", title='" + title + '\'' +
+ ", emojis='" + emojis + '\'' +
+ ", containsMasks=" + containsMasks +
+ ", maskPosition=" + maskPosition +
+ ", isNewPngSticker=" + isNewPngSticker +
+ ", pngSticker='" + pngSticker + '\'' +
+ ", pngStickerFile=" + pngStickerFile +
+ ", pngStickerStream=" + pngStickerStream +
+ ", pngStickerName='" + pngStickerName + '\'' +
+ '}';
+ }
+}
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/DeleteStickerFromSet.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/DeleteStickerFromSet.java
new file mode 100644
index 00000000..391de9a4
--- /dev/null
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/DeleteStickerFromSet.java
@@ -0,0 +1,78 @@
+package org.telegram.telegrambots.api.methods.stickers;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.telegram.telegrambots.api.methods.BotApiMethod;
+import org.telegram.telegrambots.api.objects.replykeyboard.ApiResponse;
+import org.telegram.telegrambots.exceptions.TelegramApiRequestException;
+import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
+
+import java.io.IOException;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * @author Ruben Bermudez
+ * @version 1.0
+ * Use this method to delete a sticker from a set created by the bot. Returns True on success.
+ */
+public class DeleteStickerFromSet extends BotApiMethod {
+ private static final String PATH = "deleteStickerFromSet";
+
+ private static final String STICKER_FIELD = "sticker";
+
+ @JsonProperty(STICKER_FIELD)
+ private String sticker; ///< File identifier of the sticker
+
+ public DeleteStickerFromSet() {
+ super();
+ }
+
+ public DeleteStickerFromSet(String sticker) {
+ super();
+ this.sticker = checkNotNull(sticker);
+ }
+
+ @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 deleting sticker from set", result);
+ }
+ } catch (IOException e) {
+ throw new TelegramApiRequestException("Unable to deserialize response", e);
+ }
+ }
+
+ @Override
+ public void validate() throws TelegramApiValidationException {
+ if (sticker == null || sticker.isEmpty()) {
+ throw new TelegramApiValidationException("sticker can't be null", this);
+ }
+ }
+
+ public String getSticker() {
+ return sticker;
+ }
+
+ public DeleteStickerFromSet setSticker(String sticker) {
+ this.sticker = sticker;
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ return "DeleteStickerFromSet{" +
+ "sticker='" + sticker + '\'' +
+ '}';
+ }
+}
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/GetStickerSet.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/GetStickerSet.java
new file mode 100644
index 00000000..9155c796
--- /dev/null
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/GetStickerSet.java
@@ -0,0 +1,79 @@
+package org.telegram.telegrambots.api.methods.stickers;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.telegram.telegrambots.api.methods.BotApiMethod;
+import org.telegram.telegrambots.api.objects.replykeyboard.ApiResponse;
+import org.telegram.telegrambots.api.objects.stickers.StickerSet;
+import org.telegram.telegrambots.exceptions.TelegramApiRequestException;
+import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
+
+import java.io.IOException;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * @author Ruben Bermudez
+ * @version 1.0
+ * Use this method to get a sticker set. On success, a StickerSet object is returned.
+ */
+public class GetStickerSet extends BotApiMethod {
+ private static final String PATH = "getStickerSet";
+
+ private static final String NAME_FIELD = "name";
+
+ @JsonProperty(NAME_FIELD)
+ private String name; ///< Name of the sticker set
+
+ public GetStickerSet(String name) {
+ super();
+ this.name = checkNotNull(name);
+ }
+
+ public GetStickerSet() {
+ super();
+ }
+
+ @Override
+ public String getMethod() {
+ return PATH;
+ }
+
+ @Override
+ public StickerSet 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 getting sticker set", result);
+ }
+ } catch (IOException e) {
+ throw new TelegramApiRequestException("Unable to deserialize response", e);
+ }
+ }
+
+ @Override
+ public void validate() throws TelegramApiValidationException {
+ if (name == null || name.isEmpty()) {
+ throw new TelegramApiValidationException("Name can't be null", this);
+ }
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public GetStickerSet setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ return "GetStickerSet{" +
+ "name='" + name + '\'' +
+ '}';
+ }
+}
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/SetStickerPositionInSet.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/SetStickerPositionInSet.java
new file mode 100644
index 00000000..49232f77
--- /dev/null
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/SetStickerPositionInSet.java
@@ -0,0 +1,94 @@
+package org.telegram.telegrambots.api.methods.stickers;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.telegram.telegrambots.api.methods.BotApiMethod;
+import org.telegram.telegrambots.api.objects.replykeyboard.ApiResponse;
+import org.telegram.telegrambots.exceptions.TelegramApiRequestException;
+import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
+
+import java.io.IOException;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * @author Ruben Bermudez
+ * @version 1.0
+ * Use this method to move a sticker in a set created by the bot to a specific position. Returns True on success.
+ */
+public class SetStickerPositionInSet extends BotApiMethod {
+ private static final String PATH = "getStickerSet";
+
+ private static final String STICKER_FIELD = "sticker";
+ private static final String POSITION_FIELD = "position";
+
+ @JsonProperty(STICKER_FIELD)
+ private String sticker; ///< File identifier of the sticker
+ @JsonProperty(STICKER_FIELD)
+ private Integer position; ///< New sticker position in the set, zero-based
+
+ public SetStickerPositionInSet(String sticker, Integer position) {
+ this.sticker = checkNotNull(sticker);
+ this.position = checkNotNull(position);
+ }
+
+ public SetStickerPositionInSet() {
+ super();
+ }
+
+ @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 sticker position in set", result);
+ }
+ } catch (IOException e) {
+ throw new TelegramApiRequestException("Unable to deserialize response", e);
+ }
+ }
+
+ @Override
+ public void validate() throws TelegramApiValidationException {
+ if (sticker == null || sticker.isEmpty()) {
+ throw new TelegramApiValidationException("sticker can't be null", this);
+ }
+ if (position == null || position > 0) {
+ throw new TelegramApiValidationException("position can't be null", this);
+ }
+ }
+
+ public String getSticker() {
+ return sticker;
+ }
+
+ public SetStickerPositionInSet setSticker(String sticker) {
+ this.sticker = sticker;
+ return this;
+ }
+
+ public Integer getPosition() {
+ return position;
+ }
+
+ public SetStickerPositionInSet setPosition(Integer position) {
+ this.position = position;
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ return "SetStickerPositionInSet{" +
+ "sticker='" + sticker + '\'' +
+ ", position=" + position +
+ '}';
+ }
+}
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/UploadStickerFile.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/UploadStickerFile.java
new file mode 100644
index 00000000..a4196a46
--- /dev/null
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/methods/stickers/UploadStickerFile.java
@@ -0,0 +1,114 @@
+package org.telegram.telegrambots.api.methods.stickers;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.telegram.telegrambots.api.methods.PartialBotApiMethod;
+import org.telegram.telegrambots.api.objects.File;
+import org.telegram.telegrambots.api.objects.replykeyboard.ApiResponse;
+import org.telegram.telegrambots.exceptions.TelegramApiRequestException;
+import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * @author Ruben Bermudez
+ * @version 1.0
+ * Use this method to upload a .png file with a sticker for later use in createNewStickerSet and addStickerToSet
+ * methods (can be used multiple times). Returns the uploaded File on success.
+ */
+public class UploadStickerFile extends PartialBotApiMethod {
+ public static final String PATH = "uploadStickerFile";
+
+ public static final String USERID_FIELD = "name";
+ public static final String PNGSTICKER_FIELD = "png_sticker";
+
+ private Integer userId; ///< User identifier of sticker file owner
+ /**
+ * Png image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px,
+ * and either width or height must be exactly 512px. More info on Sending Files »
+ */
+ private java.io.File newPngStickerFile; ///< New sticker file
+ private InputStream newPngStickerStream; ///< New sticker stream
+ private String newPngStickerName; ///< New sticker stream name
+
+ public UploadStickerFile() {
+ super();
+ }
+
+ public UploadStickerFile(Integer userId) {
+ super();
+ this.userId = checkNotNull(userId);
+ }
+
+ @Override
+ public File 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 uploading sticker set", result);
+ }
+ } catch (IOException e) {
+ throw new TelegramApiRequestException("Unable to deserialize response", e);
+ }
+ }
+
+ @Override
+ public void validate() throws TelegramApiValidationException {
+ if (userId == null || userId <= 0) {
+ throw new TelegramApiValidationException("userId can't be empty", this);
+ }
+ if (newPngStickerFile == null && newPngStickerStream == null) {
+ throw new TelegramApiValidationException("file or stream must be present", this);
+ }
+ if (newPngStickerStream != null && (newPngStickerName == null || newPngStickerName.isEmpty())) {
+ throw new TelegramApiValidationException("Stream name must be present", this);
+ }
+ }
+
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public UploadStickerFile setUserId(Integer userId) {
+ this.userId = userId;
+ return this;
+ }
+
+ public java.io.File getNewPngStickerFile() {
+ return newPngStickerFile;
+ }
+
+ public UploadStickerFile setNewPngSticker(java.io.File newPngStickerFile) {
+ this.newPngStickerFile = newPngStickerFile;
+ return this;
+ }
+
+ public InputStream getNewPngStickerStream() {
+ return newPngStickerStream;
+ }
+
+ public UploadStickerFile setNewPngSticker(String newPngStickerName, InputStream newPngStickerStream) {
+ this.newPngStickerName = newPngStickerName;
+ this.newPngStickerStream = newPngStickerStream;
+ return this;
+ }
+
+ public String getNewPngStickerName() {
+ return newPngStickerName;
+ }
+
+ @Override
+ public String toString() {
+ return "UploadStickerFile{" +
+ "userId=" + userId +
+ ", newPngStickerFile=" + newPngStickerFile +
+ ", newPngStickerStream=" + newPngStickerStream +
+ ", newPngStickerName='" + newPngStickerName + '\'' +
+ '}';
+ }
+}
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/Message.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/Message.java
index 17bdcd75..05ec6374 100644
--- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/Message.java
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/Message.java
@@ -5,6 +5,7 @@ import org.telegram.telegrambots.api.interfaces.BotApiObject;
import org.telegram.telegrambots.api.objects.games.Game;
import org.telegram.telegrambots.api.objects.payments.Invoice;
import org.telegram.telegrambots.api.objects.payments.SuccessfulPayment;
+import org.telegram.telegrambots.api.objects.stickers.Sticker;
import java.util.List;
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/stickers/MaskPosition.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/stickers/MaskPosition.java
new file mode 100644
index 00000000..599ea24e
--- /dev/null
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/stickers/MaskPosition.java
@@ -0,0 +1,89 @@
+package org.telegram.telegrambots.api.objects.stickers;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.telegram.telegrambots.api.interfaces.InputBotApiObject;
+import org.telegram.telegrambots.api.interfaces.Validable;
+import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
+
+/**
+ * @author Ruben Bermudez
+ * @version 3.2
+ * This object describes the position on faces where a mask should be placed by default.
+ */
+public class MaskPosition implements InputBotApiObject, Validable {
+ private static final String POINT_FIELD = "point";
+ private static final String XSHIFT_FIELD = "x_shift";
+ private static final String YSHIFT_FIELD = "y_shift";
+ private static final String SCALE_FIELD = "scale";
+
+ @JsonProperty(POINT_FIELD)
+ private String point; ///< The part of the face relative to which the mask should be placed. One of “forehead”, “eyes”, “mouth”, or “chin”.
+ @JsonProperty(XSHIFT_FIELD)
+ private Float xShift; ///< Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position.
+ @JsonProperty(YSHIFT_FIELD)
+ private Float yShift; ///< Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.
+ @JsonProperty(SCALE_FIELD)
+ private Float scale; ///< Mask scaling coefficient. For example, 2.0 means double size.
+
+ public MaskPosition() {
+ super();
+ }
+
+ public String getPoint() {
+ return point;
+ }
+
+ public Float getxShift() {
+ return xShift;
+ }
+
+ public Float getyShift() {
+ return yShift;
+ }
+
+ public Float getScale() {
+ return scale;
+ }
+
+ public void setPoint(String point) {
+ this.point = point;
+ }
+
+ public void setxShift(Float xShift) {
+ this.xShift = xShift;
+ }
+
+ public void setyShift(Float yShift) {
+ this.yShift = yShift;
+ }
+
+ public void setScale(Float scale) {
+ this.scale = scale;
+ }
+
+ @Override
+ public String toString() {
+ return "MaskPosition{" +
+ "point='" + point + '\'' +
+ ", xShift=" + xShift +
+ ", yShift=" + yShift +
+ ", scale=" + scale +
+ '}';
+ }
+
+ @Override
+ public void validate() throws TelegramApiValidationException {
+ if (point == null || point.isEmpty()) {
+ throw new TelegramApiValidationException("point can't be empty", this);
+ }
+ if (xShift == null) {
+ throw new TelegramApiValidationException("xShift can't be empty", this);
+ }
+ if (yShift == null) {
+ throw new TelegramApiValidationException("yShift can't be empty", this);
+ }
+ if (scale == null) {
+ throw new TelegramApiValidationException("scale can't be empty", this);
+ }
+ }
+}
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/Sticker.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/stickers/Sticker.java
similarity index 70%
rename from telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/Sticker.java
rename to telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/stickers/Sticker.java
index 1984dd90..a5b08951 100644
--- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/Sticker.java
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/stickers/Sticker.java
@@ -1,14 +1,14 @@
-package org.telegram.telegrambots.api.objects;
+package org.telegram.telegrambots.api.objects.stickers;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.telegram.telegrambots.api.interfaces.BotApiObject;
+import org.telegram.telegrambots.api.objects.PhotoSize;
/**
* @author Ruben Bermudez
* @version 1.0
* @brief This object represents a sticker.
- * @date 20 of June of 2015
*/
public class Sticker implements BotApiObject {
@@ -18,6 +18,8 @@ public class Sticker implements BotApiObject {
private static final String THUMB_FIELD = "thumb";
private static final String FILESIZE_FIELD = "file_size";
private static final String EMOJI_FIELD = "emoji";
+ private static final String SETNAME_FIELD = "set_name";
+ private static final String MASKPOSITON_FIELD = "mask_position";
@JsonProperty(FILEID_FIELD)
private String fileId; ///< Unique identifier for this file
@@ -31,6 +33,10 @@ public class Sticker implements BotApiObject {
private Integer fileSize; ///< Optional. File size
@JsonProperty(EMOJI_FIELD)
private String emoji; ///< Optional. Emoji associated with the sticker
+ @JsonProperty(SETNAME_FIELD)
+ private String setName; ///< Optional. Name of the sticker set to which the sticker belongs
+ @JsonProperty(MASKPOSITON_FIELD)
+ private String maskPosition; ///< Optional. For mask stickers, the position where the mask should be placed
public Sticker() {
super();
@@ -60,6 +66,14 @@ public class Sticker implements BotApiObject {
return emoji;
}
+ public String getSetName() {
+ return setName;
+ }
+
+ public String getMaskPosition() {
+ return maskPosition;
+ }
+
@Override
public String toString() {
return "Sticker{" +
@@ -68,7 +82,9 @@ public class Sticker implements BotApiObject {
", height=" + height +
", thumb=" + thumb +
", fileSize=" + fileSize +
- ", emoji=" + emoji +
+ ", emoji='" + emoji + '\'' +
+ ", setName='" + setName + '\'' +
+ ", maskPosition='" + maskPosition + '\'' +
'}';
}
}
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/stickers/StickerSet.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/stickers/StickerSet.java
new file mode 100644
index 00000000..20fb1e20
--- /dev/null
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/api/objects/stickers/StickerSet.java
@@ -0,0 +1,57 @@
+package org.telegram.telegrambots.api.objects.stickers;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.telegram.telegrambots.api.interfaces.BotApiObject;
+
+import java.util.List;
+
+/**
+ * @author Ruben Bermudez
+ * @version 1.0
+ * This object represents a sticker set.
+ */
+public class StickerSet implements BotApiObject {
+ private static final String NAME_FIELD = "name";
+ private static final String TITLE_FIELD = "title";
+ private static final String CONTAINSMASKS_FIELD = "contains_masks";
+ private static final String STICKERS_FIELD = "stickers";
+
+ @JsonProperty(NAME_FIELD)
+ private String name;
+ @JsonProperty(TITLE_FIELD)
+ private String title;
+ @JsonProperty(CONTAINSMASKS_FIELD)
+ private Boolean containsMasks;
+ @JsonProperty(STICKERS_FIELD)
+ private List stickers;
+
+ public StickerSet() {
+ super();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public Boolean getContainsMasks() {
+ return containsMasks;
+ }
+
+ public List getStickers() {
+ return stickers;
+ }
+
+ @Override
+ public String toString() {
+ return "StickerSet{" +
+ "name='" + name + '\'' +
+ ", title='" + title + '\'' +
+ ", containsMasks=" + containsMasks +
+ ", stickers=" + stickers +
+ '}';
+ }
+}
diff --git a/telegrambots-meta/src/main/java/org/telegram/telegrambots/bots/AbsSender.java b/telegrambots-meta/src/main/java/org/telegram/telegrambots/bots/AbsSender.java
index 09a0995f..e44babd1 100644
--- a/telegrambots-meta/src/main/java/org/telegram/telegrambots/bots/AbsSender.java
+++ b/telegrambots-meta/src/main/java/org/telegram/telegrambots/bots/AbsSender.java
@@ -7,6 +7,9 @@ import org.telegram.telegrambots.api.methods.groupadministration.*;
import org.telegram.telegrambots.api.methods.pinnedmessages.PinChatMessage;
import org.telegram.telegrambots.api.methods.pinnedmessages.UnpinChatMessage;
import org.telegram.telegrambots.api.methods.send.*;
+import org.telegram.telegrambots.api.methods.stickers.AddStickerToSet;
+import org.telegram.telegrambots.api.methods.stickers.CreateNewStickerSet;
+import org.telegram.telegrambots.api.methods.stickers.UploadStickerFile;
import org.telegram.telegrambots.api.methods.updates.DeleteWebhook;
import org.telegram.telegrambots.api.methods.updates.GetWebhookInfo;
import org.telegram.telegrambots.api.methods.updatingmessages.DeleteMessage;
@@ -52,6 +55,7 @@ public abstract class AbsSender {
// Send Requests
+ @Deprecated
public final Message sendMessage(SendMessage sendMessage) throws TelegramApiException {
if (sendMessage == null) {
throw new TelegramApiException("Parameter sendMessage can not be null");
@@ -60,6 +64,7 @@ public abstract class AbsSender {
return sendApiMethod(sendMessage);
}
+ @Deprecated
public final Boolean answerInlineQuery(AnswerInlineQuery answerInlineQuery) throws TelegramApiException {
if (answerInlineQuery == null) {
throw new TelegramApiException("Parameter answerInlineQuery can not be null");
@@ -68,6 +73,7 @@ public abstract class AbsSender {
return sendApiMethod(answerInlineQuery);
}
+ @Deprecated
public final Boolean sendChatAction(SendChatAction sendChatAction) throws TelegramApiException {
if (sendChatAction == null) {
throw new TelegramApiException("Parameter sendChatAction can not be null");
@@ -76,6 +82,7 @@ public abstract class AbsSender {
return sendApiMethod(sendChatAction);
}
+ @Deprecated
public final Message forwardMessage(ForwardMessage forwardMessage) throws TelegramApiException {
if (forwardMessage == null) {
throw new TelegramApiException("Parameter forwardMessage can not be null");
@@ -84,6 +91,7 @@ public abstract class AbsSender {
return sendApiMethod(forwardMessage);
}
+ @Deprecated
public final Message sendLocation(SendLocation sendLocation) throws TelegramApiException {
if (sendLocation == null) {
throw new TelegramApiException("Parameter sendLocation can not be null");
@@ -92,6 +100,7 @@ public abstract class AbsSender {
return sendApiMethod(sendLocation);
}
+ @Deprecated
public final Message sendVenue(SendVenue sendVenue) throws TelegramApiException {
if (sendVenue == null) {
throw new TelegramApiException("Parameter sendVenue can not be null");
@@ -100,6 +109,7 @@ public abstract class AbsSender {
return sendApiMethod(sendVenue);
}
+ @Deprecated
public final Message sendContact(SendContact sendContact) throws TelegramApiException {
if (sendContact == null) {
throw new TelegramApiException("Parameter sendContact can not be null");
@@ -108,6 +118,7 @@ public abstract class AbsSender {
return sendApiMethod(sendContact);
}
+ @Deprecated
public final Boolean kickMember(KickChatMember kickChatMember) throws TelegramApiException {
if (kickChatMember == null) {
throw new TelegramApiException("Parameter kickChatMember can not be null");
@@ -115,6 +126,7 @@ public abstract class AbsSender {
return sendApiMethod(kickChatMember);
}
+ @Deprecated
public final Boolean unbanMember(UnbanChatMember unbanChatMember) throws TelegramApiException {
if (unbanChatMember == null) {
throw new TelegramApiException("Parameter unbanChatMember can not be null");
@@ -122,6 +134,7 @@ public abstract class AbsSender {
return sendApiMethod(unbanChatMember);
}
+ @Deprecated
public final Boolean leaveChat(LeaveChat leaveChat) throws TelegramApiException {
if (leaveChat == null) {
throw new TelegramApiException("Parameter leaveChat can not be null");
@@ -129,6 +142,7 @@ public abstract class AbsSender {
return sendApiMethod(leaveChat);
}
+ @Deprecated
public final Chat getChat(GetChat getChat) throws TelegramApiException {
if (getChat == null) {
throw new TelegramApiException("Parameter getChat can not be null");
@@ -136,6 +150,7 @@ public abstract class AbsSender {
return sendApiMethod(getChat);
}
+ @Deprecated
public final String exportChatInviteLink(ExportChatInviteLink exportChatInviteLink) throws TelegramApiException {
if (exportChatInviteLink == null) {
throw new TelegramApiException("Parameter exportChatInviteLink can not be null");
@@ -143,6 +158,7 @@ public abstract class AbsSender {
return sendApiMethod(exportChatInviteLink);
}
+ @Deprecated
public final List getChatAdministrators(GetChatAdministrators getChatAdministrators) throws TelegramApiException {
if (getChatAdministrators == null) {
throw new TelegramApiException("Parameter getChatAdministrators can not be null");
@@ -150,6 +166,7 @@ public abstract class AbsSender {
return sendApiMethod(getChatAdministrators);
}
+ @Deprecated
public final ChatMember getChatMember(GetChatMember getChatMember) throws TelegramApiException {
if (getChatMember == null) {
throw new TelegramApiException("Parameter getChatMember can not be null");
@@ -157,6 +174,7 @@ public abstract class AbsSender {
return sendApiMethod(getChatMember);
}
+ @Deprecated
public final Integer getChatMemberCount(GetChatMemberCount getChatMemberCount) throws TelegramApiException {
if (getChatMemberCount == null) {
throw new TelegramApiException("Parameter getChatMemberCount can not be null");
@@ -164,6 +182,7 @@ public abstract class AbsSender {
return sendApiMethod(getChatMemberCount);
}
+ @Deprecated
public final Serializable editMessageText(EditMessageText editMessageText) throws TelegramApiException {
if (editMessageText == null) {
throw new TelegramApiException("Parameter editMessageText can not be null");
@@ -171,6 +190,7 @@ public abstract class AbsSender {
return sendApiMethod(editMessageText);
}
+ @Deprecated
public final Serializable editMessageCaption(EditMessageCaption editMessageCaption) throws TelegramApiException {
if (editMessageCaption == null) {
throw new TelegramApiException("Parameter editMessageCaption can not be null");
@@ -178,6 +198,7 @@ public abstract class AbsSender {
return sendApiMethod(editMessageCaption);
}
+ @Deprecated
public final Serializable editMessageReplyMarkup(EditMessageReplyMarkup editMessageReplyMarkup) throws TelegramApiException {
if (editMessageReplyMarkup == null) {
throw new TelegramApiException("Parameter editMessageReplyMarkup can not be null");
@@ -185,6 +206,7 @@ public abstract class AbsSender {
return sendApiMethod(editMessageReplyMarkup);
}
+ @Deprecated
public final Boolean answerCallbackQuery(AnswerCallbackQuery answerCallbackQuery) throws TelegramApiException {
if (answerCallbackQuery == null) {
throw new TelegramApiException("Parameter answerCallbackQuery can not be null");
@@ -192,6 +214,7 @@ public abstract class AbsSender {
return sendApiMethod(answerCallbackQuery);
}
+ @Deprecated
public final UserProfilePhotos getUserProfilePhotos(GetUserProfilePhotos getUserProfilePhotos) throws TelegramApiException {
if (getUserProfilePhotos == null) {
throw new TelegramApiException("Parameter getUserProfilePhotos can not be null");
@@ -200,6 +223,7 @@ public abstract class AbsSender {
return sendApiMethod(getUserProfilePhotos);
}
+ @Deprecated
public final File getFile(GetFile getFile) throws TelegramApiException {
if(getFile == null){
throw new TelegramApiException("Parameter getFile can not be null");
@@ -211,9 +235,7 @@ public abstract class AbsSender {
}
public final User getMe() throws TelegramApiException {
- GetMe getMe = new GetMe();
-
- return sendApiMethod(getMe);
+ return sendApiMethod(new GetMe());
}
public final WebhookInfo getWebhookInfo() throws TelegramApiException {
@@ -221,6 +243,7 @@ public abstract class AbsSender {
return sendApiMethod(getWebhookInfo);
}
+ @Deprecated
public final Serializable setGameScore(SetGameScore setGameScore) throws TelegramApiException {
if(setGameScore == null){
throw new TelegramApiException("Parameter setGameScore can not be null");
@@ -228,6 +251,7 @@ public abstract class AbsSender {
return sendApiMethod(setGameScore);
}
+ @Deprecated
public final Serializable getGameHighScores(GetGameHighScores getGameHighScores) throws TelegramApiException {
if(getGameHighScores == null){
throw new TelegramApiException("Parameter getGameHighScores can not be null");
@@ -235,6 +259,7 @@ public abstract class AbsSender {
return sendApiMethod(getGameHighScores);
}
+ @Deprecated
public final Message sendGame(SendGame sendGame) throws TelegramApiException {
if(sendGame == null){
throw new TelegramApiException("Parameter sendGame can not be null");
@@ -242,6 +267,7 @@ public abstract class AbsSender {
return sendApiMethod(sendGame);
}
+ @Deprecated
public final Boolean deleteWebhook(DeleteWebhook deleteWebhook) throws TelegramApiException {
if(deleteWebhook == null){
throw new TelegramApiException("Parameter deleteWebhook can not be null");
@@ -249,6 +275,7 @@ public abstract class AbsSender {
return sendApiMethod(deleteWebhook);
}
+ @Deprecated
public final Message sendInvoice(SendInvoice sendInvoice) throws TelegramApiException {
if(sendInvoice == null){
throw new TelegramApiException("Parameter sendInvoice can not be null");
@@ -256,6 +283,7 @@ public abstract class AbsSender {
return sendApiMethod(sendInvoice);
}
+ @Deprecated
public final Boolean answerShippingQuery(AnswerShippingQuery answerShippingQuery) throws TelegramApiException {
if(answerShippingQuery == null){
throw new TelegramApiException("Parameter answerShippingQuery can not be null");
@@ -263,6 +291,7 @@ public abstract class AbsSender {
return sendApiMethod(answerShippingQuery);
}
+ @Deprecated
public final Boolean answerPreCheckoutQuery(AnswerPreCheckoutQuery answerPreCheckoutQuery) throws TelegramApiException {
if(answerPreCheckoutQuery == null){
throw new TelegramApiException("Parameter answerPreCheckoutQuery can not be null");
@@ -270,6 +299,7 @@ public abstract class AbsSender {
return sendApiMethod(answerPreCheckoutQuery);
}
+ @Deprecated
public final Boolean deleteMessage(DeleteMessage deleteMessage) throws TelegramApiException {
if(deleteMessage == null){
throw new TelegramApiException("Parameter deleteMessage can not be null");
@@ -277,6 +307,7 @@ public abstract class AbsSender {
return sendApiMethod(deleteMessage);
}
+ @Deprecated
public final Boolean deleteChatPhoto(DeleteChatPhoto deleteChatPhoto) throws TelegramApiException {
if(deleteChatPhoto == null){
throw new TelegramApiException("Parameter deleteChatPhoto can not be null");
@@ -284,6 +315,7 @@ public abstract class AbsSender {
return sendApiMethod(deleteChatPhoto);
}
+ @Deprecated
public final Boolean pinChatMessage(PinChatMessage pinChatMessage) throws TelegramApiException {
if(pinChatMessage == null){
throw new TelegramApiException("Parameter pinChatMessage can not be null");
@@ -291,6 +323,7 @@ public abstract class AbsSender {
return sendApiMethod(pinChatMessage);
}
+ @Deprecated
public final Boolean unpinChatMessage(UnpinChatMessage unpinChatMessage) throws TelegramApiException {
if(unpinChatMessage == null){
throw new TelegramApiException("Parameter unpinChatMessage can not be null");
@@ -298,6 +331,7 @@ public abstract class AbsSender {
return sendApiMethod(unpinChatMessage);
}
+ @Deprecated
public final Boolean promoteChatMember(PromoteChatMember promoteChatMember) throws TelegramApiException {
if(promoteChatMember == null){
throw new TelegramApiException("Parameter promoteChatMember can not be null");
@@ -305,6 +339,7 @@ public abstract class AbsSender {
return sendApiMethod(promoteChatMember);
}
+ @Deprecated
public final Boolean restrictChatMember(RestrictChatMember restrictChatMember) throws TelegramApiException {
if(restrictChatMember == null){
throw new TelegramApiException("Parameter restrictChatMember can not be null");
@@ -312,6 +347,7 @@ public abstract class AbsSender {
return sendApiMethod(restrictChatMember);
}
+ @Deprecated
public final Boolean setChatDescription(SetChatDescription setChatDescription) throws TelegramApiException {
if(setChatDescription == null){
throw new TelegramApiException("Parameter setChatDescription can not be null");
@@ -319,6 +355,7 @@ public abstract class AbsSender {
return sendApiMethod(setChatDescription);
}
+ @Deprecated
public final Boolean setChatTitle(SetChatTitle setChatTitle) throws TelegramApiException {
if(setChatTitle == null){
throw new TelegramApiException("Parameter setChatTitle can not be null");
@@ -328,6 +365,7 @@ public abstract class AbsSender {
// Send Requests Async
+ @Deprecated
public final void sendMessageAsync(SendMessage sendMessage, SentCallback sentCallback) throws TelegramApiException {
if (sendMessage == null) {
throw new TelegramApiException("Parameter sendMessage can not be null");
@@ -340,6 +378,7 @@ public abstract class AbsSender {
sendApiMethodAsync(sendMessage, sentCallback);
}
+ @Deprecated
public final void answerInlineQueryAsync(AnswerInlineQuery answerInlineQuery, SentCallback sentCallback) throws TelegramApiException {
if (answerInlineQuery == null) {
throw new TelegramApiException("Parameter answerInlineQuery can not be null");
@@ -352,6 +391,7 @@ public abstract class AbsSender {
sendApiMethodAsync(answerInlineQuery, sentCallback);
}
+ @Deprecated
public final void sendChatActionAsync(SendChatAction sendChatAction, SentCallback sentCallback) throws TelegramApiException {
if (sendChatAction == null) {
throw new TelegramApiException("Parameter sendChatAction can not be null");
@@ -364,6 +404,7 @@ public abstract class AbsSender {
sendApiMethodAsync(sendChatAction, sentCallback);
}
+ @Deprecated
public final void forwardMessageAsync(ForwardMessage forwardMessage, SentCallback sentCallback) throws TelegramApiException {
if (forwardMessage == null) {
throw new TelegramApiException("Parameter forwardMessage can not be null");
@@ -376,6 +417,7 @@ public abstract class AbsSender {
sendApiMethodAsync(forwardMessage, sentCallback);
}
+ @Deprecated
public final void sendLocationAsync(SendLocation sendLocation, SentCallback sentCallback) throws TelegramApiException {
if (sendLocation == null) {
throw new TelegramApiException("Parameter sendLocation can not be null");
@@ -388,6 +430,7 @@ public abstract class AbsSender {
sendApiMethodAsync(sendLocation, sentCallback);
}
+ @Deprecated
public final void sendVenueAsync(SendVenue sendVenue, SentCallback sentCallback) throws TelegramApiException {
if (sendVenue == null) {
throw new TelegramApiException("Parameter sendVenue can not be null");
@@ -400,6 +443,7 @@ public abstract class AbsSender {
sendApiMethodAsync(sendVenue, sentCallback);
}
+ @Deprecated
public final void sendContactAsync(SendContact sendContact, SentCallback sentCallback) throws TelegramApiException {
if (sendContact == null) {
throw new TelegramApiException("Parameter sendContact can not be null");
@@ -411,6 +455,7 @@ public abstract class AbsSender {
sendApiMethodAsync(sendContact, sentCallback);
}
+ @Deprecated
public final void kickMemberAsync(KickChatMember kickChatMember, SentCallback sentCallback) throws TelegramApiException {
if (kickChatMember == null) {
throw new TelegramApiException("Parameter kickChatMember can not be null");
@@ -422,6 +467,7 @@ public abstract class AbsSender {
sendApiMethodAsync(kickChatMember, sentCallback);
}
+ @Deprecated
public final void unbanMemberAsync(UnbanChatMember unbanChatMember, SentCallback sentCallback) throws TelegramApiException {
if (unbanChatMember == null) {
throw new TelegramApiException("Parameter unbanChatMember can not be null");
@@ -433,6 +479,7 @@ public abstract class AbsSender {
sendApiMethodAsync(unbanChatMember, sentCallback);
}
+ @Deprecated
public final void leaveChatAsync(LeaveChat leaveChat, SentCallback sentCallback) throws TelegramApiException {
if (leaveChat == null) {
throw new TelegramApiException("Parameter leaveChat can not be null");
@@ -443,6 +490,7 @@ public abstract class AbsSender {
sendApiMethodAsync(leaveChat, sentCallback);
}
+ @Deprecated
public final void getChatAsync(GetChat getChat, SentCallback sentCallback) throws TelegramApiException {
if (getChat == null) {
throw new TelegramApiException("Parameter getChat can not be null");
@@ -453,6 +501,7 @@ public abstract class AbsSender {
sendApiMethodAsync(getChat, sentCallback);
}
+ @Deprecated
public final void exportChatInviteLinkAsync(ExportChatInviteLink exportChatInviteLink, SentCallback sentCallback) throws TelegramApiException {
if (exportChatInviteLink == null) {
throw new TelegramApiException("Parameter exportChatInviteLink can not be null");
@@ -463,6 +512,7 @@ public abstract class AbsSender {
sendApiMethodAsync(exportChatInviteLink, sentCallback);
}
+ @Deprecated
public final void getChatAdministratorsAsync(GetChatAdministrators getChatAdministrators, SentCallback> sentCallback) throws TelegramApiException {
if (getChatAdministrators == null) {
throw new TelegramApiException("Parameter getChatAdministrators can not be null");
@@ -473,6 +523,7 @@ public abstract class AbsSender {
sendApiMethodAsync(getChatAdministrators, sentCallback);
}
+ @Deprecated
public final void getChatMemberAsync(GetChatMember getChatMember, SentCallback sentCallback) throws TelegramApiException {
if (getChatMember == null) {
throw new TelegramApiException("Parameter getChatMember can not be null");
@@ -483,6 +534,7 @@ public abstract class AbsSender {
sendApiMethodAsync(getChatMember, sentCallback);
}
+ @Deprecated
public final void getChatMemberCountAsync(GetChatMemberCount getChatMemberCount, SentCallback sentCallback) throws TelegramApiException {
if (getChatMemberCount == null) {
throw new TelegramApiException("Parameter getChatMemberCount can not be null");
@@ -494,6 +546,7 @@ public abstract class AbsSender {
sendApiMethodAsync(getChatMemberCount, sentCallback);
}
+ @Deprecated
public final void editMessageTextAsync(EditMessageText editMessageText, SentCallback sentCallback) throws TelegramApiException {
if (editMessageText == null) {
throw new TelegramApiException("Parameter editMessageText can not be null");
@@ -505,6 +558,7 @@ public abstract class AbsSender {
sendApiMethodAsync(editMessageText, sentCallback);
}
+ @Deprecated
public final void editMessageCaptionAsync(EditMessageCaption editMessageCaption, SentCallback sentCallback) throws TelegramApiException {
if (editMessageCaption == null) {
throw new TelegramApiException("Parameter editMessageCaption can not be null");
@@ -516,6 +570,7 @@ public abstract class AbsSender {
sendApiMethodAsync(editMessageCaption, sentCallback);
}
+ @Deprecated
public final void editMessageReplyMarkup(EditMessageReplyMarkup editMessageReplyMarkup, SentCallback sentCallback) throws TelegramApiException {
if (editMessageReplyMarkup == null) {
throw new TelegramApiException("Parameter editMessageReplyMarkup can not be null");
@@ -527,6 +582,7 @@ public abstract class AbsSender {
sendApiMethodAsync(editMessageReplyMarkup, sentCallback);
}
+ @Deprecated
public final void answerCallbackQueryAsync(AnswerCallbackQuery answerCallbackQuery, SentCallback sentCallback) throws TelegramApiException {
if (answerCallbackQuery == null) {
throw new TelegramApiException("Parameter answerCallbackQuery can not be null");
@@ -538,6 +594,7 @@ public abstract class AbsSender {
sendApiMethodAsync(answerCallbackQuery, sentCallback);
}
+ @Deprecated
public final void getUserProfilePhotosAsync(GetUserProfilePhotos getUserProfilePhotos, SentCallback sentCallback) throws TelegramApiException {
if (getUserProfilePhotos == null) {
throw new TelegramApiException("Parameter getUserProfilePhotos can not be null");
@@ -549,6 +606,7 @@ public abstract class AbsSender {
sendApiMethodAsync(getUserProfilePhotos, sentCallback);
}
+ @Deprecated
public final void getFileAsync(GetFile getFile, SentCallback sentCallback) throws TelegramApiException {
if (getFile == null) {
throw new TelegramApiException("Parameter getFile can not be null");
@@ -564,19 +622,17 @@ public abstract class AbsSender {
if (sentCallback == null) {
throw new TelegramApiException("Parameter sentCallback can not be null");
}
- GetMe getMe = new GetMe();
- sendApiMethodAsync(getMe, sentCallback);
+ sendApiMethodAsync(new GetMe(), sentCallback);
}
public final void getWebhookInfoAsync(SentCallback sentCallback) throws TelegramApiException {
if (sentCallback == null) {
throw new TelegramApiException("Parameter sentCallback can not be null");
}
-
- GetWebhookInfo getWebhookInfo = new GetWebhookInfo();
- sendApiMethodAsync(getWebhookInfo, sentCallback);
+ sendApiMethodAsync(new GetWebhookInfo(), sentCallback);
}
+ @Deprecated
public final void setGameScoreAsync(SetGameScore setGameScore, SentCallback sentCallback) throws TelegramApiException {
if (setGameScore == null) {
throw new TelegramApiException("Parameter setGameScore can not be null");
@@ -587,6 +643,7 @@ public abstract class AbsSender {
sendApiMethodAsync(setGameScore, sentCallback);
}
+ @Deprecated
public final void getGameHighScoresAsync(GetGameHighScores getGameHighScores, SentCallback> sentCallback) throws TelegramApiException {
if (getGameHighScores == null) {
throw new TelegramApiException("Parameter getGameHighScores can not be null");
@@ -597,6 +654,7 @@ public abstract class AbsSender {
sendApiMethodAsync(getGameHighScores, sentCallback);
}
+ @Deprecated
public final void sendGameAsync(SendGame sendGame, SentCallback sentCallback) throws TelegramApiException {
if (sendGame == null) {
throw new TelegramApiException("Parameter sendGame can not be null");
@@ -607,6 +665,7 @@ public abstract class AbsSender {
sendApiMethodAsync(sendGame, sentCallback);
}
+ @Deprecated
public final void deleteWebhook(DeleteWebhook deleteWebhook, SentCallback sentCallback) throws TelegramApiException {
if (deleteWebhook == null) {
throw new TelegramApiException("Parameter deleteWebhook can not be null");
@@ -617,6 +676,7 @@ public abstract class AbsSender {
sendApiMethodAsync(deleteWebhook, sentCallback);
}
+ @Deprecated
public final void sendInvoice(SendInvoice sendInvoice, SentCallback sentCallback) throws TelegramApiException {
if (sendInvoice == null) {
throw new TelegramApiException("Parameter sendInvoice can not be null");
@@ -627,6 +687,7 @@ public abstract class AbsSender {
sendApiMethodAsync(sendInvoice, sentCallback);
}
+ @Deprecated
public final void answerShippingQuery(AnswerShippingQuery answerShippingQuery, SentCallback sentCallback) throws TelegramApiException {
if (answerShippingQuery == null) {
throw new TelegramApiException("Parameter answerShippingQuery can not be null");
@@ -637,6 +698,7 @@ public abstract class AbsSender {
sendApiMethodAsync(answerShippingQuery, sentCallback);
}
+ @Deprecated
public final void answerPreCheckoutQuery(AnswerPreCheckoutQuery answerPreCheckoutQuery, SentCallback sentCallback) throws TelegramApiException {
if (answerPreCheckoutQuery == null) {
throw new TelegramApiException("Parameter answerPreCheckoutQuery can not be null");
@@ -647,6 +709,7 @@ public abstract class AbsSender {
sendApiMethodAsync(answerPreCheckoutQuery, sentCallback);
}
+ @Deprecated
public final void deleteMessage(DeleteMessage deleteMessage, SentCallback sentCallback) throws TelegramApiException {
if (deleteMessage == null) {
throw new TelegramApiException("Parameter deleteMessage can not be null");
@@ -657,6 +720,7 @@ public abstract class AbsSender {
sendApiMethodAsync(deleteMessage, sentCallback);
}
+ @Deprecated
public final void deleteChatPhoto(DeleteChatPhoto deleteChatPhoto, SentCallback sentCallback) throws TelegramApiException {
if (deleteChatPhoto == null) {
throw new TelegramApiException("Parameter deleteChatPhoto can not be null");
@@ -667,6 +731,7 @@ public abstract class AbsSender {
sendApiMethodAsync(deleteChatPhoto, sentCallback);
}
+ @Deprecated
public final void pinChatMessage(PinChatMessage pinChatMessage, SentCallback sentCallback) throws TelegramApiException {
if (pinChatMessage == null) {
throw new TelegramApiException("Parameter pinChatMessage can not be null");
@@ -677,6 +742,7 @@ public abstract class AbsSender {
sendApiMethodAsync(pinChatMessage, sentCallback);
}
+ @Deprecated
public final void unpinChatMessage(UnpinChatMessage unpinChatMessage, SentCallback sentCallback) throws TelegramApiException {
if (unpinChatMessage == null) {
throw new TelegramApiException("Parameter unpinChatMessage can not be null");
@@ -687,6 +753,7 @@ public abstract class AbsSender {
sendApiMethodAsync(unpinChatMessage, sentCallback);
}
+ @Deprecated
public final void promoteChatMember(PromoteChatMember promoteChatMember, SentCallback sentCallback) throws TelegramApiException {
if (promoteChatMember == null) {
throw new TelegramApiException("Parameter promoteChatMember can not be null");
@@ -697,6 +764,7 @@ public abstract class AbsSender {
sendApiMethodAsync(promoteChatMember, sentCallback);
}
+ @Deprecated
public final void restrictChatMember(RestrictChatMember restrictChatMember, SentCallback sentCallback) throws TelegramApiException {
if (restrictChatMember == null) {
throw new TelegramApiException("Parameter restrictChatMember can not be null");
@@ -707,6 +775,7 @@ public abstract class AbsSender {
sendApiMethodAsync(restrictChatMember, sentCallback);
}
+ @Deprecated
public final void setChatDescription(SetChatDescription setChatDescription, SentCallback sentCallback) throws TelegramApiException {
if (setChatDescription == null) {
throw new TelegramApiException("Parameter setChatDescription can not be null");
@@ -717,6 +786,7 @@ public abstract class AbsSender {
sendApiMethodAsync(setChatDescription, sentCallback);
}
+ @Deprecated
public final void setChatTitle(SetChatTitle setChatTitle, SentCallback sentCallback) throws TelegramApiException {
if (setChatTitle == null) {
throw new TelegramApiException("Parameter setChatTitle can not be null");
@@ -763,6 +833,30 @@ public abstract class AbsSender {
*/
public abstract Boolean setChatPhoto(SetChatPhoto setChatPhoto) throws TelegramApiException;
+ /**
+ * Adds a new sticker to a set (https://core.telegram.org/bots/api#addStickerToSet)
+ * @param addStickerToSet Information of the sticker to set
+ * @return If success, true is returned
+ * @throws TelegramApiException If there is any error adding the sticker to the set
+ */
+ public abstract Boolean addStickerToSet(AddStickerToSet addStickerToSet) throws TelegramApiException;
+
+ /**
+ * Creates a new sticker set (https://core.telegram.org/bots/api#createNewStickerSet)
+ * @param createNewStickerSet Information of the sticker set to create
+ * @return If success, true is returned
+ * @throws TelegramApiException If there is any error creating the new sticker set
+ */
+ public abstract Boolean createNewStickerSet(CreateNewStickerSet createNewStickerSet) throws TelegramApiException;
+
+ /**
+ * Upload a new file as sticker (https://core.telegram.org/bots/api#uploadStickerFile)
+ * @param uploadStickerFile Information of the file to upload as sticker
+ * @return If success, true is returned
+ * @throws TelegramApiException If there is any error uploading the new file
+ */
+ public abstract File uploadStickerFile(UploadStickerFile uploadStickerFile) throws TelegramApiException;
+
// Simplified methods
protected abstract , Callback extends SentCallback> void sendApiMethodAsync(Method method, Callback callback);
diff --git a/telegrambots/pom.xml b/telegrambots/pom.xml
index b24cff82..80d06cd4 100644
--- a/telegrambots/pom.xml
+++ b/telegrambots/pom.xml
@@ -5,7 +5,7 @@
4.0.0
org.telegram
telegrambots
- 3.1.2
+ 3.2
jar
Telegram Bots
@@ -66,7 +66,7 @@
2.8.7
2.8.0
2.5
- 3.1.2
+ 3.2
diff --git a/telegrambots/src/main/java/org/telegram/telegrambots/bots/DefaultAbsSender.java b/telegrambots/src/main/java/org/telegram/telegrambots/bots/DefaultAbsSender.java
index 2faca1f2..6327b6cf 100644
--- a/telegrambots/src/main/java/org/telegram/telegrambots/bots/DefaultAbsSender.java
+++ b/telegrambots/src/main/java/org/telegram/telegrambots/bots/DefaultAbsSender.java
@@ -17,6 +17,9 @@ import org.apache.http.util.EntityUtils;
import org.telegram.telegrambots.api.methods.BotApiMethod;
import org.telegram.telegrambots.api.methods.groupadministration.SetChatPhoto;
import org.telegram.telegrambots.api.methods.send.*;
+import org.telegram.telegrambots.api.methods.stickers.AddStickerToSet;
+import org.telegram.telegrambots.api.methods.stickers.CreateNewStickerSet;
+import org.telegram.telegrambots.api.methods.stickers.UploadStickerFile;
import org.telegram.telegrambots.api.objects.File;
import org.telegram.telegrambots.api.objects.Message;
import org.telegram.telegrambots.exceptions.TelegramApiException;
@@ -478,6 +481,100 @@ public abstract class DefaultAbsSender extends AbsSender {
}
}
+
+ @Override
+ public Boolean addStickerToSet(AddStickerToSet addStickerToSet) throws TelegramApiException {
+ assertParamNotNull(addStickerToSet, "addStickerToSet");
+ addStickerToSet.validate();
+ try {
+ String url = getBaseUrl() + AddStickerToSet.PATH;
+ HttpPost httppost = configuredHttpPost(url);
+ MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+ builder.addTextBody(AddStickerToSet.USERID_FIELD, addStickerToSet.getUserId().toString(), TEXT_PLAIN_CONTENT_TYPE);
+ builder.addTextBody(AddStickerToSet.NAME_FIELD, addStickerToSet.getName(), TEXT_PLAIN_CONTENT_TYPE);
+ builder.addTextBody(AddStickerToSet.EMOJIS_FIELD, addStickerToSet.getEmojis(), TEXT_PLAIN_CONTENT_TYPE);
+ if (addStickerToSet.isNewPngSticker()) {
+ if (addStickerToSet.getPngStickerFile() != null) {
+ builder.addBinaryBody(AddStickerToSet.PNGSTICKER_FIELD, addStickerToSet.getPngStickerFile());
+ } else if (addStickerToSet.getPngStickerStream() != null) {
+ builder.addBinaryBody(AddStickerToSet.PNGSTICKER_FIELD, addStickerToSet.getPngStickerStream(), ContentType.APPLICATION_OCTET_STREAM, addStickerToSet.getPngStickerName());
+ } else {
+ builder.addBinaryBody(AddStickerToSet.PNGSTICKER_FIELD, new java.io.File(addStickerToSet.getPngSticker()), ContentType.create("image/png"), addStickerToSet.getPngStickerName());
+ }
+ } else {
+ builder.addTextBody(AddStickerToSet.PNGSTICKER_FIELD, addStickerToSet.getPngSticker());
+ }
+ if (addStickerToSet.getMaskPosition() != null) {
+ builder.addTextBody(AddStickerToSet.MASKPOSITION_FIELD, objectMapper.writeValueAsString(addStickerToSet.getMaskPosition()), TEXT_PLAIN_CONTENT_TYPE);
+ }
+ HttpEntity multipart = builder.build();
+ httppost.setEntity(multipart);
+
+ return addStickerToSet.deserializeResponse(sendHttpPostRequest(httppost));
+ } catch (IOException e) {
+ throw new TelegramApiException("Unable to add sticker to set", e);
+ }
+ }
+
+ @Override
+ public Boolean createNewStickerSet(CreateNewStickerSet createNewStickerSet) throws TelegramApiException {
+ assertParamNotNull(createNewStickerSet, "createNewStickerSet");
+ createNewStickerSet.validate();
+ try {
+ String url = getBaseUrl() + CreateNewStickerSet.PATH;
+ HttpPost httppost = configuredHttpPost(url);
+ MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+ builder.addTextBody(CreateNewStickerSet.USERID_FIELD, createNewStickerSet.getUserId().toString(), TEXT_PLAIN_CONTENT_TYPE);
+ builder.addTextBody(CreateNewStickerSet.NAME_FIELD, createNewStickerSet.getName(), TEXT_PLAIN_CONTENT_TYPE);
+ builder.addTextBody(CreateNewStickerSet.TITLE_FIELD, createNewStickerSet.getTitle(), TEXT_PLAIN_CONTENT_TYPE);
+ builder.addTextBody(CreateNewStickerSet.EMOJIS_FIELD, createNewStickerSet.getEmojis(), TEXT_PLAIN_CONTENT_TYPE);
+ builder.addTextBody(CreateNewStickerSet.CONTAINSMASKS_FIELD, createNewStickerSet.getContainsMasks().toString());
+ if (createNewStickerSet.isNewPngSticker()) {
+ if (createNewStickerSet.getPngStickerFile() != null) {
+ builder.addBinaryBody(CreateNewStickerSet.PNGSTICKER_FIELD, createNewStickerSet.getPngStickerFile());
+ } else if (createNewStickerSet.getPngStickerStream() != null) {
+ builder.addBinaryBody(CreateNewStickerSet.PNGSTICKER_FIELD, createNewStickerSet.getPngStickerStream(), ContentType.APPLICATION_OCTET_STREAM, createNewStickerSet.getPngStickerName());
+ } else {
+ builder.addBinaryBody(CreateNewStickerSet.PNGSTICKER_FIELD, new java.io.File(createNewStickerSet.getPngSticker()), ContentType.create("image/png"), createNewStickerSet.getPngStickerName());
+ }
+ } else {
+ builder.addTextBody(CreateNewStickerSet.PNGSTICKER_FIELD, createNewStickerSet.getPngSticker());
+ }
+ if (createNewStickerSet.getMaskPosition() != null) {
+ builder.addTextBody(CreateNewStickerSet.MASKPOSITION_FIELD, objectMapper.writeValueAsString(createNewStickerSet.getMaskPosition()), TEXT_PLAIN_CONTENT_TYPE);
+ }
+ HttpEntity multipart = builder.build();
+ httppost.setEntity(multipart);
+
+ return createNewStickerSet.deserializeResponse(sendHttpPostRequest(httppost));
+ } catch (IOException e) {
+ throw new TelegramApiException("Unable to create new sticker set", e);
+ }
+ }
+
+ @Override
+ public File uploadStickerFile(UploadStickerFile uploadStickerFile) throws TelegramApiException {
+ assertParamNotNull(uploadStickerFile, "uploadStickerFile");
+ uploadStickerFile.validate();
+ try {
+ String url = getBaseUrl() + UploadStickerFile.PATH;
+ HttpPost httppost = configuredHttpPost(url);
+ MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+ builder.addTextBody(UploadStickerFile.USERID_FIELD, uploadStickerFile.getUserId().toString(), TEXT_PLAIN_CONTENT_TYPE);
+ if (uploadStickerFile.getNewPngStickerFile() != null) {
+ builder.addBinaryBody(UploadStickerFile.PNGSTICKER_FIELD, uploadStickerFile.getNewPngStickerFile());
+ } else if (uploadStickerFile.getNewPngStickerStream() != null) {
+ builder.addBinaryBody(UploadStickerFile.PNGSTICKER_FIELD, uploadStickerFile.getNewPngStickerStream(), ContentType.APPLICATION_OCTET_STREAM, uploadStickerFile.getNewPngStickerName());
+ }
+ HttpEntity multipart = builder.build();
+ httppost.setEntity(multipart);
+
+ return uploadStickerFile.deserializeResponse(sendHttpPostRequest(httppost));
+ } catch (IOException e) {
+ throw new TelegramApiException("Unable to upload new sticker file", e);
+ }
+ }
+
// Simplified methods
@Override