Update version 3.5
This commit is contained in:
parent
083f020a35
commit
49c0fef3c5
@ -27,16 +27,16 @@ Just import add the library to your project with one of these options:
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>telegrambots</artifactId>
|
<artifactId>telegrambots</artifactId>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
```gradle
|
```gradle
|
||||||
compile "org.telegram:telegrambots:3.4"
|
compile "org.telegram:telegrambots:3.5"
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/3.4)
|
2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/3.5)
|
||||||
3. Download the jar(including all dependencies) from [here](https://github.com/rubenlagus/TelegramBots/releases/tag/v3.4)
|
3. Download the jar(including all dependencies) from [here](https://github.com/rubenlagus/TelegramBots/releases/tag/v3.5)
|
||||||
|
|
||||||
In order to use Long Polling mode, just create your own bot extending `org.telegram.telegrambots.bots.TelegramLongPollingBot`.
|
In order to use Long Polling mode, just create your own bot extending `org.telegram.telegrambots.bots.TelegramLongPollingBot`.
|
||||||
|
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
### <a id="3.5"></a>3.5 ###
|
||||||
|
1. Support for Api Version [3.5](https://core.telegram.org/bots/api-changelog#november-17-2017)
|
||||||
|
2. Bug fixing: #168, #329 and #335
|
||||||
|
3. Added processInvalidCommandUpdate (#337)
|
||||||
|
4. AbilitiyBot update and tutorial (#324)
|
||||||
|
5. Add DefaultBotCommand with message ID (#330)
|
||||||
|
6. New wiki content (#326 and #327)
|
||||||
|
|
||||||
### <a id="3.4"></a>3.4 ###
|
### <a id="3.4"></a>3.4 ###
|
||||||
1. Support for Api Version [3.4](https://core.telegram.org/bots/api-changelog#october-11-2017)
|
1. Support for Api Version [3.4](https://core.telegram.org/bots/api-changelog#october-11-2017)
|
||||||
2. Use regular expressions to split parameters in `TelegramLongPollingCommandBot` (#309)
|
2. Use regular expressions to split parameters in `TelegramLongPollingCommandBot` (#309)
|
||||||
|
@ -11,13 +11,13 @@ First you need ot get the library and add it to your project. There are few poss
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>telegrambots</artifactId>
|
<artifactId>telegrambots</artifactId>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
* With **Gradle**:
|
* With **Gradle**:
|
||||||
|
|
||||||
```groovy
|
```groovy
|
||||||
compile group: 'org.telegram', name: 'telegrambots', version: '3.4'
|
compile group: 'org.telegram', name: 'telegrambots', version: '3.5'
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Don't like **Maven Central Repository**? It can also be taken from [Jitpack](https://jitpack.io/#rubenlagus/TelegramBots).
|
2. Don't like **Maven Central Repository**? It can also be taken from [Jitpack](https://jitpack.io/#rubenlagus/TelegramBots).
|
||||||
|
@ -9,12 +9,12 @@ As with any Java project, you will need to set your dependencies.
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>telegrambots-abilties</artifactId>
|
<artifactId>telegrambots-abilties</artifactId>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
* **Gradle**
|
* **Gradle**
|
||||||
```groovy
|
```groovy
|
||||||
compile group: 'org.telegram', name: 'telegrambots-abilties', version: '3.4'
|
compile group: 'org.telegram', name: 'telegrambots-abilties', version: '3.5'
|
||||||
```
|
```
|
||||||
* [JitPack](https://jitpack.io/#rubenlagus/TelegramBots)
|
* [JitPack](https://jitpack.io/#rubenlagus/TelegramBots)
|
||||||
|
|
||||||
|
4
pom.xml
4
pom.xml
@ -7,7 +7,7 @@
|
|||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>Bots</artifactId>
|
<artifactId>Bots</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>telegrambots</module>
|
<module>telegrambots</module>
|
||||||
@ -26,6 +26,6 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.deploy.skip>true</maven.deploy.skip>
|
<maven.deploy.skip>true</maven.deploy.skip>
|
||||||
<bots.version>3.4</bots.version>
|
<bots.version>3.5</bots.version>
|
||||||
</properties>
|
</properties>
|
||||||
</project>
|
</project>
|
@ -18,19 +18,19 @@ Usage
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>telegrambots-abilities</artifactId>
|
<artifactId>telegrambots-abilities</artifactId>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
**Gradle**
|
**Gradle**
|
||||||
|
|
||||||
```gradle
|
```gradle
|
||||||
compile "org.telegram:telegrambots-abilities:3.4"
|
compile "org.telegram:telegrambots-abilities:3.5"
|
||||||
```
|
```
|
||||||
|
|
||||||
**JitPack** - [JitPack](https://jitpack.io/#rubenlagus/TelegramBots/v3.4)
|
**JitPack** - [JitPack](https://jitpack.io/#rubenlagus/TelegramBots/v3.5)
|
||||||
|
|
||||||
**Plain imports** - [Here](https://github.com/rubenlagus/TelegramBots/releases/tag/v3.4)
|
**Plain imports** - [Here](https://github.com/rubenlagus/TelegramBots/releases/tag/v3.5)
|
||||||
|
|
||||||
Motivation
|
Motivation
|
||||||
----------
|
----------
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>telegrambots-abilities</artifactId>
|
<artifactId>telegrambots-abilities</artifactId>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Telegram Ability Bot</name>
|
<name>Telegram Ability Bot</name>
|
||||||
@ -65,7 +65,7 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
<bots.version>3.4</bots.version>
|
<bots.version>3.5</bots.version>
|
||||||
<commonslang.version>3.5</commonslang.version>
|
<commonslang.version>3.5</commonslang.version>
|
||||||
<mapdb.version>3.0.4</mapdb.version>
|
<mapdb.version>3.0.4</mapdb.version>
|
||||||
<guava.version>19.0</guava.version>
|
<guava.version>19.0</guava.version>
|
||||||
|
@ -16,12 +16,12 @@ Just import add the library to your project with one of these options:
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>telegrambotsextensions</artifactId>
|
<artifactId>telegrambotsextensions</artifactId>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Using Gradle:
|
2. Using Gradle:
|
||||||
|
|
||||||
```gradle
|
```gradle
|
||||||
compile "org.telegram:telegrambotsextensions:3.4"
|
compile "org.telegram:telegrambotsextensions:3.5"
|
||||||
```
|
```
|
@ -5,7 +5,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>telegrambotsextensions</artifactId>
|
<artifactId>telegrambotsextensions</artifactId>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Telegram Bots Extensions</name>
|
<name>Telegram Bots Extensions</name>
|
||||||
@ -59,7 +59,7 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
<bots.version>3.4</bots.version>
|
<bots.version>3.5</bots.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>telegrambots-meta</artifactId>
|
<artifactId>telegrambots-meta</artifactId>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Telegram Bots Meta</name>
|
<name>Telegram Bots Meta</name>
|
||||||
|
@ -51,7 +51,7 @@ public class PromoteChatMember extends BotApiMethod<Boolean> {
|
|||||||
@JsonProperty(CANRESTRICTMEMBERS_FIELD)
|
@JsonProperty(CANRESTRICTMEMBERS_FIELD)
|
||||||
private Boolean canRestrictMembers; ///< Pass True, if the administrator can restrict, ban or unban chat members
|
private Boolean canRestrictMembers; ///< Pass True, if the administrator can restrict, ban or unban chat members
|
||||||
@JsonProperty(CANPINMESSAGES_FIELD)
|
@JsonProperty(CANPINMESSAGES_FIELD)
|
||||||
private Boolean canPinMessages; ///< Pass True, if the administrator can pin messages, supergroups only
|
private Boolean canPinMessages; ///< Pass True, if the administrator can pin messages
|
||||||
@JsonProperty(CANPROMOTEMEMBERS_FIELD)
|
@JsonProperty(CANPROMOTEMEMBERS_FIELD)
|
||||||
private Boolean canPromoteMembers; ///< Pass True, if the administrator can add new administrators with a subset of his own privileges or demote administrators that he has promoted, directly or indirectly (promoted by administators that were appointed by the him)
|
private Boolean canPromoteMembers; ///< Pass True, if the administrator can add new administrators with a subset of his own privileges or demote administrators that he has promoted, directly or indirectly (promoted by administators that were appointed by the him)
|
||||||
|
|
||||||
|
@ -15,8 +15,9 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|||||||
/**
|
/**
|
||||||
* @author Ruben Bermudez
|
* @author Ruben Bermudez
|
||||||
* @version 3.1
|
* @version 3.1
|
||||||
* Use this method to pin a message in a supergroup.
|
* Use this method to pin a message in a supergroup or channel.
|
||||||
* The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
|
* The bot must be an administrator in the chat for this to work and must have the ‘can_pin_messages’
|
||||||
|
* admin right in the supergroup or ‘can_edit_messages’ admin right in the channel.
|
||||||
* Returns True on success.
|
* Returns True on success.
|
||||||
*/
|
*/
|
||||||
public class PinChatMessage extends BotApiMethod<Boolean> {
|
public class PinChatMessage extends BotApiMethod<Boolean> {
|
||||||
@ -27,11 +28,15 @@ public class PinChatMessage extends BotApiMethod<Boolean> {
|
|||||||
private static final String DISABLENOTIFICATION_FIELD = "disable_notification";
|
private static final String DISABLENOTIFICATION_FIELD = "disable_notification";
|
||||||
|
|
||||||
@JsonProperty(CHATID_FIELD)
|
@JsonProperty(CHATID_FIELD)
|
||||||
private String chatId; ///< Required. Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
|
private String chatId; ///< Required. Unique identifier for the target chat or username of the target channel (in the format @channelusername)
|
||||||
@JsonProperty(MESSAGEID_FIELD)
|
@JsonProperty(MESSAGEID_FIELD)
|
||||||
private Integer messageId; ///< Required. Identifier of a message to pin
|
private Integer messageId; ///< Required. Identifier of a message to pin
|
||||||
@JsonProperty(DISABLENOTIFICATION_FIELD)
|
@JsonProperty(DISABLENOTIFICATION_FIELD)
|
||||||
private Boolean disableNotification; ///< Pass true, if it is not necessary to send a notification to all group members about the new pinned message
|
/**
|
||||||
|
* Pass True, if it is not necessary to send a notification to all chat members about the new pinned message.
|
||||||
|
* Notifications are always disabled in channels.
|
||||||
|
*/
|
||||||
|
private Boolean disableNotification;
|
||||||
|
|
||||||
public PinChatMessage() {
|
public PinChatMessage() {
|
||||||
super();
|
super();
|
||||||
|
@ -8,7 +8,6 @@ import org.telegram.telegrambots.exceptions.TelegramApiRequestException;
|
|||||||
import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
|
import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
@ -16,7 +15,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|||||||
/**
|
/**
|
||||||
* @author Ruben Bermudez
|
* @author Ruben Bermudez
|
||||||
* @version 3.1
|
* @version 3.1
|
||||||
* Use this method to unpin a message in a supergroup chat.
|
* Use this method to unpin a message in a supergroup or channel.
|
||||||
* The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
|
* The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
|
||||||
* Returns True on success.
|
* Returns True on success.
|
||||||
*/
|
*/
|
||||||
@ -26,7 +25,7 @@ public class UnpinChatMessage extends BotApiMethod<Boolean> {
|
|||||||
private static final String CHATID_FIELD = "chat_id";
|
private static final String CHATID_FIELD = "chat_id";
|
||||||
|
|
||||||
@JsonProperty(CHATID_FIELD)
|
@JsonProperty(CHATID_FIELD)
|
||||||
private String chatId; ///< Required. Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
|
private String chatId; ///< Required. Unique identifier for the target chat or username of the target channel (in the format @channelusername)
|
||||||
|
|
||||||
public UnpinChatMessage() {
|
public UnpinChatMessage() {
|
||||||
super();
|
super();
|
||||||
|
@ -42,7 +42,8 @@ public class SendInvoice extends BotApiMethod<Message> {
|
|||||||
private static final String IS_FLEXIBLE_FIELD = "is_flexible";
|
private static final String IS_FLEXIBLE_FIELD = "is_flexible";
|
||||||
private static final String DISABLE_NOTIFICATION_FIELD = "disable_notification";
|
private static final String DISABLE_NOTIFICATION_FIELD = "disable_notification";
|
||||||
private static final String REPLY_TO_MESSAGE_ID_FIELD = "reply_to_message_id";
|
private static final String REPLY_TO_MESSAGE_ID_FIELD = "reply_to_message_id";
|
||||||
private static final String REPLY_MARKUP_FIELD = "reply_markup\t";
|
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||||
|
private static final String PRIVIDER_DATA_FIELD = "provider_data";
|
||||||
|
|
||||||
@JsonProperty(CHATID_FIELD)
|
@JsonProperty(CHATID_FIELD)
|
||||||
private Integer chatId; ///< Unique identifier for the target private chat
|
private Integer chatId; ///< Unique identifier for the target private chat
|
||||||
@ -93,6 +94,13 @@ public class SendInvoice extends BotApiMethod<Message> {
|
|||||||
* @note If empty, one 'Buy title' button will be shown. If not empty, the first button must be a Pay button.
|
* @note If empty, one 'Buy title' button will be shown. If not empty, the first button must be a Pay button.
|
||||||
*/
|
*/
|
||||||
private InlineKeyboardMarkup replyMarkup;
|
private InlineKeyboardMarkup replyMarkup;
|
||||||
|
@JsonProperty(PRIVIDER_DATA_FIELD)
|
||||||
|
/**
|
||||||
|
* Optional JSON-encoded data about the invoice, which will be shared with the payment provider.
|
||||||
|
*
|
||||||
|
* @note A detailed description of required fields should be provided by the payment provider.
|
||||||
|
*/
|
||||||
|
private String providerData;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -305,6 +313,15 @@ public class SendInvoice extends BotApiMethod<Message> {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getProviderData() {
|
||||||
|
return providerData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendInvoice setProviderData(String providerData) {
|
||||||
|
this.providerData = providerData;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMethod() {
|
public String getMethod() {
|
||||||
return PATH;
|
return PATH;
|
||||||
@ -363,7 +380,7 @@ public class SendInvoice extends BotApiMethod<Message> {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "SendInvoice{" +
|
return "SendInvoice{" +
|
||||||
"chatId='" + chatId + '\'' +
|
"chatId=" + chatId +
|
||||||
", title='" + title + '\'' +
|
", title='" + title + '\'' +
|
||||||
", description='" + description + '\'' +
|
", description='" + description + '\'' +
|
||||||
", payload='" + payload + '\'' +
|
", payload='" + payload + '\'' +
|
||||||
@ -383,6 +400,7 @@ public class SendInvoice extends BotApiMethod<Message> {
|
|||||||
", disableNotification=" + disableNotification +
|
", disableNotification=" + disableNotification +
|
||||||
", replyToMessageId=" + replyToMessageId +
|
", replyToMessageId=" + replyToMessageId +
|
||||||
", replyMarkup=" + replyMarkup +
|
", replyMarkup=" + replyMarkup +
|
||||||
|
", providerData='" + providerData + '\'' +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,144 @@
|
|||||||
|
package org.telegram.telegrambots.api.methods.send;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
import org.telegram.telegrambots.api.methods.PartialBotApiMethod;
|
||||||
|
import org.telegram.telegrambots.api.objects.Message;
|
||||||
|
import org.telegram.telegrambots.api.objects.media.InputMedia;
|
||||||
|
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.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Ruben Bermudez
|
||||||
|
* @version 3.5
|
||||||
|
*
|
||||||
|
* Use this method to send a group of photos or videos as an album.
|
||||||
|
* On success, an array of the sent Messages is returned.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class SendMediaGroup extends PartialBotApiMethod<ArrayList<Message>> {
|
||||||
|
public static final String PATH = "sendMediaGroup";
|
||||||
|
|
||||||
|
public static final String CHATID_FIELD = "chat_id";
|
||||||
|
public static final String MEDIA_FIELD = "media";
|
||||||
|
public static final String REPLYTOMESSAGEID_FIELD = "reply_to_message_id";
|
||||||
|
public static final String DISABLENOTIFICATION_FIELD = "disable_notification";
|
||||||
|
|
||||||
|
@JsonProperty(CHATID_FIELD)
|
||||||
|
private String chatId; ///< Unique identifier for the target chat or username of the target channel (in the format @channelusername)
|
||||||
|
@JsonProperty(MEDIA_FIELD)
|
||||||
|
private List<InputMedia> media; ///< A JSON-serialized array describing photos and videos to be sent
|
||||||
|
@JsonProperty(REPLYTOMESSAGEID_FIELD)
|
||||||
|
private Integer replyToMessageId; ///< Optional. If the messages are a reply, ID of the original message
|
||||||
|
@JsonProperty(DISABLENOTIFICATION_FIELD)
|
||||||
|
private Boolean disableNotification; ///< Optional. Sends the messages silently. Users will receive a notification with no sound.
|
||||||
|
|
||||||
|
public SendMediaGroup() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendMediaGroup(String chatId, List<InputMedia> media) {
|
||||||
|
super();
|
||||||
|
this.chatId = checkNotNull(chatId);
|
||||||
|
this.media = checkNotNull(media);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendMediaGroup(Long chatId, List<InputMedia> media) {
|
||||||
|
super();
|
||||||
|
this.chatId = checkNotNull(chatId).toString();
|
||||||
|
this.media = checkNotNull(media);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getChatId() {
|
||||||
|
return chatId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendMediaGroup setChatId(String chatId) {
|
||||||
|
this.chatId = checkNotNull(chatId);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendMediaGroup setChatId(Long chatId) {
|
||||||
|
this.chatId = checkNotNull(chatId).toString();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getReplyToMessageId() {
|
||||||
|
return replyToMessageId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendMediaGroup setReplyToMessageId(Integer replyToMessageId) {
|
||||||
|
this.replyToMessageId = replyToMessageId;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getDisableNotification() {
|
||||||
|
return disableNotification;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendMediaGroup enableNotification() {
|
||||||
|
this.disableNotification = false;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendMediaGroup disableNotification() {
|
||||||
|
this.disableNotification = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<InputMedia> getMedia() {
|
||||||
|
return media;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMedia(List<InputMedia> media) {
|
||||||
|
this.media = media;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList<Message> deserializeResponse(String answer) throws TelegramApiRequestException {
|
||||||
|
try {
|
||||||
|
ApiResponse<ArrayList<Message>> result = OBJECT_MAPPER.readValue(answer,
|
||||||
|
new TypeReference<ApiResponse<ArrayList<Message>>>() {
|
||||||
|
});
|
||||||
|
if (result.getOk()) {
|
||||||
|
return result.getResult();
|
||||||
|
} else {
|
||||||
|
throw new TelegramApiRequestException("Error sending media group", result);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new TelegramApiRequestException("Unable to deserialize response", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validate() throws TelegramApiValidationException {
|
||||||
|
if (chatId == null) {
|
||||||
|
throw new TelegramApiValidationException("ChatId parameter can't be empty", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (media == null || media.isEmpty()) {
|
||||||
|
throw new TelegramApiValidationException("Media parameter can't be empty", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (InputMedia inputMedia : media) {
|
||||||
|
inputMedia.validate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SendMediaGroup{" +
|
||||||
|
"chatId='" + chatId + '\'' +
|
||||||
|
", media=" + media +
|
||||||
|
", replyToMessageId=" + replyToMessageId +
|
||||||
|
", disableNotification=" + disableNotification +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -41,7 +41,7 @@ public class ChatMember implements BotApiObject {
|
|||||||
@JsonProperty(CANPOSTMESSAGES_FIELD)
|
@JsonProperty(CANPOSTMESSAGES_FIELD)
|
||||||
private Boolean canPostMessages; ///< Optional. Administrators only. True, if the administrator can post in the channel, channels only
|
private Boolean canPostMessages; ///< Optional. Administrators only. True, if the administrator can post in the channel, channels only
|
||||||
@JsonProperty(CANEDITMESSAGES_FIELD)
|
@JsonProperty(CANEDITMESSAGES_FIELD)
|
||||||
private Boolean canEditMessages; ///< Optional. Administrators only. True, if the administrator can edit messages of other users, channels only
|
private Boolean canEditMessages; ///< Optional. Administrators only. True, if the administrator can edit messages of other users and can pin messages, channels only
|
||||||
@JsonProperty(CANDELETEMESSAGES_FIELD)
|
@JsonProperty(CANDELETEMESSAGES_FIELD)
|
||||||
private Boolean canDeleteMessages; ///< Optional. Administrators only. True, if the administrator can delete messages of other users
|
private Boolean canDeleteMessages; ///< Optional. Administrators only. True, if the administrator can delete messages of other users
|
||||||
@JsonProperty(CANINVITEUSERS_FIELD)
|
@JsonProperty(CANINVITEUSERS_FIELD)
|
||||||
@ -49,7 +49,7 @@ public class ChatMember implements BotApiObject {
|
|||||||
@JsonProperty(CANRESTRICTUSERS_FIELD)
|
@JsonProperty(CANRESTRICTUSERS_FIELD)
|
||||||
private Boolean canRestrictUsers; ///< Optional. Administrators only. True, if the administrator can restrict, ban or unban chat members
|
private Boolean canRestrictUsers; ///< Optional. Administrators only. True, if the administrator can restrict, ban or unban chat members
|
||||||
@JsonProperty(CANPINMESSAGES_FIELD)
|
@JsonProperty(CANPINMESSAGES_FIELD)
|
||||||
private Boolean canPinMessages; ///< Optional. Administrators only. True, if the administrator can pin messages, supergroups only
|
private Boolean canPinMessages; ///< Optional. Administrators only. True, if the administrator can pin messages
|
||||||
@JsonProperty(CANPROMOTEMEMBERS_FIELD)
|
@JsonProperty(CANPROMOTEMEMBERS_FIELD)
|
||||||
private Boolean canPromoteMembers; ///< Optional. Administrators only. True, if the administrator can add new administrators with a subset of his own privileges or demote administrators that it has promoted, directly or indirectly (promoted by administators that were appointed by the bot)
|
private Boolean canPromoteMembers; ///< Optional. Administrators only. True, if the administrator can add new administrators with a subset of his own privileges or demote administrators that it has promoted, directly or indirectly (promoted by administators that were appointed by the bot)
|
||||||
@JsonProperty(CANSENDMESSAGES_FIELD)
|
@JsonProperty(CANSENDMESSAGES_FIELD)
|
||||||
|
@ -55,6 +55,7 @@ public class Message implements BotApiObject {
|
|||||||
private static final String VIDEO_NOTE_FIELD = "video_note";
|
private static final String VIDEO_NOTE_FIELD = "video_note";
|
||||||
private static final String AUTHORSIGNATURE_FIELD = "author_signature";
|
private static final String AUTHORSIGNATURE_FIELD = "author_signature";
|
||||||
private static final String FORWARDSIGNATURE_FIELD = "forward_signature";
|
private static final String FORWARDSIGNATURE_FIELD = "forward_signature";
|
||||||
|
private static final String MEDIAGROUPID_FIELD = "media_group_id";
|
||||||
|
|
||||||
@JsonProperty(MESSAGEID_FIELD)
|
@JsonProperty(MESSAGEID_FIELD)
|
||||||
private Integer messageId; ///< Integer Unique message identifier
|
private Integer messageId; ///< Integer Unique message identifier
|
||||||
@ -172,7 +173,8 @@ public class Message implements BotApiObject {
|
|||||||
private String authorSignature; ///< Optional. Post author signature for posts in channel chats
|
private String authorSignature; ///< Optional. Post author signature for posts in channel chats
|
||||||
@JsonProperty(FORWARDSIGNATURE_FIELD)
|
@JsonProperty(FORWARDSIGNATURE_FIELD)
|
||||||
private String forwardSignature; ///< Optional. Post author signature for messages forwarded from channel chats
|
private String forwardSignature; ///< Optional. Post author signature for messages forwarded from channel chats
|
||||||
|
@JsonProperty(MEDIAGROUPID_FIELD)
|
||||||
|
private String mediaGroupId;
|
||||||
|
|
||||||
public Message() {
|
public Message() {
|
||||||
super();
|
super();
|
||||||
@ -412,6 +414,10 @@ public class Message implements BotApiObject {
|
|||||||
return forwardSignature;
|
return forwardSignature;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getMediaGroupId() {
|
||||||
|
return mediaGroupId;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Message{" +
|
return "Message{" +
|
||||||
@ -455,6 +461,7 @@ public class Message implements BotApiObject {
|
|||||||
", videoNote=" + videoNote +
|
", videoNote=" + videoNote +
|
||||||
", authorSignature='" + authorSignature + '\'' +
|
", authorSignature='" + authorSignature + '\'' +
|
||||||
", forwardSignature='" + forwardSignature + '\'' +
|
", forwardSignature='" + forwardSignature + '\'' +
|
||||||
|
", mediaGroupId='" + mediaGroupId + '\'' +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,132 @@
|
|||||||
|
package org.telegram.telegrambots.api.objects.media;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
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;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Ruben Bermudez
|
||||||
|
* @version 3.5
|
||||||
|
*/
|
||||||
|
public abstract class InputMedia<T> implements InputBotApiObject, Validable {
|
||||||
|
protected static final String TYPE_FIELD = "type";
|
||||||
|
private static final String MEDIA_FIELD = "media";
|
||||||
|
private static final String CAPTION_FIELD = "caption";
|
||||||
|
|
||||||
|
@JsonProperty(MEDIA_FIELD)
|
||||||
|
/**
|
||||||
|
* File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended),
|
||||||
|
* pass an HTTP URL for Telegram to get a file from the Internet, or pass "attach://<file_attach_name>"
|
||||||
|
* to upload a new one using multipart/form-data under <file_attach_name> name.
|
||||||
|
*/
|
||||||
|
private String media;
|
||||||
|
@JsonProperty(CAPTION_FIELD)
|
||||||
|
private String caption; ///< Optional. Caption of the media to be sent, 0-200 characters
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
private boolean isNewMedia; ///< True to upload a new media, false to use a fileId or URL
|
||||||
|
@JsonIgnore
|
||||||
|
private String mediaName; ///< Name of the media to upload
|
||||||
|
@JsonIgnore
|
||||||
|
private File newMediaFile; ///< New media file
|
||||||
|
@JsonIgnore
|
||||||
|
private InputStream newMediaStream; ///< New media stream
|
||||||
|
|
||||||
|
public InputMedia() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputMedia(String media, String caption) {
|
||||||
|
this.media = media;
|
||||||
|
this.caption = caption;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMedia() {
|
||||||
|
return media;
|
||||||
|
}
|
||||||
|
|
||||||
|
public File getMediaFile() {
|
||||||
|
return newMediaFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputStream getNewMediaStream() {
|
||||||
|
return newMediaStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMediaName() {
|
||||||
|
return mediaName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public boolean isNewMedia() {
|
||||||
|
return isNewMedia;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use this setter to send an existing file (using file_id) or an url.
|
||||||
|
* @param media File_id or URL of the file to send
|
||||||
|
* @return This object
|
||||||
|
*/
|
||||||
|
public T setMedia(String media) {
|
||||||
|
this.media = media;
|
||||||
|
this.isNewMedia = false;
|
||||||
|
return (T) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use this setter to send new file.
|
||||||
|
* @param mediaFile File to send
|
||||||
|
* @return This object
|
||||||
|
*/
|
||||||
|
public T setMedia(File mediaFile, String fileName) {
|
||||||
|
this.newMediaFile = mediaFile;
|
||||||
|
this.isNewMedia = true;
|
||||||
|
this.mediaName = fileName;
|
||||||
|
this.media = "attach://" + fileName;
|
||||||
|
return (T) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use this setter to send new file as stream.
|
||||||
|
* @param mediaStream File to send
|
||||||
|
* @return This object
|
||||||
|
*/
|
||||||
|
public T setMedia(InputStream mediaStream, String fileName) {
|
||||||
|
this.newMediaStream = mediaStream;
|
||||||
|
this.isNewMedia = true;
|
||||||
|
this.mediaName = fileName;
|
||||||
|
this.media = "attach://" + fileName;
|
||||||
|
return (T) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCaption() {
|
||||||
|
return caption;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputMedia setCaption(String caption) {
|
||||||
|
this.caption = caption;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validate() throws TelegramApiValidationException {
|
||||||
|
if (isNewMedia) {
|
||||||
|
if (mediaName == null || mediaName.isEmpty()) {
|
||||||
|
throw new TelegramApiValidationException("Media name can't be empty", this);
|
||||||
|
}
|
||||||
|
if (newMediaFile == null && newMediaStream == null) {
|
||||||
|
throw new TelegramApiValidationException("Media can't be empty", this);
|
||||||
|
}
|
||||||
|
} else if (media == null || media.isEmpty()) {
|
||||||
|
throw new TelegramApiValidationException("Media can't be empty", this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty(TYPE_FIELD)
|
||||||
|
public abstract String getType();
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package org.telegram.telegrambots.api.objects.media;
|
||||||
|
|
||||||
|
import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Ruben Bermudez
|
||||||
|
* @version 3.5
|
||||||
|
*
|
||||||
|
* Represents a photo.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class InputMediaPhoto extends InputMedia<InputMediaPhoto> {
|
||||||
|
private static final String TYPE = "photo";
|
||||||
|
|
||||||
|
public InputMediaPhoto() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputMediaPhoto(String media, String caption) {
|
||||||
|
super(media, caption);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validate() throws TelegramApiValidationException {
|
||||||
|
super.validate();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package org.telegram.telegrambots.api.objects.media;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Ruben Bermudez
|
||||||
|
* @version 3.5
|
||||||
|
*
|
||||||
|
* Represents a video.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class InputMediaVideo extends InputMedia<InputMediaVideo> {
|
||||||
|
private static final String TYPE = "video";
|
||||||
|
|
||||||
|
private static final String WIDTH_FIELD = "width";
|
||||||
|
private static final String HEIGHT_FIELD = "height";
|
||||||
|
private static final String DURATION_FIELD = "duration";
|
||||||
|
|
||||||
|
@JsonProperty(WIDTH_FIELD)
|
||||||
|
private int width; ///< Optional. Video width
|
||||||
|
@JsonProperty(HEIGHT_FIELD)
|
||||||
|
private int height; ///< Optional. Video height
|
||||||
|
@JsonProperty(DURATION_FIELD)
|
||||||
|
private int duration; ///< Optional. Video duration
|
||||||
|
|
||||||
|
public InputMediaVideo() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputMediaVideo(String media, String caption) {
|
||||||
|
super(media, caption);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWidth() {
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputMediaVideo setWidth(int width) {
|
||||||
|
this.width = width;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeight() {
|
||||||
|
return height;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputMediaVideo setHeight(int height) {
|
||||||
|
this.height = height;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDuration() {
|
||||||
|
return duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputMediaVideo setDuration(int duration) {
|
||||||
|
this.duration = duration;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validate() throws TelegramApiValidationException {
|
||||||
|
super.validate();
|
||||||
|
}
|
||||||
|
}
|
@ -825,6 +825,13 @@ public abstract class AbsSender {
|
|||||||
*/
|
*/
|
||||||
public abstract Message sendVoice(SendVoice sendVoice) throws TelegramApiException;
|
public abstract Message sendVoice(SendVoice sendVoice) throws TelegramApiException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a media group (https://core.telegram.org/bots/api#sendMediaGroup)
|
||||||
|
* @return If success, list of generated messages
|
||||||
|
* @throws TelegramApiException If there is any error sending the media group
|
||||||
|
*/
|
||||||
|
public abstract List<Message> sendMediaGroup(SendMediaGroup sendMediaGroup) throws TelegramApiException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set chat profile photo (https://core.telegram.org/bots/api#setChatPhoto)
|
* Set chat profile photo (https://core.telegram.org/bots/api#setChatPhoto)
|
||||||
* @param setChatPhoto Information to set the photo
|
* @param setChatPhoto Information to set the photo
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.telegram</groupId>
|
<groupId>org.telegram</groupId>
|
||||||
<artifactId>telegrambots</artifactId>
|
<artifactId>telegrambots</artifactId>
|
||||||
<version>3.4</version>
|
<version>3.5</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Telegram Bots</name>
|
<name>Telegram Bots</name>
|
||||||
@ -66,7 +66,7 @@
|
|||||||
<jackson.version>2.8.7</jackson.version>
|
<jackson.version>2.8.7</jackson.version>
|
||||||
<jacksonanotation.version>2.8.0</jacksonanotation.version>
|
<jacksonanotation.version>2.8.0</jacksonanotation.version>
|
||||||
<commonio.version>2.5</commonio.version>
|
<commonio.version>2.5</commonio.version>
|
||||||
<bots.version>3.4</bots.version>
|
<bots.version>3.5</bots.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
|
@ -22,6 +22,7 @@ import org.telegram.telegrambots.api.methods.stickers.CreateNewStickerSet;
|
|||||||
import org.telegram.telegrambots.api.methods.stickers.UploadStickerFile;
|
import org.telegram.telegrambots.api.methods.stickers.UploadStickerFile;
|
||||||
import org.telegram.telegrambots.api.objects.File;
|
import org.telegram.telegrambots.api.objects.File;
|
||||||
import org.telegram.telegrambots.api.objects.Message;
|
import org.telegram.telegrambots.api.objects.Message;
|
||||||
|
import org.telegram.telegrambots.api.objects.media.InputMedia;
|
||||||
import org.telegram.telegrambots.exceptions.TelegramApiException;
|
import org.telegram.telegrambots.exceptions.TelegramApiException;
|
||||||
import org.telegram.telegrambots.exceptions.TelegramApiRequestException;
|
import org.telegram.telegrambots.exceptions.TelegramApiRequestException;
|
||||||
import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
|
import org.telegram.telegrambots.exceptions.TelegramApiValidationException;
|
||||||
@ -33,6 +34,7 @@ import java.io.Serializable;
|
|||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@ -497,6 +499,49 @@ public abstract class DefaultAbsSender extends AbsSender {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Message> sendMediaGroup(SendMediaGroup sendMediaGroup) throws TelegramApiException {
|
||||||
|
assertParamNotNull(sendMediaGroup, "sendMediaGroup");
|
||||||
|
sendMediaGroup.validate();
|
||||||
|
|
||||||
|
try {
|
||||||
|
String url = getBaseUrl() + SendMediaGroup.PATH;
|
||||||
|
HttpPost httppost = configuredHttpPost(url);
|
||||||
|
|
||||||
|
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
|
||||||
|
builder.setLaxMode();
|
||||||
|
builder.setCharset(StandardCharsets.UTF_8);
|
||||||
|
builder.addTextBody(SendMediaGroup.CHATID_FIELD, sendMediaGroup.getChatId(), TEXT_PLAIN_CONTENT_TYPE);
|
||||||
|
builder.addTextBody(SendMediaGroup.MEDIA_FIELD, objectMapper.writeValueAsString(sendMediaGroup.getMedia()), TEXT_PLAIN_CONTENT_TYPE);
|
||||||
|
|
||||||
|
for (InputMedia inputMedia : sendMediaGroup.getMedia()) {
|
||||||
|
if (inputMedia.isNewMedia()) {
|
||||||
|
if (inputMedia.getMediaFile() != null) {
|
||||||
|
builder.addBinaryBody(inputMedia.getMediaName(), inputMedia.getMediaFile(), ContentType.APPLICATION_OCTET_STREAM, inputMedia.getMediaName());
|
||||||
|
} else if (inputMedia.getNewMediaStream() != null) {
|
||||||
|
builder.addBinaryBody(inputMedia.getMediaName(), inputMedia.getNewMediaStream(), ContentType.APPLICATION_OCTET_STREAM, inputMedia.getMediaName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sendMediaGroup.getDisableNotification() != null) {
|
||||||
|
builder.addTextBody(SendMediaGroup.DISABLENOTIFICATION_FIELD, sendMediaGroup.getDisableNotification().toString(), TEXT_PLAIN_CONTENT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sendMediaGroup.getReplyToMessageId() != null) {
|
||||||
|
builder.addTextBody(SendMediaGroup.REPLYTOMESSAGEID_FIELD, sendMediaGroup.getReplyToMessageId().toString(), TEXT_PLAIN_CONTENT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
HttpEntity multipart = builder.build();
|
||||||
|
httppost.setEntity(multipart);
|
||||||
|
|
||||||
|
return sendMediaGroup.deserializeResponse(sendHttpPostRequest(httppost));
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new TelegramApiException("Unable to set chat photo", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean addStickerToSet(AddStickerToSet addStickerToSet) throws TelegramApiException {
|
public Boolean addStickerToSet(AddStickerToSet addStickerToSet) throws TelegramApiException {
|
||||||
|
@ -26,6 +26,7 @@ public class DefaultBotOptions implements BotOptions {
|
|||||||
baseUrl = ApiConstants.BASE_URL;
|
baseUrl = ApiConstants.BASE_URL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getBaseUrl() {
|
public String getBaseUrl() {
|
||||||
return baseUrl;
|
return baseUrl;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user