From c3fca5c6c47a4d1843ba93b13d3eada8be22c2ab Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 30 Mar 2020 21:30:22 +0600 Subject: [PATCH] include dice in TelegramBotAPI --- CHANGELOG.md | 5 +++ .../TelegramBotAPI/requests/send/SendDice.kt | 34 +++++++++++++++++++ .../TelegramBotAPI/types/Common.kt | 4 +++ .../TelegramBotAPI/types/Dice.kt | 10 ++++++ .../types/message/RawMessage.kt | 2 ++ .../types/message/content/DiceContent.kt | 20 +++++++++++ 6 files changed, 75 insertions(+) create mode 100644 TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendDice.kt create mode 100644 TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Dice.kt create mode 100644 TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/DiceContent.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e32db9d5e..7ba140caa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,11 @@ ### 0.25.2 +* `TelegramBotAPI`: + * Request `SendDice` was added (calling [sendDice](https://core.telegram.org/bots/api#senddice)) + * Class `Dice` was added (type [dice](https://core.telegram.org/bots/api#dice)) + * Class `DiceContent` was added (for including it in [message](https://core.telegram.org/bots/api#message) object) + ### 0.25.1 * Update kotlin: `1.3.70` -> `1.3.71` diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendDice.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendDice.kt new file mode 100644 index 0000000000..a6537de89d --- /dev/null +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendDice.kt @@ -0,0 +1,34 @@ +package com.github.insanusmokrassar.TelegramBotAPI.requests.send + +import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.DisableNotification +import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMessageId +import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.ReplyingMarkupSendMessageRequest +import com.github.insanusmokrassar.TelegramBotAPI.types.* +import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.DiceContent +import kotlinx.serialization.* + +internal val DiceContentMessageResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + +@Serializable +data class SendDice( + @SerialName(chatIdField) + override val chatId: ChatIdentifier, + @SerialName(disableNotificationField) + override val disableNotification: Boolean = false, + @SerialName(replyToMessageIdField) + override val replyToMessageId: MessageIdentifier? = null, + @SerialName(replyMarkupField) + override val replyMarkup: KeyboardMarkup? = null +) : ReplyingMarkupSendMessageRequest>, ReplyMessageId, DisableNotification { + override val requestSerializer: SerializationStrategy<*> + get() = serializer() + + override fun method(): String = "sendDice" + + override val resultDeserializer: DeserializationStrategy> + get() = DiceContentMessageResultDeserializer +} \ No newline at end of file diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt index f460b7b9e8..0f0c9647bd 100644 --- a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt @@ -19,6 +19,7 @@ typealias InlineMessageIdentifier = String typealias PollIdentifier = String typealias StickerSetName = String typealias FileUniqueId = String +typealias DiceResult = Int typealias Seconds = Int @@ -45,6 +46,8 @@ val inlineQueryAnswerResultsLimit = 0 .. 50 val customTitleLength = 0 .. 16 +val diceResultLimit = 1 .. 6 + const val chatIdField = "chat_id" const val messageIdField = "message_id" const val updateIdField = "update_id" @@ -230,6 +233,7 @@ const val optionsField = "options" const val payField = "pay" const val permissionsField = "permissions" const val typeField = "type" +const val valueField = "value" const val pointField = "point" const val xShiftField = "x_shift" diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Dice.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Dice.kt new file mode 100644 index 0000000000..00dd3f28ca --- /dev/null +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Dice.kt @@ -0,0 +1,10 @@ +package com.github.insanusmokrassar.TelegramBotAPI.types + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class Dice( + @SerialName(valueField) + val value: DiceResult +) diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt index 8e4ff44663..99a0fa25bb 100644 --- a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt @@ -74,6 +74,7 @@ internal data class RawMessage( private val migrate_from_chat_id: ChatIdentifier? = null, private val pinned_message: RawMessage? = null, private val invoice: Invoice? = null, + private val dice: Dice? = null, private val successful_payment: SuccessfulPayment? = null, // login property @@ -123,6 +124,7 @@ internal data class RawMessage( adaptedCaptionEntities ) sticker != null -> StickerContent(sticker) + dice != null -> DiceContent(dice) game != null -> GameContent(game.asGame) video_note != null -> VideoNoteContent(video_note) contact != null -> ContactContent(contact) diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/DiceContent.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/DiceContent.kt new file mode 100644 index 0000000000..94446bd65b --- /dev/null +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/DiceContent.kt @@ -0,0 +1,20 @@ +package com.github.insanusmokrassar.TelegramBotAPI.types.message.content + +import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request +import com.github.insanusmokrassar.TelegramBotAPI.types.* +import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent + +data class DiceContent( + val dice: Dice +) : MessageContent { + override fun createResend( + chatId: ChatIdentifier, + disableNotification: Boolean, + replyToMessageId: MessageIdentifier?, + replyMarkup: KeyboardMarkup? + ): Request> { + TODO("Not yet implemented") + } +}