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 65% 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 89e05363..5c5185d3 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?, @@ -14,7 +14,7 @@ abstract class KAbstractMultipartRequest>( defaultFileName: String, defaultContentType: String -) : KAbstractSendRequest( +) : AbstractSendRequest( chatId = chatId, channelUsername = channelUsername ) { @@ -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/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/AbstractThumbnailedMultipartRequest.kt b/library/src/main/java/com/pengrad/telegrambot/request/AbstractThumbnailedMultipartRequest.kt new file mode 100644 index 00000000..ac3badb1 --- /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 +) : AbstractMultipartRequest( + 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/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..c7995c24 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAnimation.kt @@ -0,0 +1,124 @@ +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 + +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() + } + + 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 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..c47f2931 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendAudio.kt @@ -0,0 +1,117 @@ +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 + +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() + } + + 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 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..293ba495 --- /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 +) : AbstractSendRequest( + 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/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..b808b419 --- /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, +) : AbstractSendRequest( + 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/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..07415bf7 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendDocument.kt @@ -0,0 +1,112 @@ +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 + +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() + } + + 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 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..de5f68ba --- /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 +) : AbstractSendRequest( + 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/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..886718c4 --- /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 +) : AbstractSendRequest( + 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/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..11885296 --- /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 +) : AbstractSendRequest( + 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/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..92e1754f --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendMessage.kt @@ -0,0 +1,55 @@ +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 + +class SendMessage private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + text: String +) : AbstractSendRequest( + 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() + } + + 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/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..97eeee49 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendPhoto.kt @@ -0,0 +1,113 @@ +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 + +class SendPhoto private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + photoUrl: String? = null, + photoFile: File? = null, + photoBytes: ByteArray? = null +) : AbstractMultipartRequest( + 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() + } + + 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 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..781d6006 --- /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 +) : AbstractSendRequest( + 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/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..b0a933c4 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendSticker.kt @@ -0,0 +1,97 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +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() + } + + var emoji: String? by optionalRequestParameter() + + fun emoji(emoji: String) = applySelf { this.emoji = emoji } + +} \ No newline at end of file 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..748103da --- /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 +) : AbstractSendRequest( + 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/request/SendVideo.kt b/library/src/main/java/com/pengrad/telegrambot/request/SendVideo.kt index d29499a0..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 @@ -12,7 +13,7 @@ class SendVideo private constructor( videoUrl: String? = null, videoFile: File? = null, videoBytes: ByteArray? = null -) : KAbstractMultipartRequest( +) : AbstractThumbnailedMultipartRequest( chatId = chatId, channelUsername = channelUsername, @@ -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.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..28862020 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVideoNote.kt @@ -0,0 +1,100 @@ +package com.pengrad.telegrambot.request + +import com.pengrad.telegrambot.utility.kotlin.checkDeprecatedConstructorParameters +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() + } + + 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 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..44fd60f4 --- /dev/null +++ b/library/src/main/java/com/pengrad/telegrambot/request/SendVoice.kt @@ -0,0 +1,110 @@ +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 + +class SendVoice private constructor( + chatId: Long? = null, + channelUsername: String? = null, + + voiceUrl: String? = null, + voiceFile: File? = null, + voiceBytes: ByteArray? = null +) : AbstractMultipartRequest( + 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() + } + + 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 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..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,6 +2,15 @@ package com.pengrad.telegrambot.utility.kotlin +import com.pengrad.telegrambot.request.AbstractSendRequest + 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 AbstractSendRequest<*>.checkDeprecatedConstructorParameters() { + if (this.chatId == null && this.channelUsername == null) { + throw IllegalArgumentException("chatId parameter must be either Long or String") + } +} \ No newline at end of file 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/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 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 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/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 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 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 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 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/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 +) + 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/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 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