Skip to content

Commit e434e8c

Browse files
committed
Add TelegramAware interface, add request-specific extensions
1 parent c49c39c commit e434e8c

17 files changed

+289
-2
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.pengrad.telegrambot
2+
3+
import com.pengrad.telegrambot.request.BaseRequest
4+
import com.pengrad.telegrambot.response.BaseResponse
5+
6+
interface TelegramAware {
7+
8+
fun <REQ : BaseRequest<REQ, RES>, RES : BaseResponse> execute(request: BaseRequest<REQ, RES>): RES
9+
10+
}

library/src/main/java/com/pengrad/telegrambot/TelegramBot.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import okhttp3.Interceptor;
1313
import okhttp3.OkHttpClient;
1414
import okhttp3.logging.HttpLoggingInterceptor;
15+
import org.jetbrains.annotations.NotNull;
1516

1617
import java.io.IOException;
1718
import java.io.InputStream;
@@ -23,7 +24,7 @@
2324
* Stas Parshin
2425
* 16 October 2015
2526
*/
26-
public class TelegramBot {
27+
public class TelegramBot implements TelegramAware {
2728

2829
private final String token;
2930
private final TelegramBotClient api;
@@ -41,7 +42,8 @@ public TelegramBot(String botToken) {
4142
this.updatesHandler = builder.updatesHandler;
4243
}
4344

44-
public <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(BaseRequest<T, R> request) {
45+
@NotNull
46+
public <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(@NotNull BaseRequest<T, R> request) {
4547
return api.send(request);
4648
}
4749

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.pengrad.telegrambot.utility.kotlin.extension
2+
3+
import com.pengrad.telegrambot.TelegramAware
4+
import com.pengrad.telegrambot.request.BaseRequest
5+
import com.pengrad.telegrambot.response.BaseResponse
6+
7+
inline fun <T : BaseRequest<T, R>, R : BaseResponse> TelegramAware.execute(
8+
request: T,
9+
modifier: T.() -> Unit = {}
10+
): R = execute(request.apply(modifier))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.pengrad.telegrambot.utility.kotlin.extension.request
2+
3+
import com.pengrad.telegrambot.TelegramAware
4+
import com.pengrad.telegrambot.request.AnswerCallbackQuery
5+
import com.pengrad.telegrambot.utility.kotlin.extension.execute
6+
7+
inline fun TelegramAware.answerCallbackQuery(
8+
callbackQueryId: String,
9+
modifier: AnswerCallbackQuery.() -> Unit = {}
10+
) = this.execute(AnswerCallbackQuery(callbackQueryId), modifier)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.pengrad.telegrambot.utility.kotlin.extension.request
2+
3+
import com.pengrad.telegrambot.TelegramAware
4+
import com.pengrad.telegrambot.request.AnswerPreCheckoutQuery
5+
import com.pengrad.telegrambot.utility.kotlin.extension.execute
6+
7+
inline fun TelegramAware.answerPreCheckoutQuery(
8+
preCheckoutId: String,
9+
modifier: AnswerPreCheckoutQuery.() -> Unit = {}
10+
) = this.execute(AnswerPreCheckoutQuery(preCheckoutId), modifier)
11+
12+
inline fun TelegramAware.answerPreCheckoutQuery(
13+
preCheckoutId: String,
14+
errorMessage: String,
15+
modifier: AnswerPreCheckoutQuery.() -> Unit = {}
16+
) = this.execute(AnswerPreCheckoutQuery(preCheckoutId, errorMessage), modifier)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.pengrad.telegrambot.utility.kotlin.extension.request
2+
3+
import com.pengrad.telegrambot.TelegramAware
4+
import com.pengrad.telegrambot.request.DeleteMessage
5+
import com.pengrad.telegrambot.utility.kotlin.extension.execute
6+
7+
inline fun TelegramAware.deleteMessage(
8+
chatId: Long,
9+
messageId: Int,
10+
modifier: DeleteMessage.() -> Unit = {}
11+
) = this.execute(DeleteMessage(chatId, messageId), modifier)
12+
13+
inline fun TelegramAware.deleteMessage(
14+
chatId: String,
15+
messageId: Int,
16+
modifier: DeleteMessage.() -> Unit = {}
17+
) = this.execute(DeleteMessage(chatId, messageId), modifier)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.pengrad.telegrambot.utility.kotlin.extension.request
2+
3+
import com.pengrad.telegrambot.TelegramAware
4+
import com.pengrad.telegrambot.request.EditMessageCaption
5+
import com.pengrad.telegrambot.utility.kotlin.extension.execute
6+
7+
inline fun TelegramAware.editMessageCaption(
8+
chatId: Long,
9+
messageId: Int,
10+
caption: String,
11+
modifier: EditMessageCaption.() -> Unit = {}
12+
) = this.execute(EditMessageCaption(chatId, messageId)) {
13+
caption(caption)
14+
modifier()
15+
}
16+
17+
inline fun TelegramAware.editMessageCaption(
18+
chatId: String,
19+
messageId: Int,
20+
caption: String,
21+
modifier: EditMessageCaption.() -> Unit = {}
22+
) = this.execute(EditMessageCaption(chatId, messageId)) {
23+
caption(caption)
24+
modifier()
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.pengrad.telegrambot.utility.kotlin.extension.request
2+
3+
import com.pengrad.telegrambot.TelegramAware
4+
import com.pengrad.telegrambot.model.request.InputMedia
5+
import com.pengrad.telegrambot.request.EditMessageMedia
6+
import com.pengrad.telegrambot.utility.kotlin.extension.execute
7+
8+
inline fun TelegramAware.editMessageMedia(
9+
chatId: Long,
10+
messageId: Int,
11+
media: InputMedia<*>,
12+
modifier: EditMessageMedia.() -> Unit = {}
13+
) = this.execute(EditMessageMedia(chatId, messageId, media), modifier)
14+
15+
inline fun TelegramAware.editMessageMedia(
16+
chatId: String,
17+
messageId: Int,
18+
media: InputMedia<*>,
19+
modifier: EditMessageMedia.() -> Unit = {}
20+
) = this.execute(EditMessageMedia(chatId, messageId, media), modifier)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.pengrad.telegrambot.utility.kotlin.extension.request
2+
3+
import com.pengrad.telegrambot.TelegramAware
4+
import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup
5+
import com.pengrad.telegrambot.request.EditMessageReplyMarkup
6+
import com.pengrad.telegrambot.utility.kotlin.extension.execute
7+
8+
inline fun TelegramAware.editMessageReplyMarkup(
9+
chatId: Long,
10+
messageId: Int,
11+
modifier: EditMessageReplyMarkup.() -> Unit = {}
12+
) = this.execute(EditMessageReplyMarkup(chatId, messageId), modifier)
13+
14+
inline fun TelegramAware.editMessageReplyMarkup(
15+
chatId: String,
16+
messageId: Int,
17+
modifier: EditMessageReplyMarkup.() -> Unit = {}
18+
) = this.execute(EditMessageReplyMarkup(chatId, messageId), modifier)
19+
20+
inline fun TelegramAware.removeInlineKeyboard(
21+
chatId: Long,
22+
messageId: Int,
23+
modifier: EditMessageReplyMarkup.() -> Unit = {}
24+
) = this.editMessageReplyMarkup(chatId, messageId) {
25+
replyMarkup(InlineKeyboardMarkup())
26+
modifier()
27+
}
28+
29+
inline fun TelegramAware.removeInlineKeyboard(
30+
chatId: String,
31+
messageId: Int,
32+
modifier: EditMessageReplyMarkup.() -> Unit = {}
33+
) = this.editMessageReplyMarkup(chatId, messageId) {
34+
replyMarkup(InlineKeyboardMarkup())
35+
modifier()
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.pengrad.telegrambot.utility.kotlin.extension.request
2+
3+
import com.pengrad.telegrambot.TelegramAware
4+
import com.pengrad.telegrambot.request.EditMessageText
5+
import com.pengrad.telegrambot.utility.kotlin.extension.execute
6+
7+
fun TelegramAware.editMessageText(
8+
chatId: Long,
9+
messageId: Int,
10+
text: String,
11+
modifier: EditMessageText.() -> Unit = {}
12+
) = this.execute(EditMessageText(chatId, messageId, text), modifier)
13+
14+
fun TelegramAware.editMessageText(
15+
chatId: String,
16+
messageId: Int,
17+
text: String,
18+
modifier: EditMessageText.() -> Unit = {}
19+
) = this.execute(EditMessageText(chatId, messageId, text), modifier)

0 commit comments

Comments
 (0)