From 162900b68da7d3b12c2631cbdeb508696c2513cf Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Sun, 2 Mar 2025 23:17:54 +0300 Subject: [PATCH 01/20] Rewrite SendPhoto to Kotlin --- .../telegrambot/request/SendPhoto.java | 60 --------- .../pengrad/telegrambot/request/SendPhoto.kt | 119 ++++++++++++++++++ 2 files changed, 119 insertions(+), 60 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.java b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.java deleted file mode 100644 index e240e564..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.pengrad.telegrambot.request; - -import com.pengrad.telegrambot.model.MessageEntity; -import com.pengrad.telegrambot.model.request.ParseMode; - -import java.io.File; - -/** - * stas - * 5/1/16. - */ -public class SendPhoto extends AbstractMultipartRequest { - - public SendPhoto(Object chatId, String photo) { - super(chatId, photo); - } - - public SendPhoto(Object chatId, File photo) { - super(chatId, photo); - } - - public SendPhoto(Object chatId, byte[] photo) { - super(chatId, photo); - } - - public SendPhoto caption(String caption) { - return add("caption", caption); - } - - public SendPhoto parseMode(ParseMode parseMode) { - return add("parse_mode", parseMode.name()); - } - - public SendPhoto captionEntities(MessageEntity... entities) { - return add("caption_entities", entities); - } - - public SendPhoto hasSpoiler(boolean has_spoiler) { - return add("has_spoiler", has_spoiler); - } - - public SendPhoto showCaptionAboveMedia(Boolean showCaptionAboveMedia) { - return add("show_caption_above_media", showCaptionAboveMedia); - } - - @Override - protected String getFileParamName() { - return "photo"; - } - - @Override - public String getDefaultFileName() { - return ContentTypes.PHOTO_FILE_NAME; - } - - @Override - public String getDefaultContentType() { - return ContentTypes.PHOTO_MIME_TYPE; - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt new file mode 100644 index 00000000..0c54634d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt @@ -0,0 +1,119 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.model.MessageEntity +import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import java.io.File + +class SendPhoto private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + photoUrl: String? = null, + photoFile: File? = null, + photoBytes: ByteArray? = null +) : KAbstractMultipartRequest( + chatId = chatId, + channelUsername = channelUsername, + + contentParameterName = "photo", + contentUrl = photoUrl, + contentFile = photoFile, + contentBytes = photoBytes, + + defaultFileName = ContentTypes.PHOTO_FILE_NAME, + defaultContentType = ContentTypes.PHOTO_MIME_TYPE +) { + + constructor(chatId: Long, photoUrl: String) : this( + chatId = chatId, + channelUsername = null, + photoUrl = photoUrl + ) + + constructor(channelUsername: String, photoUrl: String) : this( + chatId = null, + channelUsername = channelUsername, + photoUrl = photoUrl + ) + + + constructor(chatId: Long, photoFile: File) : this( + chatId = chatId, + channelUsername = null, + photoFile = photoFile + ) + + constructor(channelUsername: String, photoFile: File) : this( + chatId = null, + channelUsername = channelUsername, + photoFile = photoFile + ) + + + constructor(chatId: Long, photoBytes: ByteArray) : this( + chatId = chatId, + channelUsername = null, + photoBytes = photoBytes + ) + + constructor(channelUsername: String, photoBytes: ByteArray) : this( + chatId = null, + channelUsername = channelUsername, + photoBytes = photoBytes + ) + + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendPhoto(chatId, photo)")) + constructor(chatId: Any, photo: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + photoUrl = photo + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendPhoto(chatId, photo)")) + constructor(chatId: Any, photo: File) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + photoFile = photo + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendPhoto(chatId, photo)")) + constructor(chatId: Any, photo: ByteArray) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + photoBytes = photo + ) { + checkDeprecatedConstructorParameters() + } + + @Suppress("NOTHING_TO_INLINE") + private inline fun checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } + } + + var caption: String? by optionalRequestParameter() + var parseMode: ParseMode? by optionalRequestParameter() + var captionEntities: List? by optionalRequestParameter() + var showCaptionAboveMedia: Boolean? by optionalRequestParameter() + var hasSpoiler: Boolean? by optionalRequestParameter() + + fun caption(caption: String) = applySelf { this.caption = caption } + + fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode } + + fun captionEntities(captionEntities: List) = applySelf { this.captionEntities = captionEntities } + + fun captionEntities(vararg captionEntities: MessageEntity) = applySelf { this.captionEntities = captionEntities.toList() } + + fun showCaptionAboveMedia(showCaptionAboveMedia: Boolean) = applySelf { this.showCaptionAboveMedia = showCaptionAboveMedia } + + fun hasSpoiler(hasSpoiler: Boolean) = applySelf { this.hasSpoiler = hasSpoiler } + +} \ No newline at end of file From 16347ecee3e15ccb94ec144513d2ab993d22d431 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Sun, 2 Mar 2025 23:23:43 +0300 Subject: [PATCH 02/20] Rewrite SendVoice to Kotlin --- .../telegrambot/request/SendVoice.java | 56 --------- .../pengrad/telegrambot/request/SendVoice.kt | 116 ++++++++++++++++++ 2 files changed, 116 insertions(+), 56 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendVoice.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.java b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.java deleted file mode 100644 index 7ecd36aa..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.pengrad.telegrambot.request; - -import com.pengrad.telegrambot.model.MessageEntity; -import com.pengrad.telegrambot.model.request.ParseMode; - -import java.io.File; - -/** - * stas - * 5/1/16. - */ -public class SendVoice extends AbstractMultipartRequest { - - public SendVoice(Object chatId, String voice) { - super(chatId, voice); - } - - public SendVoice(Object chatId, File voice) { - super(chatId, voice); - } - - public SendVoice(Object chatId, byte[] voice) { - super(chatId, voice); - } - - public SendVoice caption(String caption) { - return add("caption", caption); - } - - public SendVoice parseMode(ParseMode parseMode) { - return add("parse_mode", parseMode.name()); - } - - public SendVoice captionEntities(MessageEntity... entities) { - return add("caption_entities", entities); - } - - public SendVoice duration(int duration) { - return add("duration", duration); - } - - @Override - protected String getFileParamName() { - return "voice"; - } - - @Override - public String getDefaultFileName() { - return ContentTypes.VOICE_FILE_NAME; - } - - @Override - public String getDefaultContentType() { - return ContentTypes.VOICE_MIME_TYPE; - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt new file mode 100644 index 00000000..5788452f --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt @@ -0,0 +1,116 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.model.MessageEntity +import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import java.io.File + +class SendVoice private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + voiceUrl: String? = null, + voiceFile: File? = null, + voiceBytes: ByteArray? = null +) : KAbstractMultipartRequest( + chatId = chatId, + channelUsername = channelUsername, + + contentParameterName = "voice", + contentUrl = voiceUrl, + contentFile = voiceFile, + contentBytes = voiceBytes, + + defaultFileName = ContentTypes.VOICE_FILE_NAME, + defaultContentType = ContentTypes.VOICE_MIME_TYPE +) { + + constructor(chatId: Long, voiceUrl: String) : this( + chatId = chatId, + channelUsername = null, + voiceUrl = voiceUrl + ) + + constructor(channelUsername: String, voiceUrl: String) : this( + chatId = null, + channelUsername = channelUsername, + voiceUrl = voiceUrl + ) + + + constructor(chatId: Long, voiceFile: File) : this( + chatId = chatId, + channelUsername = null, + voiceFile = voiceFile + ) + + constructor(channelUsername: String, voiceFile: File) : this( + chatId = null, + channelUsername = channelUsername, + voiceFile = voiceFile + ) + + + constructor(chatId: Long, voiceBytes: ByteArray) : this( + chatId = chatId, + channelUsername = null, + voiceBytes = voiceBytes + ) + + constructor(channelUsername: String, voiceBytes: ByteArray) : this( + chatId = null, + channelUsername = channelUsername, + voiceBytes = voiceBytes + ) + + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendVoice(chatId, voice)")) + constructor(chatId: Any, voice: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + voiceUrl = voice + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendVoice(chatId, voice)")) + constructor(chatId: Any, voice: File) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + voiceFile = voice + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendVoice(chatId, voice)")) + constructor(chatId: Any, voice: ByteArray) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + voiceBytes = voice + ) { + checkDeprecatedConstructorParameters() + } + + @Suppress("NOTHING_TO_INLINE") + private inline fun checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } + } + + var caption: String? by optionalRequestParameter() + var parseMode: ParseMode? by optionalRequestParameter() + var captionEntities: List? by optionalRequestParameter() + var duration: Int? by optionalRequestParameter() + + fun caption(caption: String) = applySelf { this.caption = caption } + + fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode } + + fun captionEntities(captionEntities: List) = applySelf { this.captionEntities = captionEntities } + + fun captionEntities(vararg captionEntities: MessageEntity) = applySelf { this.captionEntities = captionEntities.toList() } + + fun duration(duration: Int) = applySelf { this.duration = duration } + +} \ No newline at end of file From 78f9809bf5dba237dea51bc1746ab8f8f7a03f84 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 00:03:50 +0300 Subject: [PATCH 03/20] Create AbstractThumbnailedMultipartRequest --- .../AbstractThumbnailedMultipartRequest.kt | 41 +++++++++++++++++++ .../request/KAbstractMultipartRequest.kt | 13 +----- .../pengrad/telegrambot/request/SendVideo.kt | 2 +- 3 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/AbstractThumbnailedMultipartRequest.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/AbstractThumbnailedMultipartRequest.kt b/library/src/main/java/com/pengrad/telegrambot/request/AbstractThumbnailedMultipartRequest.kt new file mode 100644 index 00000000..85e82c0b --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/AbstractThumbnailedMultipartRequest.kt @@ -0,0 +1,41 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import java.io.File + +abstract class AbstractThumbnailedMultipartRequest>( + chatId: Long?, + channelUsername: String?, + + contentParameterName: String, + contentUrl: String?, + contentFile: File?, + contentBytes: ByteArray?, + + defaultFileName: String, + defaultContentType: String +) : KAbstractMultipartRequest( + chatId = chatId, + channelUsername = channelUsername, + + contentParameterName = contentParameterName, + contentUrl = contentUrl, + contentFile = contentFile, + contentBytes = contentBytes, + + defaultFileName = defaultFileName, + defaultContentType = defaultContentType +) { + + var thumbnailFile: File? by optionalRequestParameter(customParameterName = "thumbnail") + var thumbnailBytes: ByteArray? by optionalRequestParameter(customParameterName = "thumbnail") + + override val isMultipartRequest: Boolean + get() = super.isMultipartRequest + || thumbnailFile != null || thumbnailBytes != null + + fun thumbnail(thumbnail: File) = applySelf { this.thumbnailFile = thumbnail } + + fun thumbnail(thumbnail: ByteArray) = applySelf { this.thumbnailBytes = thumbnail } + +} \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/request/KAbstractMultipartRequest.kt b/library/src/main/java/com/pengrad/telegrambot/request/KAbstractMultipartRequest.kt index 89e05363..baa25fa5 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/KAbstractMultipartRequest.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/KAbstractMultipartRequest.kt @@ -23,13 +23,8 @@ abstract class KAbstractMultipartRequest>( val contentFile by optionalRequestParameter(contentFile, customParameterName = contentParameterName) val contentBytes by optionalRequestParameter(contentBytes, customParameterName = contentParameterName) - var thumbnailFile: File? by optionalRequestParameter(customParameterName = "thumbnail") - var thumbnailBytes: ByteArray? by optionalRequestParameter(customParameterName = "thumbnail") - - @get:JvmName("isUseMultipart") - val isMultipart: Boolean + open val isMultipartRequest: Boolean get() = contentFile != null || contentBytes != null - || thumbnailFile != null || thumbnailBytes != null @get:JvmName("getContentFileName") var fileName: String = contentFile?.name ?: defaultFileName @@ -37,15 +32,11 @@ abstract class KAbstractMultipartRequest>( @get:JvmName("getContentMimeType") var contentType: String = defaultContentType - fun thumbnail(thumbnail: File) = applySelf { this.thumbnailFile = thumbnail } - - fun thumbnail(thumbnail: ByteArray) = applySelf { this.thumbnailBytes = thumbnail } - fun fileName(fileName: String) = applySelf { this.fileName = fileName } fun contentType(contentType: String) = applySelf { this.contentType = contentType } - override fun isMultipart() = isMultipart + override fun isMultipart() = isMultipartRequest override fun getFileName() = fileName diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt index d29499a0..ceae5bb8 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt @@ -12,7 +12,7 @@ class SendVideo private constructor( videoUrl: String? = null, videoFile: File? = null, videoBytes: ByteArray? = null -) : KAbstractMultipartRequest( +) : AbstractThumbnailedMultipartRequest( chatId = chatId, channelUsername = channelUsername, From 6e49d036055f37afe9908946d672258e32d24165 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 00:35:11 +0300 Subject: [PATCH 04/20] Rewrite SendSticker to Kotlin --- .../telegrambot/request/SendSticker.java | 57 ---------- .../telegrambot/request/SendSticker.kt | 103 ++++++++++++++++++ 2 files changed, 103 insertions(+), 57 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendSticker.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.java b/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.java deleted file mode 100644 index ad39fced..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.pengrad.telegrambot.request; - -import java.io.File; - -/** - * stas - * 5/2/16. - */ -public class SendSticker extends AbstractMultipartRequest { - - public SendSticker(Object chatId, String sticker) { - super(chatId, sticker); - } - - public SendSticker(Object chatId, File sticker) { - super(chatId, sticker); - } - - public SendSticker(Object chatId, byte[] sticker) { - super(chatId, sticker); - } - - - /** - * - * @param emoji Emoji associated with the sticker; only for just uploaded stickers - * @return - */ - public SendSticker emoji(String emoji) { - add("emoji", emoji); - return this; - } - - public SendSticker thumbnail(byte[] thumbnail) { - return super.thumbnail(thumbnail); - } - - public SendSticker thumbnail(File thumbnail) { - return super.thumbnail(thumbnail); - } - - @Override - protected String getFileParamName() { - return "sticker"; - } - - @Override - public String getDefaultFileName() { - return ContentTypes.PHOTO_FILE_NAME; - } - - @Override - public String getDefaultContentType() { - return ContentTypes.PHOTO_MIME_TYPE; - } - -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt new file mode 100644 index 00000000..70ce1a2e --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt @@ -0,0 +1,103 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import java.io.File + +class SendSticker private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + stickerUrl: String? = null, + stickerFile: File? = null, + stickerBytes: ByteArray? = null +) : AbstractThumbnailedMultipartRequest( + chatId = chatId, + channelUsername = channelUsername, + + contentParameterName = "sticker", + contentUrl = stickerUrl, + contentFile = stickerFile, + contentBytes = stickerBytes, + + defaultFileName = ContentTypes.PHOTO_FILE_NAME, + defaultContentType = ContentTypes.PHOTO_MIME_TYPE +) { + + constructor(chatId: Long, stickerUrl: String) : this( + chatId = chatId, + channelUsername = null, + stickerUrl = stickerUrl + ) + + constructor(channelUsername: String, stickerUrl: String) : this( + chatId = null, + channelUsername = channelUsername, + stickerUrl = stickerUrl + ) + + + constructor(chatId: Long, stickerFile: File) : this( + chatId = chatId, + channelUsername = null, + stickerFile = stickerFile + ) + + constructor(channelUsername: String, stickerFile: File) : this( + chatId = null, + channelUsername = channelUsername, + stickerFile = stickerFile + ) + + + constructor(chatId: Long, stickerBytes: ByteArray) : this( + chatId = chatId, + channelUsername = null, + stickerBytes = stickerBytes + ) + + constructor(channelUsername: String, stickerBytes: ByteArray) : this( + chatId = null, + channelUsername = channelUsername, + stickerBytes = stickerBytes + ) + + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendSticker(chatId, sticker)")) + constructor(chatId: Any, sticker: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + stickerUrl = sticker + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendSticker(chatId, sticker)")) + constructor(chatId: Any, sticker: File) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + stickerFile = sticker + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendSticker(chatId, sticker)")) + constructor(chatId: Any, sticker: ByteArray) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + stickerBytes = sticker + ) { + checkDeprecatedConstructorParameters() + } + + @Suppress("NOTHING_TO_INLINE") + private inline fun checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } + } + + var emoji: String? by optionalRequestParameter() + + fun emoji(emoji: String) = applySelf { this.emoji = emoji } + +} \ No newline at end of file From 1b58a62f43f436f6474bb3c3165b54c1b3576c71 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 00:40:09 +0300 Subject: [PATCH 05/20] Rewrite SendVideoNote to Kotlin --- .../telegrambot/request/SendVideoNote.java | 53 --------- .../telegrambot/request/SendVideoNote.kt | 106 ++++++++++++++++++ 2 files changed, 106 insertions(+), 53 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.java b/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.java deleted file mode 100644 index e421f7a5..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.pengrad.telegrambot.request; - -import java.io.File; - -/** - * Stas Parshin - * 24 May 2017 - */ -public class SendVideoNote extends AbstractMultipartRequest { - - public SendVideoNote(Object chatId, String videoNote) { - super(chatId, videoNote); - } - - public SendVideoNote(Object chatId, File videoNote) { - super(chatId, videoNote); - } - - public SendVideoNote(Object chatId, byte[] videoNote) { - super(chatId, videoNote); - } - - public SendVideoNote duration(int duration) { - return add("duration", duration); - } - - public SendVideoNote length(int length) { - return add("length", length); - } - - public SendVideoNote thumbnail(byte[] thumbnail) { - return super.thumbnail(thumbnail); - } - - public SendVideoNote thumbnail(File thumbnail) { - return super.thumbnail(thumbnail); - } - - @Override - protected String getFileParamName() { - return "video_note"; - } - - @Override - public String getDefaultContentType() { - return ContentTypes.VIDEO_MIME_TYPE; - } - - @Override - protected String getDefaultFileName() { - return ContentTypes.VIDEO_FILE_NAME; - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt new file mode 100644 index 00000000..06f47fc0 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt @@ -0,0 +1,106 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import java.io.File + +class SendVideoNote private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + videoNoteUrl: String? = null, + videoNoteFile: File? = null, + videoNoteBytes: ByteArray? = null +) : AbstractThumbnailedMultipartRequest( + chatId = chatId, + channelUsername = channelUsername, + + contentParameterName = "video_note", + contentUrl = videoNoteUrl, + contentFile = videoNoteFile, + contentBytes = videoNoteBytes, + + defaultFileName = ContentTypes.VIDEO_FILE_NAME, + defaultContentType = ContentTypes.VIDEO_MIME_TYPE +) { + + constructor(chatId: Long, videoNoteUrl: String) : this( + chatId = chatId, + channelUsername = null, + videoNoteUrl = videoNoteUrl + ) + + constructor(channelUsername: String, videoNoteUrl: String) : this( + chatId = null, + channelUsername = channelUsername, + videoNoteUrl = videoNoteUrl + ) + + + constructor(chatId: Long, videoNoteFile: File) : this( + chatId = chatId, + channelUsername = null, + videoNoteFile = videoNoteFile + ) + + constructor(channelUsername: String, videoNoteFile: File) : this( + chatId = null, + channelUsername = channelUsername, + videoNoteFile = videoNoteFile + ) + + + constructor(chatId: Long, videoNoteBytes: ByteArray) : this( + chatId = chatId, + channelUsername = null, + videoNoteBytes = videoNoteBytes + ) + + constructor(channelUsername: String, videoNoteBytes: ByteArray) : this( + chatId = null, + channelUsername = channelUsername, + videoNoteBytes = videoNoteBytes + ) + + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendVideoNote(chatId, videoNote)")) + constructor(chatId: Any, videoNote: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + videoNoteUrl = videoNote + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendVideoNote(chatId, videoNote)")) + constructor(chatId: Any, videoNote: File) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + videoNoteFile = videoNote + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendVideoNote(chatId, videoNote)")) + constructor(chatId: Any, videoNote: ByteArray) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + videoNoteBytes = videoNote + ) { + checkDeprecatedConstructorParameters() + } + + @Suppress("NOTHING_TO_INLINE") + private inline fun checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } + } + + var duration: Int? by optionalRequestParameter() + var length: Int? by optionalRequestParameter() + + fun duration(duration: Int) = apply { this.duration = duration } + + fun length(length: Int) = apply { this.length = length } + +} \ No newline at end of file From 2e29ceec2c9393a54f216eb20bdf24f51dfd9277 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 00:51:28 +0300 Subject: [PATCH 06/20] Rewrite SendAudio to Kotlin --- .../telegrambot/request/SendAudio.java | 72 ---------- .../pengrad/telegrambot/request/SendAudio.kt | 123 ++++++++++++++++++ 2 files changed, 123 insertions(+), 72 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendAudio.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.java b/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.java deleted file mode 100644 index 297f3743..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.pengrad.telegrambot.request; - -import com.pengrad.telegrambot.model.MessageEntity; -import com.pengrad.telegrambot.model.request.ParseMode; - -import java.io.File; - -/** - * stas - * 5/2/16. - */ -public class SendAudio extends AbstractMultipartRequest { - - public SendAudio(Object chatId, String audio) { - super(chatId, audio); - } - - public SendAudio(Object chatId, File audio) { - super(chatId, audio); - } - - public SendAudio(Object chatId, byte[] audio) { - super(chatId, audio); - } - - public SendAudio caption(String caption) { - return add("caption", caption); - } - - public SendAudio parseMode(ParseMode parseMode) { - return add("parse_mode", parseMode.name()); - } - - public SendAudio captionEntities(MessageEntity... entities) { - return add("caption_entities", entities); - } - - public SendAudio duration(int duration) { - return add("duration", duration); - } - - public SendAudio performer(String performer) { - return add("performer", performer); - } - - public SendAudio title(String title) { - return add("title", title); - } - - public SendAudio thumbnail(byte[] thumbnail) { - return super.thumbnail(thumbnail); - } - - public SendAudio thumbnail(File thumbnail) { - return super.thumbnail(thumbnail); - } - - @Override - protected String getFileParamName() { - return "audio"; - } - - @Override - public String getDefaultFileName() { - return ContentTypes.AUDIO_FILE_NAME; - } - - @Override - public String getDefaultContentType() { - return ContentTypes.AUDIO_MIME_TYPE; - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt new file mode 100644 index 00000000..e329d24e --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt @@ -0,0 +1,123 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.model.MessageEntity +import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import java.io.File + +class SendAudio private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + audioUrl: String? = null, + audioFile: File? = null, + audioBytes: ByteArray? = null +) : AbstractThumbnailedMultipartRequest( + chatId = chatId, + channelUsername = channelUsername, + + contentParameterName = "audio", + contentUrl = audioUrl, + contentFile = audioFile, + contentBytes = audioBytes, + + defaultFileName = ContentTypes.AUDIO_FILE_NAME, + defaultContentType = ContentTypes.AUDIO_MIME_TYPE +) { + + constructor(chatId: Long, audioUrl: String) : this( + chatId = chatId, + channelUsername = null, + audioUrl = audioUrl + ) + + constructor(channelUsername: String, audioUrl: String) : this( + chatId = null, + channelUsername = channelUsername, + audioUrl = audioUrl + ) + + + constructor(chatId: Long, audioFile: File) : this( + chatId = chatId, + channelUsername = null, + audioFile = audioFile + ) + + constructor(channelUsername: String, audioFile: File) : this( + chatId = null, + channelUsername = channelUsername, + audioFile = audioFile + ) + + + constructor(chatId: Long, audioBytes: ByteArray) : this( + chatId = chatId, + channelUsername = null, + audioBytes = audioBytes + ) + + constructor(channelUsername: String, audioBytes: ByteArray) : this( + chatId = null, + channelUsername = channelUsername, + audioBytes = audioBytes + ) + + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendAudio(chatId, audio)")) + constructor(chatId: Any, audio: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + audioUrl = audio + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendAudio(chatId, audio)")) + constructor(chatId: Any, audio: File) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + audioFile = audio + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendAudio(chatId, audio)")) + constructor(chatId: Any, audio: ByteArray) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + audioBytes = audio + ) { + checkDeprecatedConstructorParameters() + } + + @Suppress("NOTHING_TO_INLINE") + private inline fun checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } + } + + var caption: String? by optionalRequestParameter() + var parseMode: ParseMode? by optionalRequestParameter() + var captionEntities: List? by optionalRequestParameter() + + var duration: Int? by optionalRequestParameter() + var performer: String? by optionalRequestParameter() + var title: String? by optionalRequestParameter() + + fun caption(caption: String) = applySelf { this.caption = caption } + + fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode } + + fun captionEntities(captionEntities: List) = applySelf { this.captionEntities = captionEntities } + + fun captionEntities(vararg captionEntities: MessageEntity) = captionEntities(captionEntities.toList()) + + fun duration(duration: Int) = applySelf { this.duration = duration } + + fun performer(performer: String) = applySelf { this.performer = performer } + + fun title(title: String) = applySelf { this.title = title } + +} \ No newline at end of file From cccdaa77872324317f2fc0a16a46efe9ec768ff6 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 01:03:39 +0300 Subject: [PATCH 07/20] Rewrite SendDocument to Kotlin --- .../telegrambot/request/SendDocument.java | 65 ---------- .../telegrambot/request/SendDocument.kt | 118 ++++++++++++++++++ 2 files changed, 118 insertions(+), 65 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendDocument.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.java b/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.java deleted file mode 100644 index 674577a3..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.pengrad.telegrambot.request; - -import com.pengrad.telegrambot.model.MessageEntity; -import com.pengrad.telegrambot.model.request.ParseMode; - -import java.io.File; - -/** - * stas - * 5/2/16. - */ -public class SendDocument extends AbstractMultipartRequest { - - public SendDocument(Object chatId, String document) { - super(chatId, document); - } - - public SendDocument(Object chatId, File document) { - super(chatId, document); - } - - public SendDocument(Object chatId, byte[] document) { - super(chatId, document); - } - - public SendDocument thumbnail(byte[] thumbnail) { - return super.thumbnail(thumbnail); - } - - public SendDocument thumbnail(File thumbnail) { - return super.thumbnail(thumbnail); - } - - public SendDocument caption(String caption) { - return add("caption", caption); - } - - public SendDocument parseMode(ParseMode parseMode) { - return add("parse_mode", parseMode.name()); - } - - public SendDocument captionEntities(MessageEntity... entities) { - return add("caption_entities", entities); - } - - public SendDocument disableContentTypeDetection(boolean disableContentTypeDetection) { - return add("disable_content_type_detection", disableContentTypeDetection); - } - - @Override - protected String getFileParamName() { - return "document"; - } - - @Override - public String getDefaultFileName() { - return ContentTypes.DOC_FILE_NAME; - } - - @Override - public String getDefaultContentType() { - return ContentTypes.DOC_MIME_TYPE; - } - -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt new file mode 100644 index 00000000..44a1bb9c --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt @@ -0,0 +1,118 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.model.MessageEntity +import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import java.io.File + +class SendDocument private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + documentUrl: String? = null, + documentFile: File? = null, + documentBytes: ByteArray? = null +) : AbstractThumbnailedMultipartRequest( + chatId = chatId, + channelUsername = channelUsername, + + contentParameterName = "document", + contentUrl = documentUrl, + contentFile = documentFile, + contentBytes = documentBytes, + + defaultFileName = ContentTypes.DOC_FILE_NAME, + defaultContentType = ContentTypes.DOC_MIME_TYPE +) { + + + constructor(chatId: Long, documentUrl: String) : this( + chatId = chatId, + channelUsername = null, + documentUrl = documentUrl + ) + + constructor(channelUsername: String, documentUrl: String) : this( + chatId = null, + channelUsername = channelUsername, + documentUrl = documentUrl + ) + + + constructor(chatId: Long, documentFile: File) : this( + chatId = chatId, + channelUsername = null, + documentFile = documentFile + ) + + constructor(channelUsername: String, documentFile: File) : this( + chatId = null, + channelUsername = channelUsername, + documentFile = documentFile + ) + + + constructor(chatId: Long, documentBytes: ByteArray) : this( + chatId = chatId, + channelUsername = null, + documentBytes = documentBytes + ) + + constructor(channelUsername: String, documentBytes: ByteArray) : this( + chatId = null, + channelUsername = channelUsername, + documentBytes = documentBytes + ) + + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendDocument(chatId, document)")) + constructor(chatId: Any, document: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + documentUrl = document + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendDocument(chatId, document)")) + constructor(chatId: Any, document: File) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + documentFile = document + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendDocument(chatId, document)")) + constructor(chatId: Any, document: ByteArray) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + documentBytes = document + ) { + checkDeprecatedConstructorParameters() + } + + @Suppress("NOTHING_TO_INLINE") + private inline fun checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } + } + + var caption: String? by optionalRequestParameter() + var parseMode: ParseMode? by optionalRequestParameter() + var captionEntities: List? by optionalRequestParameter() + + var disableContentTypeDetection: Boolean? by optionalRequestParameter() + + fun caption(caption: String) = applySelf { this.caption = caption } + + fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode } + + fun captionEntities(captionEntities: List) = applySelf { this.captionEntities = captionEntities } + + fun captionEntities(vararg captionEntities: MessageEntity) = captionEntities(captionEntities.toList()) + + fun disableContentTypeDetection(disableContentTypeDetection: Boolean) = applySelf { this.disableContentTypeDetection = disableContentTypeDetection } + +} \ No newline at end of file From c9240f8915b90926ba161fba2b3c8053702ef98b Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 01:09:34 +0300 Subject: [PATCH 08/20] Rewrite SendAnimation to Kotlin --- .../telegrambot/request/SendAnimation.java | 80 ----------- .../telegrambot/request/SendAnimation.kt | 130 ++++++++++++++++++ 2 files changed, 130 insertions(+), 80 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.java b/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.java deleted file mode 100644 index d7eac879..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.pengrad.telegrambot.request; - -import com.pengrad.telegrambot.model.MessageEntity; -import com.pengrad.telegrambot.model.request.ParseMode; - -import java.io.File; - -/** - * Stas Parshin - * 28 July 2018 - */ -public class SendAnimation extends AbstractMultipartRequest { - - public SendAnimation(Object chatId, String animation) { - super(chatId, animation); - } - - public SendAnimation(Object chatId, File animation) { - super(chatId, animation); - } - - public SendAnimation(Object chatId, byte[] animation) { - super(chatId, animation); - } - - public SendAnimation duration(int duration) { - return add("duration", duration); - } - - public SendAnimation width(int width) { - return add("width", width); - } - - public SendAnimation height(int height) { - return add("height", height); - } - - public SendAnimation thumbnail(byte[] thumbnail) { - return super.thumbnail(thumbnail); - } - - public SendAnimation thumbnail(File thumbnail) { - return super.thumbnail(thumbnail); - } - - public SendAnimation caption(String caption) { - return add("caption", caption); - } - - public SendAnimation parseMode(ParseMode parseMode) { - return add("parse_mode", parseMode.name()); - } - - public SendAnimation captionEntities(MessageEntity... entities) { - return add("caption_entities", entities); - } - - public SendAnimation hasSpoiler(boolean has_spoiler) { - return add("has_spoiler", has_spoiler); - } - - public SendAnimation showCaptionAboveMedia(Boolean showCaptionAboveMedia) { - return add("show_caption_above_media", showCaptionAboveMedia); - } - - @Override - protected String getFileParamName() { - return "animation"; - } - - @Override - public String getDefaultFileName() { - return ContentTypes.GIF_FILE_NAME; - } - - @Override - public String getDefaultContentType() { - return ContentTypes.GIF_MIME_TYPE; - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt new file mode 100644 index 00000000..7b28c8d2 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt @@ -0,0 +1,130 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.model.MessageEntity +import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import java.io.File + +class SendAnimation private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + animationUrl: String? = null, + animationFile: File? = null, + animationBytes: ByteArray? = null +) : AbstractThumbnailedMultipartRequest( + chatId = chatId, + channelUsername = channelUsername, + + contentParameterName = "animation", + contentUrl = animationUrl, + contentFile = animationFile, + contentBytes = animationBytes, + + defaultFileName = ContentTypes.GIF_FILE_NAME, + defaultContentType = ContentTypes.GIF_MIME_TYPE +) { + + + constructor(chatId: Long, animationUrl: String) : this( + chatId = chatId, + channelUsername = null, + animationUrl = animationUrl + ) + + constructor(channelUsername: String, animationUrl: String) : this( + chatId = null, + channelUsername = channelUsername, + animationUrl = animationUrl + ) + + + constructor(chatId: Long, animationFile: File) : this( + chatId = chatId, + channelUsername = null, + animationFile = animationFile + ) + + constructor(channelUsername: String, animationFile: File) : this( + chatId = null, + channelUsername = channelUsername, + animationFile = animationFile + ) + + + constructor(chatId: Long, animationBytes: ByteArray) : this( + chatId = chatId, + channelUsername = null, + animationBytes = animationBytes + ) + + constructor(channelUsername: String, animationBytes: ByteArray) : this( + chatId = null, + channelUsername = channelUsername, + animationBytes = animationBytes + ) + + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendAnimation(chatId, animation)")) + constructor(chatId: Any, animation: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + animationUrl = animation + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendAnimation(chatId, animation)")) + constructor(chatId: Any, animation: File) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + animationFile = animation + ) { + checkDeprecatedConstructorParameters() + } + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendAnimation(chatId, animation)")) + constructor(chatId: Any, animation: ByteArray) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + animationBytes = animation + ) { + checkDeprecatedConstructorParameters() + } + + @Suppress("NOTHING_TO_INLINE") + private inline fun checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } + } + + var caption: String? by optionalRequestParameter() + var parseMode: ParseMode? by optionalRequestParameter() + var captionEntities: List? by optionalRequestParameter() + var showCaptionAboveMedia: Boolean? by optionalRequestParameter() + var hasSpoiler: Boolean? by optionalRequestParameter() + + var duration: Int? by optionalRequestParameter() + var width: Int? by optionalRequestParameter() + var height: Int? by optionalRequestParameter() + + fun caption(caption: String) = apply { this.caption = caption } + + fun parseMode(parseMode: ParseMode) = apply { this.parseMode = parseMode } + + fun captionEntities(captionEntities: List) = apply { this.captionEntities = captionEntities } + + fun captionEntities(vararg captionEntities: MessageEntity) = apply { this.captionEntities = captionEntities.toList() } + + fun showCaptionAboveMedia(showCaptionAboveMedia: Boolean) = apply { this.showCaptionAboveMedia = showCaptionAboveMedia } + + fun hasSpoiler(hasSpoiler: Boolean) = apply { this.hasSpoiler = hasSpoiler } + + fun duration(duration: Int) = apply { this.duration = duration } + + fun width(width: Int) = apply { this.width = width } + + fun height(height: Int) = apply { this.height = height } + +} \ No newline at end of file From 6392f868eaa593ce8ed89e5d8153e2959143f965 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 01:18:04 +0300 Subject: [PATCH 09/20] Create extensions for all KAbstractMultipartRequest requests --- .../request/SendAnimationExtension.kt | 62 +++++++++++++++++++ .../extension/request/SendAudioExtension.kt | 62 +++++++++++++++++++ .../request/SendDocumentExtension.kt | 62 +++++++++++++++++++ .../extension/request/SendPhotoExtension.kt | 62 +++++++++++++++++++ .../extension/request/SendStickerExtension.kt | 62 +++++++++++++++++++ .../extension/request/SendVideoExtension.kt | 62 +++++++++++++++++++ .../request/SendVideoNoteExtension.kt | 62 +++++++++++++++++++ .../extension/request/SendVoiceExtension.kt | 62 +++++++++++++++++++ 8 files changed, 496 insertions(+) create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendAnimationExtension.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendAudioExtension.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendDocumentExtension.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendPhotoExtension.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendStickerExtension.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVideoExtension.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVideoNoteExtension.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVoiceExtension.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendAnimationExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendAnimationExtension.kt new file mode 100644 index 00000000..dff13caf --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendAnimationExtension.kt @@ -0,0 +1,62 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendAnimation +import com.pengrad.telegrambot.utility.kotlin.extension.execute +import java.io.File + +inline fun TelegramAware.sendAnimation( + chatId: Long, + animationUrl: String, + modifier: SendAnimation.() -> Unit = {} +) = this.execute(SendAnimation( + chatId = chatId, + animationUrl = animationUrl +), modifier) + +inline fun TelegramAware.sendAnimation( + channelUsername: String, + animationUrl: String, + modifier: SendAnimation.() -> Unit = {} +) = this.execute(SendAnimation( + channelUsername = channelUsername, + animationUrl = animationUrl +), modifier) + + +inline fun TelegramAware.sendAnimation( + chatId: Long, + animationFile: File, + modifier: SendAnimation.() -> Unit = {} +) = this.execute(SendAnimation( + chatId = chatId, + animationFile = animationFile +), modifier) + +inline fun TelegramAware.sendAnimation( + channelUsername: String, + animationFile: File, + modifier: SendAnimation.() -> Unit = {} +) = this.execute(SendAnimation( + channelUsername = channelUsername, + animationFile = animationFile +), modifier) + + +inline fun TelegramAware.sendAnimation( + chatId: Long, + animationBytes: ByteArray, + modifier: SendAnimation.() -> Unit = {} +) = this.execute(SendAnimation( + chatId = chatId, + animationBytes = animationBytes +), modifier) + +inline fun TelegramAware.sendAnimation( + channelUsername: String, + animationBytes: ByteArray, + modifier: SendAnimation.() -> Unit = {} +) = this.execute(SendAnimation( + channelUsername = channelUsername, + animationBytes = animationBytes +), modifier) \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendAudioExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendAudioExtension.kt new file mode 100644 index 00000000..65ba9f40 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendAudioExtension.kt @@ -0,0 +1,62 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendAudio +import com.pengrad.telegrambot.utility.kotlin.extension.execute +import java.io.File + +inline fun TelegramAware.sendAudio( + chatId: Long, + audioUrl: String, + modifier: SendAudio.() -> Unit = {} +) = this.execute(SendAudio( + chatId = chatId, + audioUrl = audioUrl +), modifier) + +inline fun TelegramAware.sendAudio( + channelUsername: String, + audioUrl: String, + modifier: SendAudio.() -> Unit = {} +) = this.execute(SendAudio( + channelUsername = channelUsername, + audioUrl = audioUrl +), modifier) + + +inline fun TelegramAware.sendAudio( + chatId: Long, + audioFile: File, + modifier: SendAudio.() -> Unit = {} +) = this.execute(SendAudio( + chatId = chatId, + audioFile = audioFile +), modifier) + +inline fun TelegramAware.sendAudio( + channelUsername: String, + audioFile: File, + modifier: SendAudio.() -> Unit = {} +) = this.execute(SendAudio( + channelUsername = channelUsername, + audioFile = audioFile +), modifier) + + +inline fun TelegramAware.sendAudio( + chatId: Long, + audioBytes: ByteArray, + modifier: SendAudio.() -> Unit = {} +) = this.execute(SendAudio( + chatId = chatId, + audioBytes = audioBytes +), modifier) + +inline fun TelegramAware.sendAudio( + channelUsername: String, + audioBytes: ByteArray, + modifier: SendAudio.() -> Unit = {} +) = this.execute(SendAudio( + channelUsername = channelUsername, + audioBytes = audioBytes +), modifier) \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendDocumentExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendDocumentExtension.kt new file mode 100644 index 00000000..6d71dd7f --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendDocumentExtension.kt @@ -0,0 +1,62 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendDocument +import com.pengrad.telegrambot.utility.kotlin.extension.execute +import java.io.File + +inline fun TelegramAware.sendDocument( + chatId: Long, + documentUrl: String, + modifier: SendDocument.() -> Unit = {} +) = this.execute(SendDocument( + chatId = chatId, + documentUrl = documentUrl +), modifier) + +inline fun TelegramAware.sendDocument( + channelUsername: String, + documentUrl: String, + modifier: SendDocument.() -> Unit = {} +) = this.execute(SendDocument( + channelUsername = channelUsername, + documentUrl = documentUrl +), modifier) + + +inline fun TelegramAware.sendDocument( + chatId: Long, + documentFile: File, + modifier: SendDocument.() -> Unit = {} +) = this.execute(SendDocument( + chatId = chatId, + documentFile = documentFile +), modifier) + +inline fun TelegramAware.sendDocument( + channelUsername: String, + documentFile: File, + modifier: SendDocument.() -> Unit = {} +) = this.execute(SendDocument( + channelUsername = channelUsername, + documentFile = documentFile +), modifier) + + +inline fun TelegramAware.sendDocument( + chatId: Long, + documentBytes: ByteArray, + modifier: SendDocument.() -> Unit = {} +) = this.execute(SendDocument( + chatId = chatId, + documentBytes = documentBytes +), modifier) + +inline fun TelegramAware.sendDocument( + channelUsername: String, + documentBytes: ByteArray, + modifier: SendDocument.() -> Unit = {} +) = this.execute(SendDocument( + channelUsername = channelUsername, + documentBytes = documentBytes +), modifier) \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendPhotoExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendPhotoExtension.kt new file mode 100644 index 00000000..a321ae10 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendPhotoExtension.kt @@ -0,0 +1,62 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendPhoto +import com.pengrad.telegrambot.utility.kotlin.extension.execute +import java.io.File + +inline fun TelegramAware.sendPhoto( + chatId: Long, + photoUrl: String, + modifier: SendPhoto.() -> Unit = {} +) = this.execute(SendPhoto( + chatId = chatId, + photoUrl = photoUrl +), modifier) + +inline fun TelegramAware.sendPhoto( + channelUsername: String, + photoUrl: String, + modifier: SendPhoto.() -> Unit = {} +) = this.execute(SendPhoto( + channelUsername = channelUsername, + photoUrl = photoUrl +), modifier) + + +inline fun TelegramAware.sendPhoto( + chatId: Long, + photoFile: File, + modifier: SendPhoto.() -> Unit = {} +) = this.execute(SendPhoto( + chatId = chatId, + photoFile = photoFile +), modifier) + +inline fun TelegramAware.sendPhoto( + channelUsername: String, + photoFile: File, + modifier: SendPhoto.() -> Unit = {} +) = this.execute(SendPhoto( + channelUsername = channelUsername, + photoFile = photoFile +), modifier) + + +inline fun TelegramAware.sendPhoto( + chatId: Long, + photoBytes: ByteArray, + modifier: SendPhoto.() -> Unit = {} +) = this.execute(SendPhoto( + chatId = chatId, + photoBytes = photoBytes +), modifier) + +inline fun TelegramAware.sendPhoto( + channelUsername: String, + photoBytes: ByteArray, + modifier: SendPhoto.() -> Unit = {} +) = this.execute(SendPhoto( + channelUsername = channelUsername, + photoBytes = photoBytes +), modifier) \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendStickerExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendStickerExtension.kt new file mode 100644 index 00000000..99634b6d --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendStickerExtension.kt @@ -0,0 +1,62 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendSticker +import com.pengrad.telegrambot.utility.kotlin.extension.execute +import java.io.File + +inline fun TelegramAware.sendSticker( + chatId: Long, + stickerUrl: String, + modifier: SendSticker.() -> Unit = {} +) = this.execute(SendSticker( + chatId = chatId, + stickerUrl = stickerUrl +), modifier) + +inline fun TelegramAware.sendSticker( + channelUsername: String, + stickerUrl: String, + modifier: SendSticker.() -> Unit = {} +) = this.execute(SendSticker( + channelUsername = channelUsername, + stickerUrl = stickerUrl +), modifier) + + +inline fun TelegramAware.sendSticker( + chatId: Long, + stickerFile: File, + modifier: SendSticker.() -> Unit = {} +) = this.execute(SendSticker( + chatId = chatId, + stickerFile = stickerFile +), modifier) + +inline fun TelegramAware.sendSticker( + channelUsername: String, + stickerFile: File, + modifier: SendSticker.() -> Unit = {} +) = this.execute(SendSticker( + channelUsername = channelUsername, + stickerFile = stickerFile +), modifier) + + +inline fun TelegramAware.sendSticker( + chatId: Long, + stickerBytes: ByteArray, + modifier: SendSticker.() -> Unit = {} +) = this.execute(SendSticker( + chatId = chatId, + stickerBytes = stickerBytes +), modifier) + +inline fun TelegramAware.sendSticker( + channelUsername: String, + stickerBytes: ByteArray, + modifier: SendSticker.() -> Unit = {} +) = this.execute(SendSticker( + channelUsername = channelUsername, + stickerBytes = stickerBytes +), modifier) \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVideoExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVideoExtension.kt new file mode 100644 index 00000000..ad82004f --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVideoExtension.kt @@ -0,0 +1,62 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendVideo +import com.pengrad.telegrambot.utility.kotlin.extension.execute +import java.io.File + +inline fun TelegramAware.sendVideo( + chatId: Long, + videoUrl: String, + modifier: SendVideo.() -> Unit = {} +) = this.execute(SendVideo( + chatId = chatId, + videoUrl = videoUrl +), modifier) + +inline fun TelegramAware.sendVideo( + channelUsername: String, + videoUrl: String, + modifier: SendVideo.() -> Unit = {} +) = this.execute(SendVideo( + channelUsername = channelUsername, + videoUrl = videoUrl +), modifier) + + +inline fun TelegramAware.sendVideo( + chatId: Long, + videoFile: File, + modifier: SendVideo.() -> Unit = {} +) = this.execute(SendVideo( + chatId = chatId, + videoFile = videoFile +), modifier) + +inline fun TelegramAware.sendVideo( + channelUsername: String, + videoFile: File, + modifier: SendVideo.() -> Unit = {} +) = this.execute(SendVideo( + channelUsername = channelUsername, + videoFile = videoFile +), modifier) + + +inline fun TelegramAware.sendVideo( + chatId: Long, + videoBytes: ByteArray, + modifier: SendVideo.() -> Unit = {} +) = this.execute(SendVideo( + chatId = chatId, + videoBytes = videoBytes +), modifier) + +inline fun TelegramAware.sendVideo( + channelUsername: String, + videoBytes: ByteArray, + modifier: SendVideo.() -> Unit = {} +) = this.execute(SendVideo( + channelUsername = channelUsername, + videoBytes = videoBytes +), modifier) \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVideoNoteExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVideoNoteExtension.kt new file mode 100644 index 00000000..3649d52c --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVideoNoteExtension.kt @@ -0,0 +1,62 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendVideoNote +import com.pengrad.telegrambot.utility.kotlin.extension.execute +import java.io.File + +inline fun TelegramAware.sendVideoNote( + chatId: Long, + videoNoteUrl: String, + modifier: SendVideoNote.() -> Unit = {} +) = this.execute(SendVideoNote( + chatId = chatId, + videoNoteUrl = videoNoteUrl +), modifier) + +inline fun TelegramAware.sendVideoNote( + channelUsername: String, + videoNoteUrl: String, + modifier: SendVideoNote.() -> Unit = {} +) = this.execute(SendVideoNote( + channelUsername = channelUsername, + videoNoteUrl = videoNoteUrl +), modifier) + + +inline fun TelegramAware.sendVideoNote( + chatId: Long, + videoNoteFile: File, + modifier: SendVideoNote.() -> Unit = {} +) = this.execute(SendVideoNote( + chatId = chatId, + videoNoteFile = videoNoteFile +), modifier) + +inline fun TelegramAware.sendVideoNote( + channelUsername: String, + videoNoteFile: File, + modifier: SendVideoNote.() -> Unit = {} +) = this.execute(SendVideoNote( + channelUsername = channelUsername, + videoNoteFile = videoNoteFile +), modifier) + + +inline fun TelegramAware.sendVideoNote( + chatId: Long, + videoNoteBytes: ByteArray, + modifier: SendVideoNote.() -> Unit = {} +) = this.execute(SendVideoNote( + chatId = chatId, + videoNoteBytes = videoNoteBytes +), modifier) + +inline fun TelegramAware.sendVideoNote( + channelUsername: String, + videoNoteBytes: ByteArray, + modifier: SendVideoNote.() -> Unit = {} +) = this.execute(SendVideoNote( + channelUsername = channelUsername, + videoNoteBytes = videoNoteBytes +), modifier) \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVoiceExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVoiceExtension.kt new file mode 100644 index 00000000..8edb697e --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVoiceExtension.kt @@ -0,0 +1,62 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendVoice +import com.pengrad.telegrambot.utility.kotlin.extension.execute +import java.io.File + +inline fun TelegramAware.sendVoice( + chatId: Long, + voiceUrl: String, + modifier: SendVoice.() -> Unit = {} +) = this.execute(SendVoice( + chatId = chatId, + voiceUrl = voiceUrl +), modifier) + +inline fun TelegramAware.sendVoice( + channelUsername: String, + voiceUrl: String, + modifier: SendVoice.() -> Unit = {} +) = this.execute(SendVoice( + channelUsername = channelUsername, + voiceUrl = voiceUrl +), modifier) + + +inline fun TelegramAware.sendVoice( + chatId: Long, + voiceFile: File, + modifier: SendVoice.() -> Unit = {} +) = this.execute(SendVoice( + chatId = chatId, + voiceFile = voiceFile +), modifier) + +inline fun TelegramAware.sendVoice( + channelUsername: String, + voiceFile: File, + modifier: SendVoice.() -> Unit = {} +) = this.execute(SendVoice( + channelUsername = channelUsername, + voiceFile = voiceFile +), modifier) + + +inline fun TelegramAware.sendVoice( + chatId: Long, + voiceBytes: ByteArray, + modifier: SendVoice.() -> Unit = {} +) = this.execute(SendVoice( + chatId = chatId, + voiceBytes = voiceBytes +), modifier) + +inline fun TelegramAware.sendVoice( + channelUsername: String, + voiceBytes: ByteArray, + modifier: SendVoice.() -> Unit = {} +) = this.execute(SendVoice( + channelUsername = channelUsername, + voiceBytes = voiceBytes +), modifier) \ No newline at end of file From 2d77199ec52a86b3cc78b5701ab49fbbe8c9893c Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 01:27:16 +0300 Subject: [PATCH 10/20] Rename KAbstractMultipartRequest to AbstractMultipartRequest --- .../request/AbstractMultipartRequest.java | 69 ------------------- ...Request.kt => AbstractMultipartRequest.kt} | 2 +- .../AbstractThumbnailedMultipartRequest.kt | 2 +- .../pengrad/telegrambot/request/SendPhoto.kt | 2 +- .../pengrad/telegrambot/request/SendVoice.kt | 2 +- 5 files changed, 4 insertions(+), 73 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.java rename library/src/main/java/com/pengrad/telegrambot/request/{KAbstractMultipartRequest.kt => AbstractMultipartRequest.kt} (94%) diff --git a/library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.java b/library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.java deleted file mode 100644 index 54c717e5..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.pengrad.telegrambot.request; - -import java.io.File; - -/** - * stas - * 5/1/16. - */ -abstract public class AbstractMultipartRequest> extends AbstractSendRequest { - - private boolean isMultipart; - private String fileName; - private String contentType; - - public AbstractMultipartRequest(Object chatId, Object file) { - super(chatId); - if (file instanceof String) { - isMultipart = false; - } else if (file instanceof File) { - isMultipart = true; - fileName = ((File) file).getName(); - } else if (file instanceof byte[]) { - isMultipart = true; - } else { - throw new IllegalArgumentException("Sending data should be String, File or byte[]"); - } - add(getFileParamName(), file); - } - - public T fileName(String fileName) { - this.fileName = fileName; - return thisAsT; - } - - public T contentType(String contentType) { - this.contentType = contentType; - return thisAsT; - } - - protected T thumbnail(Object thumbnail) { - isMultipart = true; - return add("thumbnail", thumbnail); - } - - @Override - public boolean isMultipart() { - return isMultipart; - } - - @Override - public String getFileName() { - if (fileName != null && !fileName.isEmpty()) { - return fileName; - } else { - return getDefaultFileName(); - } - } - - @Override - public String getContentType() { - return (contentType != null && !contentType.isEmpty()) ? contentType : getDefaultContentType(); - } - - abstract protected String getDefaultFileName(); - - abstract protected String getDefaultContentType(); - - abstract protected String getFileParamName(); -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/KAbstractMultipartRequest.kt b/library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.kt similarity index 94% rename from library/src/main/java/com/pengrad/telegrambot/request/KAbstractMultipartRequest.kt rename to library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.kt index baa25fa5..11f9a178 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/KAbstractMultipartRequest.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.kt @@ -3,7 +3,7 @@ package com.pengrad.telegrambot.request import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import java.io.File -abstract class KAbstractMultipartRequest>( +abstract class AbstractMultipartRequest>( chatId: Long?, channelUsername: String?, diff --git a/library/src/main/java/com/pengrad/telegrambot/request/AbstractThumbnailedMultipartRequest.kt b/library/src/main/java/com/pengrad/telegrambot/request/AbstractThumbnailedMultipartRequest.kt index 85e82c0b..ac3badb1 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/AbstractThumbnailedMultipartRequest.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/AbstractThumbnailedMultipartRequest.kt @@ -14,7 +14,7 @@ abstract class AbstractThumbnailedMultipartRequest( +) : AbstractMultipartRequest( chatId = chatId, channelUsername = channelUsername, diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt index 0c54634d..3f6557c0 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt @@ -12,7 +12,7 @@ class SendPhoto private constructor( photoUrl: String? = null, photoFile: File? = null, photoBytes: ByteArray? = null -) : KAbstractMultipartRequest( +) : AbstractMultipartRequest( chatId = chatId, channelUsername = channelUsername, diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt index 5788452f..3f8ef197 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt @@ -12,7 +12,7 @@ class SendVoice private constructor( voiceUrl: String? = null, voiceFile: File? = null, voiceBytes: ByteArray? = null -) : KAbstractMultipartRequest( +) : AbstractMultipartRequest( chatId = chatId, channelUsername = channelUsername, From 6b9f2a139f3f2e53eeb6e8a96dcbdaf1a9bacf16 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 01:41:20 +0300 Subject: [PATCH 11/20] Rewrite SendMessage to Kotlin --- .../telegrambot/request/SendMessage.java | 29 --------- .../telegrambot/request/SendMessage.kt | 61 +++++++++++++++++++ .../extension/request/SendMessageExtension.kt | 12 +++- 3 files changed, 70 insertions(+), 32 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendMessage.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.java b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.java deleted file mode 100644 index 44d2a730..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.pengrad.telegrambot.request; - -import com.pengrad.telegrambot.model.LinkPreviewOptions; -import com.pengrad.telegrambot.model.MessageEntity; -import com.pengrad.telegrambot.model.request.ParseMode; - -/** - * stas - * 5/1/16. - */ -public class SendMessage extends AbstractSendRequest { - - public SendMessage(Object chatId, String text) { - super(chatId); - add("text", text); - } - - public SendMessage parseMode(ParseMode parseMode) { - return add("parse_mode", parseMode.name()); - } - - public SendMessage entities(MessageEntity... entities) { - return add("entities", entities); - } - - public SendMessage linkPreviewOptions(LinkPreviewOptions linkPreviewOptions) { - return add("link_preview_options", linkPreviewOptions); - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt new file mode 100644 index 00000000..17a25fe9 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt @@ -0,0 +1,61 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.model.LinkPreviewOptions +import com.pengrad.telegrambot.model.MessageEntity +import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class SendMessage private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + text: String +) : KAbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername, +) { + + constructor(chatId: Long, text: String) : this( + chatId = chatId, + channelUsername = null, + text = text + ) + + constructor(channelUsername: String, text: String) : this( + chatId = null, + channelUsername = channelUsername, + text = text + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendMessage(chatId, text)")) + constructor(chatId: Any, text: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + text = text + ) { + checkDeprecatedConstructorParameters() + } + + @Suppress("NOTHING_TO_INLINE") + private inline fun checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } + } + + val text: String by requestParameter(text) + + var parseMode: ParseMode? by optionalRequestParameter() + var entities: List? by optionalRequestParameter() + var linkPreviewOptions: LinkPreviewOptions? by optionalRequestParameter() + + fun parseMode(parseMode: ParseMode) = applySelf { this.parseMode = parseMode } + + fun entities(entities: List) = applySelf { this.entities = entities } + + fun entities(vararg entities: MessageEntity) = entities(entities.toList()) + + fun linkPreviewOptions(linkPreviewOptions: LinkPreviewOptions) = applySelf { this.linkPreviewOptions = linkPreviewOptions} + +} \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendMessageExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendMessageExtension.kt index c26c6e64..885573bd 100644 --- a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendMessageExtension.kt +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendMessageExtension.kt @@ -8,10 +8,16 @@ inline fun TelegramAware.sendMessage( chatId: Long, text: String, modifier: SendMessage.() -> Unit = {} -) = this.execute(SendMessage(chatId, text), modifier) +) = this.execute(SendMessage( + chatId = chatId, + text = text +), modifier) inline fun TelegramAware.sendMessage( - chatId: String, + channelUsername: String, text: String, modifier: SendMessage.() -> Unit = {} -) = this.execute(SendMessage(chatId, text), modifier) \ No newline at end of file +) = this.execute(SendMessage( + channelUsername = channelUsername, + text = text +), modifier) \ No newline at end of file From b8f4aad9399ee7c02dcbcf91f23810d99d383a8a Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 01:51:17 +0300 Subject: [PATCH 12/20] Remove checkDeprecatedConstructorParameters duplicates --- .../com/pengrad/telegrambot/request/SendAnimation.kt | 8 +------- .../java/com/pengrad/telegrambot/request/SendAudio.kt | 8 +------- .../com/pengrad/telegrambot/request/SendDocument.kt | 8 +------- .../com/pengrad/telegrambot/request/SendMessage.kt | 8 +------- .../java/com/pengrad/telegrambot/request/SendPhoto.kt | 8 +------- .../com/pengrad/telegrambot/request/SendSticker.kt | 8 +------- .../java/com/pengrad/telegrambot/request/SendVideo.kt | 8 +------- .../com/pengrad/telegrambot/request/SendVideoNote.kt | 8 +------- .../java/com/pengrad/telegrambot/request/SendVoice.kt | 8 +------- .../utility/kotlin/JavaCompatabilityUtility.kt | 11 ++++++++++- 10 files changed, 19 insertions(+), 64 deletions(-) diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt index 7b28c8d2..c7995c24 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt @@ -2,6 +2,7 @@ package com.pengrad.telegrambot.request import com.pengrad.telegrambot.model.MessageEntity import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import java.io.File @@ -92,13 +93,6 @@ class SendAnimation private constructor( checkDeprecatedConstructorParameters() } - @Suppress("NOTHING_TO_INLINE") - private inline fun checkDeprecatedConstructorParameters() { - if (this.chatId == null && this.channelUsername == null) { - throw IllegalArgumentException("chatId parameter must be either Long or String") - } - } - var caption: String? by optionalRequestParameter() var parseMode: ParseMode? by optionalRequestParameter() var captionEntities: List? by optionalRequestParameter() diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt index e329d24e..c47f2931 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt @@ -2,6 +2,7 @@ package com.pengrad.telegrambot.request import com.pengrad.telegrambot.model.MessageEntity import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import java.io.File @@ -91,13 +92,6 @@ class SendAudio private constructor( checkDeprecatedConstructorParameters() } - @Suppress("NOTHING_TO_INLINE") - private inline fun checkDeprecatedConstructorParameters() { - if (this.chatId == null && this.channelUsername == null) { - throw IllegalArgumentException("chatId parameter must be either Long or String") - } - } - var caption: String? by optionalRequestParameter() var parseMode: ParseMode? by optionalRequestParameter() var captionEntities: List? by optionalRequestParameter() diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt index 44a1bb9c..07415bf7 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt @@ -2,6 +2,7 @@ package com.pengrad.telegrambot.request import com.pengrad.telegrambot.model.MessageEntity import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import java.io.File @@ -92,13 +93,6 @@ class SendDocument private constructor( checkDeprecatedConstructorParameters() } - @Suppress("NOTHING_TO_INLINE") - private inline fun checkDeprecatedConstructorParameters() { - if (this.chatId == null && this.channelUsername == null) { - throw IllegalArgumentException("chatId parameter must be either Long or String") - } - } - var caption: String? by optionalRequestParameter() var parseMode: ParseMode? by optionalRequestParameter() var captionEntities: List? by optionalRequestParameter() diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt index 17a25fe9..b847894d 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt @@ -3,6 +3,7 @@ package com.pengrad.telegrambot.request import com.pengrad.telegrambot.model.LinkPreviewOptions import com.pengrad.telegrambot.model.MessageEntity import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import com.pengrad.telegrambot.utility.kotlin.requestParameter @@ -37,13 +38,6 @@ class SendMessage private constructor( checkDeprecatedConstructorParameters() } - @Suppress("NOTHING_TO_INLINE") - private inline fun checkDeprecatedConstructorParameters() { - if (this.chatId == null && this.channelUsername == null) { - throw IllegalArgumentException("chatId parameter must be either Long or String") - } - } - val text: String by requestParameter(text) var parseMode: ParseMode? by optionalRequestParameter() diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt index 3f6557c0..97eeee49 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt @@ -2,6 +2,7 @@ package com.pengrad.telegrambot.request import com.pengrad.telegrambot.model.MessageEntity import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import java.io.File @@ -91,13 +92,6 @@ class SendPhoto private constructor( checkDeprecatedConstructorParameters() } - @Suppress("NOTHING_TO_INLINE") - private inline fun checkDeprecatedConstructorParameters() { - if (this.chatId == null && this.channelUsername == null) { - throw IllegalArgumentException("chatId parameter must be either Long or String") - } - } - var caption: String? by optionalRequestParameter() var parseMode: ParseMode? by optionalRequestParameter() var captionEntities: List? by optionalRequestParameter() diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt index 70ce1a2e..b0a933c4 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt @@ -1,5 +1,6 @@ package com.pengrad.telegrambot.request +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import java.io.File @@ -89,13 +90,6 @@ class SendSticker private constructor( checkDeprecatedConstructorParameters() } - @Suppress("NOTHING_TO_INLINE") - private inline fun checkDeprecatedConstructorParameters() { - if (this.chatId == null && this.channelUsername == null) { - throw IllegalArgumentException("chatId parameter must be either Long or String") - } - } - var emoji: String? by optionalRequestParameter() fun emoji(emoji: String) = applySelf { this.emoji = emoji } diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt index ceae5bb8..a0c5c2f1 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt @@ -2,6 +2,7 @@ package com.pengrad.telegrambot.request import com.pengrad.telegrambot.model.MessageEntity import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import java.io.File @@ -91,13 +92,6 @@ class SendVideo private constructor( checkDeprecatedConstructorParameters() } - @Suppress("NOTHING_TO_INLINE") - private inline fun checkDeprecatedConstructorParameters() { - if (this.chatId == null && this.channelUsername == null) { - throw IllegalArgumentException("chatId parameter must be either Long or String") - } - } - var duration: Int? by optionalRequestParameter() var width: Int? by optionalRequestParameter() var height: Int? by optionalRequestParameter() diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt index 06f47fc0..28862020 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt @@ -1,5 +1,6 @@ package com.pengrad.telegrambot.request +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import java.io.File @@ -88,13 +89,6 @@ class SendVideoNote private constructor( ) { checkDeprecatedConstructorParameters() } - - @Suppress("NOTHING_TO_INLINE") - private inline fun checkDeprecatedConstructorParameters() { - if (this.chatId == null && this.channelUsername == null) { - throw IllegalArgumentException("chatId parameter must be either Long or String") - } - } var duration: Int? by optionalRequestParameter() var length: Int? by optionalRequestParameter() diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt index 3f8ef197..44fd60f4 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt @@ -2,6 +2,7 @@ package com.pengrad.telegrambot.request import com.pengrad.telegrambot.model.MessageEntity import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter import java.io.File @@ -91,13 +92,6 @@ class SendVoice private constructor( checkDeprecatedConstructorParameters() } - @Suppress("NOTHING_TO_INLINE") - private inline fun checkDeprecatedConstructorParameters() { - if (this.chatId == null && this.channelUsername == null) { - throw IllegalArgumentException("chatId parameter must be either Long or String") - } - } - var caption: String? by optionalRequestParameter() var parseMode: ParseMode? by optionalRequestParameter() var captionEntities: List? by optionalRequestParameter() diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/JavaCompatabilityUtility.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/JavaCompatabilityUtility.kt index 89a70263..91eee94a 100644 --- a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/JavaCompatabilityUtility.kt +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/JavaCompatabilityUtility.kt @@ -2,6 +2,15 @@ package com.pengrad.telegrambot.utility.kotlin +import com.pengrad.telegrambot.request.KAbstractSendRequest + typealias JavaInteger = java.lang.Integer -typealias JavaLong = java.lang.Long \ No newline at end of file +typealias JavaLong = java.lang.Long + +@Suppress("NOTHING_TO_INLINE") +inline fun KAbstractSendRequest<*>.checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } +} \ No newline at end of file From 82e8cabe1c762dc1c1b8ecadedd6b6a0af318641 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 02:01:10 +0300 Subject: [PATCH 13/20] Rewrite SendContact to Kotlin --- .../telegrambot/request/SendContact.java | 22 -------- .../telegrambot/request/SendContact.kt | 52 +++++++++++++++++++ .../extension/request/SendContactExtension.kt | 35 +++++++++++++ 3 files changed, 87 insertions(+), 22 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendContact.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendContactExtension.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendContact.java b/library/src/main/java/com/pengrad/telegrambot/request/SendContact.java deleted file mode 100644 index 01a7e783..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendContact.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.pengrad.telegrambot.request; - -/** - * stas - * 5/1/16. - */ -public class SendContact extends AbstractSendRequest { - - public SendContact(Object chatId, String phoneNumber, String firstName) { - super(chatId); - add("phone_number", phoneNumber); - add("first_name", firstName); - } - - public SendContact lastName(String lastName) { - return add("last_name", lastName); - } - - public SendContact vcard(String vcard) { - return add("vcard", vcard); - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt new file mode 100644 index 00000000..95ee6081 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt @@ -0,0 +1,52 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class SendContact private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + phoneNumber: String, + firstName: String +) : KAbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername, +) { + + constructor(chatId: Long, phoneNumber: String, firstName: String) : this( + chatId = chatId, + channelUsername = null, + phoneNumber = phoneNumber, + firstName = firstName + ) + + constructor(channelUsername: String, phoneNumber: String, firstName: String) : this( + chatId = null, + channelUsername = channelUsername, + phoneNumber = phoneNumber, + firstName = firstName + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendContact(chatId, phoneNumber, firstName)")) + constructor(chatId: Any, phoneNumber: String, firstName: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + phoneNumber = phoneNumber, + firstName = firstName + ) { + checkDeprecatedConstructorParameters() + } + + val phoneNumber: String by requestParameter(phoneNumber) + val firstName: String by requestParameter(firstName) + + var lastName: String? by optionalRequestParameter() + var vcard: String? by optionalRequestParameter() + + fun lastName(lastName: String) = apply { this.lastName = lastName } + + fun vcard(vcard: String) = apply { this.vcard = vcard } + +} \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendContactExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendContactExtension.kt new file mode 100644 index 00000000..fcadef7c --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendContactExtension.kt @@ -0,0 +1,35 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendContact +import com.pengrad.telegrambot.utility.kotlin.extension.execute + +inline fun TelegramAware.sendContact( + chatId: Long, + phoneNumber: String, + firstName: String, + lastName: String? = null, + modifier: SendContact.() -> Unit = {} +) = this.execute(SendContact( + chatId = chatId, + phoneNumber = phoneNumber, + firstName = firstName +)) { + this.lastName = lastName + modifier() +} + +inline fun TelegramAware.sendContact( + channelUsername: String, + phoneNumber: String, + firstName: String, + lastName: String? = null, + modifier: SendContact.() -> Unit = {} +) = this.execute(SendContact( + channelUsername = channelUsername, + phoneNumber = phoneNumber, + firstName = firstName +)) { + this.lastName = lastName + modifier() +} \ No newline at end of file From dc86f02507112787c32cfa9af91824bf87cd7f4b Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 02:05:33 +0300 Subject: [PATCH 14/20] Rewrite SendGame to Kotlin --- .../pengrad/telegrambot/request/SendGame.java | 14 ------- .../pengrad/telegrambot/request/SendGame.kt | 39 +++++++++++++++++++ .../extension/request/SendGameExtension.kt | 23 +++++++++++ 3 files changed, 62 insertions(+), 14 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendGame.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendGame.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendGameExtension.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendGame.java b/library/src/main/java/com/pengrad/telegrambot/request/SendGame.java deleted file mode 100644 index 188bb0a5..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendGame.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.pengrad.telegrambot.request; - -/** - * Stas Parshin - * 03 October 2016 - */ -public class SendGame extends AbstractSendRequest { - - public SendGame(Object chatId, String gameShortName) { - super(chatId); - add("game_short_name", gameShortName); - } - -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendGame.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendGame.kt new file mode 100644 index 00000000..aaf559fb --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendGame.kt @@ -0,0 +1,39 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class SendGame private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + gameShortName: String +) : KAbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername, +) { + + constructor(chatId: Long, gameShortName: String) : this( + chatId = chatId, + channelUsername = null, + gameShortName = gameShortName + ) + + constructor(channelUsername: String, gameShortName: String) : this( + chatId = null, + channelUsername = channelUsername, + gameShortName = gameShortName + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendGame(chatId, gameShortName)")) + constructor(chatId: Any, gameShortName: String) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + gameShortName = gameShortName + ) { + checkDeprecatedConstructorParameters() + } + + val gameShortName: String by requestParameter(gameShortName) + +} \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendGameExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendGameExtension.kt new file mode 100644 index 00000000..a641b3f5 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendGameExtension.kt @@ -0,0 +1,23 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendGame +import com.pengrad.telegrambot.utility.kotlin.extension.execute + +inline fun TelegramAware.sendGame( + chatId: Long, + gameShortName: String, + modifier: SendGame.() -> Unit = {} +) = this.execute(SendGame( + chatId = chatId, + gameShortName = gameShortName +), modifier) + +inline fun TelegramAware.sendGame( + channelUsername: String, + gameShortName: String, + modifier: SendGame.() -> Unit = {} +) = this.execute(SendGame( + channelUsername = channelUsername, + gameShortName = gameShortName +), modifier) \ No newline at end of file From 7f3b3bbf164ab2ca65ff1f5ab2952b55bd879bac Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 02:22:11 +0300 Subject: [PATCH 15/20] Rewrite SendDice to Kotlin --- .../pengrad/telegrambot/request/SendDice.java | 36 ----- .../pengrad/telegrambot/request/SendDice.kt | 54 +++++++ .../extension/request/SendDiceExtension.kt | 132 ++++++++++++++++++ 3 files changed, 186 insertions(+), 36 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendDice.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendDice.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendDiceExtension.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendDice.java b/library/src/main/java/com/pengrad/telegrambot/request/SendDice.java deleted file mode 100644 index 2efb0e75..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendDice.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.pengrad.telegrambot.request; - -/** - * Stas Parshin - * 31 March 2020 - */ -public class SendDice extends AbstractSendRequest { - - public SendDice(Object chatId) { - super(chatId); - } - - public SendDice emoji(String emoji) { - return add("emoji", emoji); - } - - public SendDice darts() { - return emoji("🎯"); - } - - public SendDice basketball() { - return emoji("🏀"); - } - - public SendDice football() { - return emoji("⚽"); - } - - public SendDice slotMachine() { - return emoji("🎰"); - } - - public SendDice bowling() { - return emoji("🎳"); - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendDice.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendDice.kt new file mode 100644 index 00000000..834d2043 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendDice.kt @@ -0,0 +1,54 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter + +class SendDice private constructor( + chatId: Long? = null, + channelUsername: String? = null, +) : KAbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername, +) { + + companion object { + const val DARTS_EMOJI = "🎯" + const val BASKETBALL_EMOJI = "🏀" + const val FOOTBALL_EMOJI = "⚽" + const val BOWLING_EMOJI = "🎳" + const val SLOT_MACHINE_EMOJI = "🎰" + } + + constructor(chatId: Long) : this( + chatId = chatId, + channelUsername = null + ) + + constructor(channelUsername: String) : this( + chatId = null, + channelUsername = channelUsername + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendDice(chatId)")) + constructor(chatId: Any) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String + ) { + checkDeprecatedConstructorParameters() + } + + var emoji: String? by optionalRequestParameter() + + fun emoji(emoji: String) = applySelf { this.emoji = emoji } + + fun darts() = emoji(DARTS_EMOJI) + + fun basketball() = emoji(BASKETBALL_EMOJI) + + fun football() = emoji(FOOTBALL_EMOJI) + + fun bowling() = emoji(BOWLING_EMOJI) + + fun slotMachine() = emoji(SLOT_MACHINE_EMOJI) + +} \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendDiceExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendDiceExtension.kt new file mode 100644 index 00000000..4575cf22 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendDiceExtension.kt @@ -0,0 +1,132 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendDice +import com.pengrad.telegrambot.utility.kotlin.extension.execute + +inline fun TelegramAware.sendDice( + chatId: Long, + emoji: String? = null, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + chatId = chatId +)) { + this.emoji = emoji + modifier() +} + +inline fun TelegramAware.sendDice( + channelUsername: String, + emoji: String? = null, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + channelUsername = channelUsername +)) { + this.emoji = emoji + modifier() +} + + +inline fun TelegramAware.sendDartsDice( + chatId: Long, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + chatId = chatId +)) { + this.emoji = SendDice.DARTS_EMOJI + modifier() +} + +inline fun TelegramAware.sendDartsDice( + channelUsername: String, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + channelUsername = channelUsername +)) { + this.emoji = SendDice.DARTS_EMOJI + modifier() +} + + +inline fun TelegramAware.sendBasketballDice( + chatId: Long, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + chatId = chatId +)) { + this.emoji = SendDice.BASKETBALL_EMOJI + modifier() +} + +inline fun TelegramAware.sendBasketballDice( + channelUsername: String, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + channelUsername = channelUsername +)) { + this.emoji = SendDice.BASKETBALL_EMOJI + modifier() +} + + +inline fun TelegramAware.sendFootballDice( + chatId: Long, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + chatId = chatId +)) { + this.emoji = SendDice.FOOTBALL_EMOJI + modifier() +} + +inline fun TelegramAware.sendFootballDice( + channelUsername: String, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + channelUsername = channelUsername +)) { + this.emoji = SendDice.FOOTBALL_EMOJI + modifier() +} + + +inline fun TelegramAware.sendBowlingDice( + chatId: Long, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + chatId = chatId +)) { + this.emoji = SendDice.BOWLING_EMOJI + modifier() +} + +inline fun TelegramAware.sendBowlingDice( + channelUsername: String, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + channelUsername = channelUsername +)) { + this.emoji = SendDice.BOWLING_EMOJI + modifier() +} + + +inline fun TelegramAware.sendSlotMachineDice( + chatId: Long, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + chatId = chatId +)) { + this.emoji = SendDice.SLOT_MACHINE_EMOJI + modifier() +} + +inline fun TelegramAware.sendSlotMachineDice( + channelUsername: String, + modifier: SendDice.() -> Unit = {} +) = this.execute(SendDice( + channelUsername = channelUsername +)) { + this.emoji = SendDice.SLOT_MACHINE_EMOJI + modifier() +} \ No newline at end of file From 99598b0b884e51b869376782ab5ce3d84d2898c9 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 17:43:26 +0300 Subject: [PATCH 16/20] Rewrite SendLocation to Kotlin --- .../telegrambot/request/SendLocation.java | 30 ---------- .../telegrambot/request/SendLocation.kt | 58 +++++++++++++++++++ .../request/SendLocationExtension.kt | 27 +++++++++ 3 files changed, 85 insertions(+), 30 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendLocation.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendLocationExtension.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.java b/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.java deleted file mode 100644 index caa1999a..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.pengrad.telegrambot.request; - -/** - * stas - * 5/1/16. - */ -public class SendLocation extends AbstractSendRequest { - - public SendLocation(Object chatId, float latitude, float longitude) { - super(chatId); - add("latitude", latitude); - add("longitude", longitude); - } - - public SendLocation horizontalAccuracy(float horizontalAccuracy) { - return add("horizontal_accuracy", horizontalAccuracy); - } - - public SendLocation livePeriod(int livePeriod) { - return add("live_period", livePeriod); - } - - public SendLocation heading(int heading) { - return add("heading", heading); - } - - public SendLocation proximityAlertRadius(int proximityAlertRadius) { - return add("proximity_alert_radius", proximityAlertRadius); - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt new file mode 100644 index 00000000..9ed4f2be --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt @@ -0,0 +1,58 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class SendLocation private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + latitude: Float, + longitude: Float +) : KAbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername, +) { + + constructor(chatId: Long, latitude: Float, longitude: Float) : this( + chatId = chatId, + channelUsername = null, + latitude = latitude, + longitude = longitude + ) + + constructor(channelUsername: String, latitude: Float, longitude: Float) : this( + chatId = null, + channelUsername = channelUsername, + latitude = latitude, + longitude = longitude + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendLocation(chatId, latitude, longitude)")) + constructor(chatId: Any, latitude: Float, longitude: Float) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + latitude = latitude, + longitude = longitude + ) { + checkDeprecatedConstructorParameters() + } + + val latitude: Float by requestParameter(latitude) + val longitude: Float by requestParameter(longitude) + + var horizontalAccuracy: Float? by optionalRequestParameter() + var livePeriod: Int? by optionalRequestParameter() + var heading: Int? by optionalRequestParameter() + var proximityAlertRadius: Int? by optionalRequestParameter() + + fun horizontalAccuracy(horizontalAccuracy: Float) = applySelf { this.horizontalAccuracy = horizontalAccuracy } + + fun livePeriod(livePeriod: Int) = applySelf { this.livePeriod = livePeriod } + + fun heading(heading: Int) = applySelf { this.heading = heading } + + fun proximityAlertRadius(proximityAlertRadius: Int) = applySelf { this.proximityAlertRadius = proximityAlertRadius } + +} \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendLocationExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendLocationExtension.kt new file mode 100644 index 00000000..ce024583 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendLocationExtension.kt @@ -0,0 +1,27 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendLocation +import com.pengrad.telegrambot.utility.kotlin.extension.execute + +inline fun TelegramAware.sendLocation( + chatId: Long, + latitude: Float, + longitude: Float, + modifier: SendLocation.() -> Unit = {} +) = this.execute(SendLocation( + chatId = chatId, + latitude = latitude, + longitude = longitude, +), modifier) + +inline fun TelegramAware.sendLocation( + channelUsername: String, + latitude: Float, + longitude: Float, + modifier: SendLocation.() -> Unit = {} +) = this.execute(SendLocation( + channelUsername = channelUsername, + latitude = latitude, + longitude = longitude, +), modifier) \ No newline at end of file From 53e4ea3d1f909e112cb3e7e5f314d09160381cb5 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 17:49:23 +0300 Subject: [PATCH 17/20] Rewrite SendVenue to Kotlin --- .../telegrambot/request/SendVenue.java | 32 ------- .../pengrad/telegrambot/request/SendVenue.kt | 87 +++++++++++++++++++ .../extension/request/SendVenueExtension.kt | 35 ++++++++ 3 files changed, 122 insertions(+), 32 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendVenue.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVenueExtension.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.java b/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.java deleted file mode 100644 index c9c1d4ac..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.pengrad.telegrambot.request; - -/** - * stas - * 5/1/16. - */ -public class SendVenue extends AbstractSendRequest { - - public SendVenue(Object chatId, float latitude, float longitude, String title, String address) { - super(chatId); - add("latitude", latitude); - add("longitude", longitude); - add("title", title); - add("address", address); - } - - public SendVenue foursquareId(String foursquareId) { - return add("foursquare_id", foursquareId); - } - - public SendVenue foursquareType(String foursquareType) { - return add("foursquare_type", foursquareType); - } - - public SendVenue googlePlaceId(String googlePlaceId) { - return add("google_place_id", googlePlaceId); - } - - public SendVenue googlePlaceType(String googlePlaceType) { - return add("google_place_type", googlePlaceType); - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt new file mode 100644 index 00000000..f2f81bfc --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt @@ -0,0 +1,87 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class SendVenue private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + latitude: Float, + longitude: Float, + title: String, + address: String +) : KAbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername, +) { + + constructor( + chatId: Long, + latitude: Float, + longitude: Float, + title: String, + address: String + ) : this( + chatId = chatId, + channelUsername = null, + latitude = latitude, + longitude = longitude, + title = title, + address = address + ) + + constructor( + channelUsername: String, + latitude: Float, + longitude: Float, + title: String, + address: String + ) : this( + chatId = null, + channelUsername = channelUsername, + latitude = latitude, + longitude = longitude, + title = title, + address = address + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendVenue(chatId, latitude, longitude, title, address)")) + constructor( + chatId: Any, + latitude: Float, + longitude: Float, + title: String, + address: String + ) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + latitude = latitude, + longitude = longitude, + title = title, + address = address + ) { + checkDeprecatedConstructorParameters() + } + + val latitude: Float by requestParameter(latitude) + val longitude: Float by requestParameter(longitude) + val title: String by requestParameter(title) + val address: String by requestParameter(address) + + var foursquareId: String? by optionalRequestParameter() + var foursquareType: String? by optionalRequestParameter() + + var googlePlaceId: String? by optionalRequestParameter() + var googlePlaceType: String? by optionalRequestParameter() + + fun foursquareId(foursquareId: String) = applySelf { this.foursquareId = foursquareId } + + fun foursquareType(foursquareType: String) = applySelf { this.foursquareType = foursquareType } + + fun googlePlaceId(googlePlaceId: String) = applySelf { this.googlePlaceId = googlePlaceId } + + fun googlePlaceType(googlePlaceType: String) = applySelf { this.googlePlaceType = googlePlaceType } + +} \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVenueExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVenueExtension.kt new file mode 100644 index 00000000..a0abf5b9 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendVenueExtension.kt @@ -0,0 +1,35 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.request.SendVenue +import com.pengrad.telegrambot.utility.kotlin.extension.execute + +inline fun TelegramAware.sendVenue( + chatId: Long, + latitude: Float, + longitude: Float, + title: String, + address: String, + modifier: SendVenue.() -> Unit = {} +) = this.execute(SendVenue( + chatId = chatId, + latitude = latitude, + longitude = longitude, + title = title, + address = address, +), modifier) + +inline fun TelegramAware.sendVenue( + channelUsername: String, + latitude: Float, + longitude: Float, + title: String, + address: String, + modifier: SendVenue.() -> Unit = {} +) = this.execute(SendVenue( + channelUsername = channelUsername, + latitude = latitude, + longitude = longitude, + title = title, + address = address, +), modifier) \ No newline at end of file From 0550fdf7adbdc7fba21ca0c4c4ced4d013dc2c8b Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 18:11:50 +0300 Subject: [PATCH 18/20] Rewrite SendPoll to Kotlin --- .../pengrad/telegrambot/request/SendPoll.java | 71 ------------ .../pengrad/telegrambot/request/SendPoll.kt | 109 ++++++++++++++++++ .../extension/request/SendPollExtension.kt | 54 +++++++++ 3 files changed, 163 insertions(+), 71 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendPoll.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendPoll.kt create mode 100644 library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendPollExtension.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.java b/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.java deleted file mode 100644 index 741ad200..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.pengrad.telegrambot.request; - -import com.pengrad.telegrambot.model.MessageEntity; -import com.pengrad.telegrambot.model.Poll; -import com.pengrad.telegrambot.model.request.InputPollOption; -import com.pengrad.telegrambot.model.request.ParseMode; - -/** - * Stas Parshin - * 17 April 2019 - */ -public class SendPoll extends AbstractSendRequest { - - public SendPoll(Object chatId, String question, InputPollOption... options) { - super(chatId); - add("question", question); - add("options", options); - } - - public SendPoll isAnonymous(boolean isAnonymous) { - return add("is_anonymous", isAnonymous); - } - - public SendPoll type(String type) { - return add("type", type); - } - - public SendPoll type(Poll.Type type) { - return add("type", type.name()); - } - - public SendPoll allowsMultipleAnswers(boolean allowsMultipleAnswers) { - return add("allows_multiple_answers", allowsMultipleAnswers); - } - - public SendPoll correctOptionId(int correctOptionId) { - return add("correct_option_id", correctOptionId); - } - - public SendPoll explanation(String explanation) { - return add("explanation", explanation); - } - - public SendPoll explanationParseMode(ParseMode parseMode) { - return add("explanation_parse_mode", parseMode.name()); - } - - public SendPoll explanationEntities(MessageEntity... entities) { - return add("explanation_entities", entities); - } - - public SendPoll questionParseMode(String questionParseMode) { - return add("question_parse_mode", questionParseMode); - } - - public SendPoll questionEntities(MessageEntity... entities) { - return add("question_entities", entities); - } - - public SendPoll openPeriod(int openPeriod) { - return add("open_period", openPeriod); - } - - public SendPoll closeDate(long closeDate) { - return add("close_date", closeDate); - } - - public SendPoll isClosed(boolean isClosed) { - return add("is_closed", isClosed); - } -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.kt new file mode 100644 index 00000000..a98ef81e --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.kt @@ -0,0 +1,109 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.model.MessageEntity +import com.pengrad.telegrambot.model.Poll +import com.pengrad.telegrambot.model.request.InputPollOption +import com.pengrad.telegrambot.model.request.ParseMode +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class SendPoll private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + question: String, + options: List +) : KAbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername, +) { + + constructor( + chatId: Long, + question: String, + options: List + ) : this( + chatId = chatId, + channelUsername = null, + question = question, + options = options + ) + + constructor( + channelUsername: String, + question: String, + options: List + ) : this( + chatId = null, + channelUsername = channelUsername, + question = question, + options = options + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendPoll(chatId, question, options)")) + constructor( + chatId: Any, + question: String, + vararg options: InputPollOption + ) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + question = question, + options = options.toList() + ) { + checkDeprecatedConstructorParameters() + } + + val question: String by requestParameter(question) + val options: List by requestParameter(options) + + var type: Poll.Type? by optionalRequestParameter() + var typeRaw: String? by optionalRequestParameter(customParameterName = "type") + + var isAnonymous: Boolean? by optionalRequestParameter() + var allowsMultipleAnswers: Boolean? by optionalRequestParameter() + var correctOptionId: Int? by optionalRequestParameter() + + var questionParseMode: ParseMode? by optionalRequestParameter() + var questionEntities: List? by optionalRequestParameter() + + var explanation: String? by optionalRequestParameter() + var explanationParseMode: ParseMode? by optionalRequestParameter() + var explanationEntities: List? by optionalRequestParameter() + + var openPeriod: Int? by optionalRequestParameter() + var closeDate: Long? by optionalRequestParameter() + var isClosed: Boolean? by optionalRequestParameter() + + fun type(type: Poll.Type) = applySelf { this.type = type } + + fun type(typeRaw: String) = applySelf { this.typeRaw = typeRaw } + + fun isAnonymous(isAnonymous: Boolean) = applySelf { this.isAnonymous = isAnonymous } + + fun allowsMultipleAnswers(allowMultipleAnswers: Boolean) = applySelf { this.allowsMultipleAnswers = allowMultipleAnswers } + + fun correctOptionId(correctOptionId: Int) = applySelf { this.correctOptionId = correctOptionId } + + fun questionParseMode(questionParseMode: ParseMode) = applySelf { this.questionParseMode = questionParseMode } + + fun questionEntities(questionEntities: List) = applySelf { this.questionEntities = questionEntities } + + fun questionEntities(vararg questionEntities: MessageEntity) = questionEntities(questionEntities.toList()) + + fun explanation(explanation: String) = applySelf { this.explanation = explanation } + + fun explanationParseMode(explanationParseMode: ParseMode) = applySelf { this.explanationParseMode = explanationParseMode } + + fun explanationEntities(explanationEntities: List) = applySelf { this.explanationEntities = explanationEntities } + + fun explanationEntities(vararg explanationEntities: MessageEntity) = explanationEntities(explanationEntities.toList()) + + fun openPeriod(openPeriod: Int) = applySelf { this.openPeriod = openPeriod } + + fun closeDate(closeDate: Long) = applySelf { this.closeDate = closeDate } + + fun isClosed(isClosed: Boolean) = applySelf { this.isClosed = isClosed } + +} \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendPollExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendPollExtension.kt new file mode 100644 index 00000000..cc3378a0 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendPollExtension.kt @@ -0,0 +1,54 @@ +package com.pengrad.telegrambot.utility.kotlin.extension.request + +import com.pengrad.telegrambot.TelegramAware +import com.pengrad.telegrambot.model.request.InputPollOption +import com.pengrad.telegrambot.request.SendPoll +import com.pengrad.telegrambot.utility.kotlin.extension.execute + +inline fun TelegramAware.sendPoll( + chatId: Long, + question: String, + options: List, + modifier: SendPoll.() -> Unit = {} +) = this.execute(SendPoll( + chatId = chatId, + question = question, + options = options +), modifier) + +inline fun TelegramAware.sendPoll( + chatId: Long, + question: String, + vararg options: InputPollOption, + modifier: SendPoll.() -> Unit = {} +) = this.sendPoll( + chatId = chatId, + question = question, + options = options.toList(), + modifier = modifier +) + + +inline fun TelegramAware.sendPoll( + channelUsername: String, + question: String, + options: List, + modifier: SendPoll.() -> Unit = {} +) = this.execute(SendPoll( + channelUsername = channelUsername, + question = question, + options = options +), modifier) + +inline fun TelegramAware.sendPoll( + channelUsername: String, + question: String, + vararg options: InputPollOption, + modifier: SendPoll.() -> Unit = {} +) = this.sendPoll( + channelUsername = channelUsername, + question = question, + options = options.toList(), + modifier = modifier +) + From d3d7e9a96537d60555945c8eae71b88e2cefa7bc Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 18:45:44 +0300 Subject: [PATCH 19/20] Rewrite SendInvoice to Kotlin --- .../telegrambot/request/SendInvoice.java | 88 ----------- .../telegrambot/request/SendInvoice.kt | 141 ++++++++++++++++++ .../extension/request/SendInvoiceExtension.kt | 13 +- 3 files changed, 151 insertions(+), 91 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.java create mode 100644 library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.kt diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.java b/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.java deleted file mode 100644 index 35c17397..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.pengrad.telegrambot.request; - -import com.pengrad.telegrambot.model.request.LabeledPrice; - -/** - * Stas Parshin - * 24 May 2017 - */ -public class SendInvoice extends AbstractSendRequest { - - - public SendInvoice(Long chatId, String title, String description, String payload, String currency, LabeledPrice... prices) { - super(chatId); - add("title", title).add("description", description).add("payload", payload) - .add("currency", currency).add("prices", prices); - } - - public SendInvoice providerData(String providerData) { - return add("provider_data", providerData); - } - - public SendInvoice photoUrl(String photoUrl) { - return add("photo_url", photoUrl); - } - - public SendInvoice photoSize(Integer photoSize) { - return add("photo_size", photoSize); - } - - public SendInvoice photoWidth(Integer photoWidth) { - return add("photo_width", photoWidth); - } - - public SendInvoice photoHeight(Integer photoHeight) { - return add("photo_height", photoHeight); - } - - public SendInvoice needName(boolean needName) { - return add("need_name", needName); - } - - public SendInvoice needPhoneNumber(boolean needPhoneNumber) { - return add("need_phone_number", needPhoneNumber); - } - - public SendInvoice needEmail(boolean needEmail) { - return add("need_email", needEmail); - } - - public SendInvoice needShippingAddress(boolean needShippingAddress) { - return add("need_shipping_address", needShippingAddress); - } - - public SendInvoice isFlexible(boolean isFlexible) { - return add("is_flexible", isFlexible); - } - - public SendInvoice startParameter(String startParameter) { - return add("start_parameter", startParameter); - } - - public SendInvoice providerToken(String providerToken) { - return add("provider_token", providerToken); - } - - /** - * @param maxTipAmount The maximum accepted amount for tips in the smallest units of the currency - */ - public SendInvoice maxTipAmount(int maxTipAmount) { - return add("max_tip_amount", maxTipAmount); - } - - /** - * @param suggestedTipAmounts An array of suggested amounts of tip in the smallest units of the currency. At most 4 suggested tip amounts can be specified. The suggested tip amounts must be positive, passed in a strictly increased order and must not exceed max_tip_amount. - */ - public SendInvoice suggestedTipAmounts(Integer[] suggestedTipAmounts) { - return add("suggested_tip_amounts", suggestedTipAmounts); - } - - public SendInvoice sendEmailToProvider(boolean sendEmailToProvider) { - return add("send_email_to_provider", sendEmailToProvider); - } - - public SendInvoice sendPhoneNumberToProvider(boolean sendPhoneNumberToProvider) { - return add("send_phone_number_to_provider", sendPhoneNumberToProvider); - } - -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.kt new file mode 100644 index 00000000..5b740221 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.kt @@ -0,0 +1,141 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.model.request.LabeledPrice +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter +import com.pengrad.telegrambot.utility.kotlin.requestParameter + +class SendInvoice private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + title: String, + description: String, + payload: String, + currency: String, + prices: List +) : KAbstractSendRequest( + chatId = chatId, + channelUsername = channelUsername, +) { + + constructor( + chatId: Long, + title: String, + description: String, + payload: String, + currency: String, + prices: List + ) : this( + chatId = chatId, + channelUsername = null, + title = title, + description = description, + payload = payload, + currency = currency, + prices = prices + ) + + constructor( + channelUsername: String, + title: String, + description: String, + payload: String, + currency: String, + prices: List + ) : this( + chatId = null, + channelUsername = channelUsername, + title = title, + description = description, + payload = payload, + currency = currency, + prices = prices + ) + + @Deprecated("Use constructor with chatId or channelUsername instead", ReplaceWith("SendInvoice(chatId, title, description, payload, currency, prices.toList())")) + constructor( + chatId: Any, + title: String, + description: String, + payload: String, + currency: String, + vararg prices: LabeledPrice + ) : this( + chatId = (chatId as? Number)?.toLong(), + channelUsername = chatId as? String, + title = title, + description = description, + payload = payload, + currency = currency, + prices = prices.toList() + ) { + checkDeprecatedConstructorParameters() + } + + val title: String by requestParameter(title) + val description: String by requestParameter(description) + val payload: String by requestParameter(payload) + val currency: String by requestParameter(currency) + val prices: List by requestParameter(prices) + + var providerToken: String? by optionalRequestParameter() + var providerData: String? by optionalRequestParameter() + + var maxTipAmount: Int? by optionalRequestParameter() + var suggestedTipAmounts: List? by optionalRequestParameter() + + var photoUrl: String? by optionalRequestParameter() + var photoSize: Int? by optionalRequestParameter() + var photoWidth: Int? by optionalRequestParameter() + var photoHeight: Int? by optionalRequestParameter() + + var needName: Boolean? by optionalRequestParameter() + var needPhoneNumber: Boolean? by optionalRequestParameter() + var needEmail: Boolean? by optionalRequestParameter() + var needShippingAddress: Boolean? by optionalRequestParameter() + + var sendEmailToProvider: Boolean? by optionalRequestParameter() + var sendPhoneNumberToProvider: Boolean? by optionalRequestParameter() + + var isFlexible: Boolean? by optionalRequestParameter() + var subscriptionPeriod: Int? by optionalRequestParameter() + var startParameter: String? by optionalRequestParameter() + + fun providerToken(providerToken: String) = applySelf { this.providerToken = providerToken } + + fun providerData(providerData: String) = applySelf { this.providerData = providerData } + + fun maxTipAmount(maxTipAmount: Int) = applySelf { this.maxTipAmount = maxTipAmount } + + fun suggestedTipAmounts(suggestedTipAmounts: List) = applySelf { this.suggestedTipAmounts = suggestedTipAmounts } + + fun suggestedTipAmounts(suggestedTipAmounts: Array) = suggestedTipAmounts(suggestedTipAmounts.toList()) + + fun suggestedTipAmounts(vararg suggestedTipAmounts: Int) = suggestedTipAmounts(suggestedTipAmounts.toList()) + + fun photoUrl(photoUrl: String) = applySelf { this.photoUrl = photoUrl } + + fun photoSize(photoSize: Int) = applySelf { this.photoSize = photoSize } + + fun photoWidth(photoWidth: Int) = applySelf { this.photoWidth = photoWidth } + + fun photoHeight(photoHeight: Int) = applySelf { this.photoHeight = photoHeight } + + fun needName(needName: Boolean) = applySelf { this.needName = needName } + + fun needPhoneNumber(needPhoneNumber: Boolean) = applySelf { this.needPhoneNumber = needPhoneNumber } + + fun needEmail(needEmail: Boolean) = applySelf { this.needEmail = needEmail } + + fun needShippingAddress(needShippingAddress: Boolean) = applySelf { this.needShippingAddress = needShippingAddress } + + fun sendEmailToProvider(sendEmailToProvider: Boolean) = applySelf { this.sendEmailToProvider = sendEmailToProvider } + + fun sendPhoneNumberToProvider(sendPhoneNumberToProvider: Boolean) = applySelf { this.sendPhoneNumberToProvider = sendPhoneNumberToProvider } + + fun isFlexible(isFlexible: Boolean) = applySelf { this.isFlexible = isFlexible } + + fun startParameter(startParameter: String) = applySelf { this.startParameter = startParameter } + +} \ No newline at end of file diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendInvoiceExtension.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendInvoiceExtension.kt index c3015fd4..96b9260e 100644 --- a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendInvoiceExtension.kt +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/extension/request/SendInvoiceExtension.kt @@ -13,7 +13,14 @@ fun TelegramAware.sendInvoice( currency: String, items: List, modifier: SendInvoice.() -> Unit = {} -) = this.execute(SendInvoice(chatId, title, description, payload, currency, *items.toTypedArray()), modifier) +) = this.execute(SendInvoice( + chatId = chatId, + title = title, + description = description, + payload = payload, + currency = currency, + prices = items +), modifier) fun TelegramAware.sendInvoice( chatId: Long, @@ -21,7 +28,7 @@ fun TelegramAware.sendInvoice( description: String, payload: String, currency: String, - item: LabeledPrice, + vararg items: LabeledPrice, modifier: SendInvoice.() -> Unit = {} ) = this.sendInvoice( chatId = chatId, @@ -29,6 +36,6 @@ fun TelegramAware.sendInvoice( description = description, payload = payload, currency = currency, - items = listOf(item), + items = items.toList(), modifier = modifier ) \ No newline at end of file From 741796d2176ab748f387e0bd2f00cb041d548203 Mon Sep 17 00:00:00 2001 From: Andrew Anfanik Date: Mon, 3 Mar 2025 18:46:29 +0300 Subject: [PATCH 20/20] Rename KAbstractSendRequest to AbstractSendRequest --- .../request/AbstractMultipartRequest.kt | 2 +- .../request/AbstractSendRequest.java | 50 ------------------- ...tSendRequest.kt => AbstractSendRequest.kt} | 2 +- .../telegrambot/request/SendContact.kt | 2 +- .../pengrad/telegrambot/request/SendDice.kt | 2 +- .../pengrad/telegrambot/request/SendGame.kt | 2 +- .../telegrambot/request/SendInvoice.kt | 2 +- .../telegrambot/request/SendLocation.kt | 2 +- .../telegrambot/request/SendMessage.kt | 2 +- .../pengrad/telegrambot/request/SendPoll.kt | 2 +- .../pengrad/telegrambot/request/SendVenue.kt | 2 +- .../kotlin/JavaCompatabilityUtility.kt | 4 +- 12 files changed, 12 insertions(+), 62 deletions(-) delete mode 100644 library/src/main/java/com/pengrad/telegrambot/request/AbstractSendRequest.java rename library/src/main/java/com/pengrad/telegrambot/request/{KAbstractSendRequest.kt => AbstractSendRequest.kt} (96%) diff --git a/library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.kt b/library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.kt index 11f9a178..5c5185d3 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/AbstractMultipartRequest.kt @@ -14,7 +14,7 @@ abstract class AbstractMultipartRequest>( defaultFileName: String, defaultContentType: String -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/request/AbstractSendRequest.java b/library/src/main/java/com/pengrad/telegrambot/request/AbstractSendRequest.java deleted file mode 100644 index 7282f4de..00000000 --- a/library/src/main/java/com/pengrad/telegrambot/request/AbstractSendRequest.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.pengrad.telegrambot.request; - -import com.pengrad.telegrambot.model.request.ReplyParameters; -import com.pengrad.telegrambot.model.request.Keyboard; -import com.pengrad.telegrambot.response.SendResponse; - -/** - * stas - * 5/1/16. - */ -abstract public class AbstractSendRequest> extends BaseRequest { - - public AbstractSendRequest(Object chatId) { - super(SendResponse.class); - add("chat_id", chatId); - } - - public T messageEffectId(String messageEffectId) { - return add("message_effect_id", messageEffectId); - } - - public T businessConnectionId(String businessConnectionId) { - return add("business_connection_id", businessConnectionId); - } - - public T messageThreadId(Integer messageThreadId) { - return add("message_thread_id", messageThreadId); - } - - public T disableNotification(boolean disableNotification) { - return add("disable_notification", disableNotification); - } - - public T replyParameters(ReplyParameters replyParameters) { - return add("reply_parameters", replyParameters); - } - - public T replyMarkup(Keyboard replyMarkup) { - return add("reply_markup", replyMarkup); - } - - public T protectContent(boolean protectContent) { - return add("protect_content", protectContent); - } - - public T allowPaidBroadcast(boolean allowPaidBroadcast) { - return add("allow_paid_broadcast", allowPaidBroadcast); - } - -} diff --git a/library/src/main/java/com/pengrad/telegrambot/request/KAbstractSendRequest.kt b/library/src/main/java/com/pengrad/telegrambot/request/AbstractSendRequest.kt similarity index 96% rename from library/src/main/java/com/pengrad/telegrambot/request/KAbstractSendRequest.kt rename to library/src/main/java/com/pengrad/telegrambot/request/AbstractSendRequest.kt index d009c2eb..d4fa6784 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/KAbstractSendRequest.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/AbstractSendRequest.kt @@ -5,7 +5,7 @@ import com.pengrad.telegrambot.model.request.ReplyParameters import com.pengrad.telegrambot.response.SendResponse import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter -abstract class KAbstractSendRequest>( +abstract class AbstractSendRequest>( chatId: Long?, channelUsername: String? ) : KBaseRequest(SendResponse::class) { diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt index 95ee6081..293ba495 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendContact.kt @@ -10,7 +10,7 @@ class SendContact private constructor( phoneNumber: String, firstName: String -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername, ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendDice.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendDice.kt index 834d2043..b808b419 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendDice.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendDice.kt @@ -6,7 +6,7 @@ import com.pengrad.telegrambot.utility.kotlin.optionalRequestParameter class SendDice private constructor( chatId: Long? = null, channelUsername: String? = null, -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername, ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendGame.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendGame.kt index aaf559fb..de5f68ba 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendGame.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendGame.kt @@ -8,7 +8,7 @@ class SendGame private constructor( channelUsername: String? = null, gameShortName: String -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername, ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.kt index 5b740221..886718c4 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendInvoice.kt @@ -14,7 +14,7 @@ class SendInvoice private constructor( payload: String, currency: String, prices: List -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername, ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt index 9ed4f2be..11885296 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendLocation.kt @@ -10,7 +10,7 @@ class SendLocation private constructor( latitude: Float, longitude: Float -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername, ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt index b847894d..92e1754f 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt @@ -12,7 +12,7 @@ class SendMessage private constructor( channelUsername: String? = null, text: String -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername, ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.kt index a98ef81e..781d6006 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendPoll.kt @@ -14,7 +14,7 @@ class SendPoll private constructor( question: String, options: List -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername, ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt index f2f81bfc..748103da 100644 --- a/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVenue.kt @@ -12,7 +12,7 @@ class SendVenue private constructor( longitude: Float, title: String, address: String -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername, ) { diff --git a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/JavaCompatabilityUtility.kt b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/JavaCompatabilityUtility.kt index 91eee94a..c0a00ba2 100644 --- a/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/JavaCompatabilityUtility.kt +++ b/library/src/main/java/com/pengrad/telegrambot/utility/kotlin/JavaCompatabilityUtility.kt @@ -2,14 +2,14 @@ package com.pengrad.telegrambot.utility.kotlin -import com.pengrad.telegrambot.request.KAbstractSendRequest +import com.pengrad.telegrambot.request.AbstractSendRequest typealias JavaInteger = java.lang.Integer typealias JavaLong = java.lang.Long @Suppress("NOTHING_TO_INLINE") -inline fun KAbstractSendRequest<*>.checkDeprecatedConstructorParameters() { +inline fun AbstractSendRequest<*>.checkDeprecatedConstructorParameters() { if (this.chatId == null && this.channelUsername == null) { throw IllegalArgumentException("chatId parameter must be either Long or String") }