Merge branch 'limitium-master' into dev
This commit is contained in:
commit
a3d0ec911e
@ -27,12 +27,12 @@ Just import add the library to your project with one of these options:
|
||||
<dependency>
|
||||
<groupId>org.telegram</groupId>
|
||||
<artifactId>telegrambots</artifactId>
|
||||
<version>2.4.2</version>
|
||||
<version>2.4.3</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/v2.4.2)
|
||||
3. Download the jar(including all dependencies) from [here](https://github.com/rubenlagus/TelegramBots/releases/tag/v2.4.2)
|
||||
2. Using Jitpack from [here](https://jitpack.io/#rubenlagus/TelegramBots/v2.4.3)
|
||||
3. Download the jar(including all dependencies) from [here](https://github.com/rubenlagus/TelegramBots/releases/tag/v2.4.3)
|
||||
|
||||
In order to use Long Polling mode, just create your own bot extending `org.telegram.telegrambots.bots.TelegramLongPollingBot`.
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
### <a id="2.4.2"></a>2.4.2 ###
|
||||
### <a id="2.4.3"></a>2.4.3 ###
|
||||
1. Split library in two modules to allow custom implementations.
|
||||
2. Use [Guice](https://github.com/google/guice) for dependency injection.
|
||||
3. Use [Jackson](https://github.com/FasterXML/jackson) for json (de)serialization.
|
||||
@ -8,4 +8,4 @@
|
||||
7. In `SentCallback` method `onError` changed second parameter to `TelegramApiRequestException` and `onResult` now receives the deserialized answer (of type `T`) instead of a `JSONObject` as second parameter
|
||||
8. Moved to MIT license
|
||||
|
||||
**[[How to update to version 2.4.2|How-To-Update#2.4.2]]**
|
||||
**[[How to update to version 2.4.3|How-To-Update#2.4.3]]**
|
@ -11,13 +11,13 @@ First you need ot get the library and add it to your project. There are few poss
|
||||
<dependency>
|
||||
<groupId>org.telegram</groupId>
|
||||
<artifactId>telegrambots</artifactId>
|
||||
<version>2.4.2</version>
|
||||
<version>2.4.3</version>
|
||||
</dependency>
|
||||
```
|
||||
* With **Gradle**:
|
||||
|
||||
```groovy
|
||||
compile group: 'org.telegram', name: 'telegrambots', version: '2.4.2'
|
||||
compile group: 'org.telegram', name: 'telegrambots', version: '2.4.3'
|
||||
```
|
||||
|
||||
2. Don't like **Maven Central Repository**? It can also be taken from [Jitpack](https://jitpack.io/#rubenlagus/TelegramBots).
|
||||
|
@ -1,4 +1,4 @@
|
||||
### <a id="2.4.2"></a>To version 2.4.2 ###
|
||||
### <a id="2.4.3"></a>To version 2.4.3 ###
|
||||
1. Replace `BotOptions` by `DefaultBotOptions`.
|
||||
2. At the beginning of your program (before creating your `TelegramBotsApi` instance, add the following line:
|
||||
```java
|
||||
|
4
pom.xml
4
pom.xml
@ -7,7 +7,7 @@
|
||||
<groupId>org.telegram</groupId>
|
||||
<artifactId>Bots</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>2.4.2</version>
|
||||
<version>2.4.3</version>
|
||||
|
||||
<modules>
|
||||
<module>telegrambots</module>
|
||||
@ -24,6 +24,6 @@
|
||||
|
||||
<properties>
|
||||
<maven.deploy.skip>true</maven.deploy.skip>
|
||||
<bots.version>2.4.2</bots.version>
|
||||
<bots.version>2.4.3</bots.version>
|
||||
</properties>
|
||||
</project>
|
@ -5,7 +5,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.telegram</groupId>
|
||||
<artifactId>telegrambots-meta</artifactId>
|
||||
<version>2.4.2</version>
|
||||
<version>2.4.3</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Telegram Bots Meta</name>
|
||||
|
@ -27,7 +27,7 @@ public class InlineQueryResultArticle implements InlineQueryResult {
|
||||
private static final String THUMBHEIGHT_FIELD = "thumb_height";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "article"; ///< Type of the result, must be “article”
|
||||
private final String type = "article"; ///< Type of the result, must be “article”
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(TITLE_FIELD)
|
||||
@ -53,7 +53,7 @@ public class InlineQueryResultArticle implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ public class InlineQueryResultAudio implements InlineQueryResult {
|
||||
private static final String CAPTION_FIELD = "caption";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "audio"; ///< Type of the result, must be "audio"
|
||||
private final String type = "audio"; ///< Type of the result, must be "audio"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result
|
||||
@JsonProperty(AUDIOURL_FIELD)
|
||||
@ -51,7 +51,7 @@ public class InlineQueryResultAudio implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ public class InlineQueryResultContact implements InlineQueryResult {
|
||||
private static final String THUMBHEIGHT_FIELD = "thumb_height";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "contact"; ///< Type of the result, must be "contact"
|
||||
private final String type = "contact"; ///< Type of the result, must be "contact"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(PHONE_NUMBER_FIELD)
|
||||
@ -54,7 +54,7 @@ public class InlineQueryResultContact implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ public class InlineQueryResultDocument implements InlineQueryResult {
|
||||
private static final String THUMBHEIGHT_FIELD = "thumb_height";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "document"; ///< Type of the result, must be "document"
|
||||
private final String type = "document"; ///< Type of the result, must be "document"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(TITLE_FIELD)
|
||||
@ -61,7 +61,7 @@ public class InlineQueryResultDocument implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ public class InlineQueryResultGame implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "game"; ///< Type of the result, must be "game"
|
||||
private final String type = "game"; ///< Type of the result, must be "game"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(GAMESHORTNAME_FIELD)
|
||||
@ -49,7 +49,7 @@ public class InlineQueryResultGame implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ public class InlineQueryResultGif implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "gif"; ///< Type of the result, must be "gif"
|
||||
private final String type = "gif"; ///< Type of the result, must be "gif"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(GIFURL_FIELD)
|
||||
@ -52,7 +52,7 @@ public class InlineQueryResultGif implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ public class InlineQueryResultLocation implements InlineQueryResult {
|
||||
private static final String THUMBHEIGHT_FIELD = "thumb_height";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "location"; ///< Type of the result, must be "location"
|
||||
private final String type = "location"; ///< Type of the result, must be "location"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(TITLE_FIELD)
|
||||
@ -54,7 +54,7 @@ public class InlineQueryResultLocation implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ public class InlineQueryResultMpeg4Gif implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "mpeg4_gif"; ///< Type of the result, must be "mpeg4_gif"
|
||||
private final String type = "mpeg4_gif"; ///< Type of the result, must be "mpeg4_gif"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(MPEG4URL_FIELD)
|
||||
@ -52,7 +52,7 @@ public class InlineQueryResultMpeg4Gif implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ public class InlineQueryResultPhoto implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "photo"; ///< Type of the result, must be “photo”
|
||||
private final String type = "photo"; ///< Type of the result, must be “photo”
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(PHOTOURL_FIELD)
|
||||
@ -58,7 +58,7 @@ public class InlineQueryResultPhoto implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ public class InlineQueryResultVenue implements InlineQueryResult {
|
||||
private static final String THUMBHEIGHT_FIELD = "thumb_height";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "venue"; ///< Type of the result, must be "venue"
|
||||
private final String type = "venue"; ///< Type of the result, must be "venue"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(TITLE_FIELD)
|
||||
@ -59,7 +59,7 @@ public class InlineQueryResultVenue implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ public class InlineQueryResultVideo implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "video"; ///< Type of the result, must be "video"
|
||||
private final String type = "video"; ///< Type of the result, must be "video"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result
|
||||
@JsonProperty(MIMETYPE_FIELD)
|
||||
@ -61,7 +61,7 @@ public class InlineQueryResultVideo implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ public class InlineQueryResultVoice implements InlineQueryResult {
|
||||
private static final String CAPTION_FIELD = "caption";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "voice"; ///< Type of the result, must be "voice"
|
||||
private final String type = "voice"; ///< Type of the result, must be "voice"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(VOICEURL_FIELD)
|
||||
@ -48,7 +48,7 @@ public class InlineQueryResultVoice implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ public class InlineQueryResultCachedAudio implements InlineQueryResult {
|
||||
private static final String CAPTION_FIELD = "caption";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "audio"; ///< Type of the result, must be "audio"
|
||||
private final String type = "audio"; ///< Type of the result, must be "audio"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result
|
||||
@JsonProperty(AUDIO_FILE_ID_FIELD)
|
||||
@ -43,7 +43,7 @@ public class InlineQueryResultCachedAudio implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ public class InlineQueryResultCachedDocument implements InlineQueryResult {
|
||||
private static final String INPUTMESSAGECONTENT_FIELD = "input_message_content";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "document"; ///< Type of the result, must be "document"
|
||||
private final String type = "document"; ///< Type of the result, must be "document"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(TITLE_FIELD)
|
||||
@ -50,7 +50,7 @@ public class InlineQueryResultCachedDocument implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ public class InlineQueryResultCachedGif implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "gif"; ///< Type of the result, must be "gif"
|
||||
private final String type = "gif"; ///< Type of the result, must be "gif"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(GIF_FILE_ID_FIELD)
|
||||
@ -44,7 +44,7 @@ public class InlineQueryResultCachedGif implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ public class InlineQueryResultCachedMpeg4Gif implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "mpeg4_gif"; ///< Type of the result, must be "mpeg4_gif"
|
||||
private final String type = "mpeg4_gif"; ///< Type of the result, must be "mpeg4_gif"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(MPEG4_FILE_ID_FIELD)
|
||||
@ -44,7 +44,7 @@ public class InlineQueryResultCachedMpeg4Gif implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ public class InlineQueryResultCachedPhoto implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "photo"; ///< Type of the result, must be “photo”
|
||||
private final String type = "photo"; ///< Type of the result, must be “photo”
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(PHOTOFILEID_FIELD)
|
||||
@ -47,7 +47,7 @@ public class InlineQueryResultCachedPhoto implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ public class InlineQueryResultCachedSticker implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "sticker"; ///< Type of the result, must be "sticker"
|
||||
private final String type = "sticker"; ///< Type of the result, must be "sticker"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(STICKER_FILE_ID_FIELD)
|
||||
@ -40,7 +40,7 @@ public class InlineQueryResultCachedSticker implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ public class InlineQueryResultCachedVideo implements InlineQueryResult {
|
||||
private static final String REPLY_MARKUP_FIELD = "reply_markup";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "video"; ///< Type of the result, must be "video"
|
||||
private final String type = "video"; ///< Type of the result, must be "video"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result
|
||||
@JsonProperty(VIDEO_FILE_ID_FIELD)
|
||||
@ -47,7 +47,7 @@ public class InlineQueryResultCachedVideo implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ public class InlineQueryResultCachedVoice implements InlineQueryResult {
|
||||
private static final String CAPTION_FIELD = "caption";
|
||||
|
||||
@JsonProperty(TYPE_FIELD)
|
||||
private static final String type = "voice"; ///< Type of the result, must be "voice"
|
||||
private final String type = "voice"; ///< Type of the result, must be "voice"
|
||||
@JsonProperty(ID_FIELD)
|
||||
private String id; ///< Unique identifier of this result, 1-64 bytes
|
||||
@JsonProperty(VOICE_FILE_ID_FIELD)
|
||||
@ -46,7 +46,7 @@ public class InlineQueryResultCachedVoice implements InlineQueryResult {
|
||||
super();
|
||||
}
|
||||
|
||||
public static String getType() {
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.telegram</groupId>
|
||||
<artifactId>telegrambots</artifactId>
|
||||
<version>2.4.2</version>
|
||||
<version>2.4.3</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Telegram Bots</name>
|
||||
@ -60,7 +60,7 @@
|
||||
<json.version>20160810</json.version>
|
||||
<jackson.version>2.8.5</jackson.version>
|
||||
<commonio.version>2.5</commonio.version>
|
||||
<bots.version>2.4.2</bots.version>
|
||||
<bots.version>2.4.3</bots.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
@ -108,7 +108,7 @@ public class TestRestApi extends JerseyTest {
|
||||
|
||||
assertEquals("{\"inline_query_id\":\"id\",\"results\":[{\"@class\":\"org." +
|
||||
"telegram.telegrambots.api.objects.inlinequery.result.InlineQueryResultArticle\"," +
|
||||
"\"id\":\"0\",\"title\":\"Title\",\"input_message_content\":{\"@class\":\"org." +
|
||||
"\"type\":\"article\",\"id\":\"0\",\"title\":\"Title\",\"input_message_content\":{\"@class\":\"org." +
|
||||
"telegram.telegrambots.api.objects.inlinequery.inputmessagecontent." +
|
||||
"InputTextMessageContent\",\"message_text\":\"Text\",\"parse_mode\":\"Markdown\"}," +
|
||||
"\"reply_markup\":{\"@class\":\"org.telegram.telegrambots.api.objects.replykeyboard" +
|
||||
@ -117,7 +117,7 @@ public class TestRestApi extends JerseyTest {
|
||||
"\"Button1\",\"callback_data\":\"Callback\"}]]},\"url\":\"Url\",\"hide_url\":false," +
|
||||
"\"description\":\"Description\",\"thumb_url\":\"ThumbUrl\",\"thumb_width\":10," +
|
||||
"\"thumb_height\":20},{\"@class\":\"org.telegram.telegrambots.api.objects." +
|
||||
"inlinequery.result.InlineQueryResultPhoto\",\"id\":\"1\",\"photo_url\":\"PhotoUrl" +
|
||||
"inlinequery.result.InlineQueryResultPhoto\",\"type\":\"photo\",\"id\":\"1\",\"photo_url\":\"PhotoUrl" +
|
||||
"\",\"mime_type\":\"image/jpg\",\"photo_width\":10,\"photo_height\":20,\"thumb_url" +
|
||||
"\":\"ThumbUrl\",\"title\":\"Title\",\"description\":\"Description\",\"caption\":" +
|
||||
"\"Caption\",\"input_message_content\":{\"@class\":\"org.telegram.telegrambots." +
|
||||
|
Loading…
Reference in New Issue
Block a user