From 16f55d70af17329e54dfb0036718821bd93a20f4 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 2 Jun 2020 13:15:22 +0600 Subject: [PATCH] resend and other media group utils replaced into TelegramBotAPI_extensions-utils --- CHANGELOG.md | 18 ++++-- .../utils/shortcuts/MediaGroupsShortcuts.kt | 56 +++++++++++++++++++ .../TelegramBotAPI/utils/MediaGroupList.kt | 4 ++ 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/shortcuts/MediaGroupsShortcuts.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 3721a395d7..7cd06aa56e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,14 +58,24 @@ * Fix: for sending requests caption and text lengths limits were updated * New variant of `row` was added * `makeLinkToMessage` extensions has been deprecated (replaced into `TelegramBotAPI-extensions-utils`) - * All `String` formatting public extensions and functions was deprecated and replaced into `TelegramBotAPI-extensions-utils` - * All extensions like `CaptionedInput#toHtmlCaptions` was deprecated and replaced into `TelegramBotAPI-extensions-utils` + * Next things was deprecated and replaced into `TelegramBotAPI-extensions-utils`: + * All `String` formatting public extensions and functions + * All extensions like `CaptionedInput#toHtmlCaptions` + * All helper extensions for `List` * `TelegramBotAPI-extensions-utils`: * `safely` function was introduced. It is in `PreviewFeature` state currently * `makeLinkToMessage` extensions has been added * `makeLinkToAddStickerSet` function and its variations were added - * All `String` formatting extensions and functions from `TelegramBotAPI` was added - * All extensions like `CaptionedInput#toHtmlCaptions` from `TelegramBotAPI` was added + * Next tools was added from `TelegramBotAPI`: + * All `String` formatting extensions and functions + * All extensions like `CaptionedInput#toHtmlCaptions` + * All helper extensions for `List` + * Several new extensions for `SentMediaGroupUpdate` were added: + * `SentMediaGroupUpdate#forwardInfo` + * `SentMediaGroupUpdate#replyTo` + * `SentMediaGroupUpdate#chat` + * `SentMediaGroupUpdate#mediaGroupId` + * Several `List.createResend` extensions were added ### 0.27.4 diff --git a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/shortcuts/MediaGroupsShortcuts.kt b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/shortcuts/MediaGroupsShortcuts.kt new file mode 100644 index 0000000000..cf2b0e0db0 --- /dev/null +++ b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/shortcuts/MediaGroupsShortcuts.kt @@ -0,0 +1,56 @@ +package com.github.insanusmokrassar.TelegramBotAPI.extensions.utils.shortcuts + +import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendMediaGroup +import com.github.insanusmokrassar.TelegramBotAPI.types.* +import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.Chat +import com.github.insanusmokrassar.TelegramBotAPI.types.message.ForwardInfo +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* +import com.github.insanusmokrassar.TelegramBotAPI.types.update.MediaGroupUpdates.SentMediaGroupUpdate + +val List.forwardInfo: ForwardInfo? + get() = firstOrNull() ?.forwardInfo +val List.replyTo: Message? + get() = firstOrNull() ?.replyTo +val List.chat: Chat? + get() = firstOrNull() ?.chat +val List.mediaGroupId: MediaGroupIdentifier? + get() = firstOrNull() ?.mediaGroupId + +val SentMediaGroupUpdate.forwardInfo: ForwardInfo? + get() = data.forwardInfo!! +val SentMediaGroupUpdate.replyTo: Message? + get() = data.replyTo +val SentMediaGroupUpdate.chat: Chat + get() = data.chat!! +val SentMediaGroupUpdate.mediaGroupId: MediaGroupIdentifier + get() = data.mediaGroupId!! + +fun List.createResend( + chatId: ChatId, + disableNotification: Boolean = false, + replyTo: MessageIdentifier? = null +) = SendMediaGroup( + chatId, + map { it.content.toMediaGroupMemberInputMedia() }, + disableNotification, + replyTo +) + +fun List.createResend( + chat: Chat, + disableNotification: Boolean = false, + replyTo: MessageIdentifier? = null +) = createResend( + chat.id, + disableNotification, + replyTo +) + +fun SentMediaGroupUpdate.createResend( + disableNotification: Boolean = false, + replyTo: MessageIdentifier? = null +) = data.createResend( + chat, + disableNotification, + replyTo +) diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/MediaGroupList.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/MediaGroupList.kt index bdfd2313ce..fef1514452 100644 --- a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/MediaGroupList.kt +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/MediaGroupList.kt @@ -6,18 +6,22 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.message.ForwardInfo import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.BaseMessageUpdate +@Deprecated("Replaced and updated inside of TelegramBotAPI-extensions-utils") val List.forwarded: ForwardInfo? get() = first().let { (it as? PossiblyForwardedMessage) ?.forwardInfo } +@Deprecated("Replaced and updated inside of TelegramBotAPI-extensions-utils") val List.replyTo: Message? get() = first().let { (it as? PossiblyReplyMessage) ?.replyTo } +@Deprecated("Replaced and updated inside of TelegramBotAPI-extensions-utils") val List.chat: Chat? get() = first().data.chat +@Deprecated("Replaced and updated inside of TelegramBotAPI-extensions-utils") val List.mediaGroupId: MediaGroupIdentifier? get() = (first().data as? MediaGroupMessage) ?.mediaGroupId