From 648f1b488b7e443fa41fcc5ec939a13424e4f178 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 2 Jun 2020 01:15:08 +0600 Subject: [PATCH] add makeLinkToAddStickerSet --- CHANGELOG.md | 3 + .../extensions/utils/LinksFormatting.kt | 76 +++++++++++++++++++ .../TelegramBotAPI/utils/LinksFormatting.kt | 2 + 3 files changed, 81 insertions(+) create mode 100644 TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/LinksFormatting.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 713650d589..854d749409 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,8 +57,11 @@ * `TelegramotAPI`: * 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`) * `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 ### 0.27.4 diff --git a/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/LinksFormatting.kt b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/LinksFormatting.kt new file mode 100644 index 0000000000..cca7c6c25d --- /dev/null +++ b/TelegramBotAPI-extensions-utils/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/utils/LinksFormatting.kt @@ -0,0 +1,76 @@ +package com.github.insanusmokrassar.TelegramBotAPI.extensions.utils + +import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier +import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.* +import com.github.insanusmokrassar.TelegramBotAPI.types.StickerSetName +import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.PrivateChat +import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.UsernameChat +import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedChat +import com.github.insanusmokrassar.TelegramBotAPI.utils.link + +private const val internalLinkBeginning = "https://t.me" + +fun makeLinkToMessage( + username: String, + messageId: MessageIdentifier +): String = "$internalLinkBeginning/$username/$messageId" + +private val linkIdRedundantPartRegex = Regex("^-100") +private val usernameBeginSymbolRegex = Regex("^@") + +fun makeLinkToMessage( + chat: ExtendedChat, + messageId: MessageIdentifier +): String? { + return when { + chat is UsernameChat && chat.username != null -> { + "$internalLinkBeginning/${chat.username ?.username ?.replace(usernameBeginSymbolRegex, "")}/$messageId" + } + chat !is PrivateChat -> chat.id.chatId.toString().replace( + linkIdRedundantPartRegex, + "" + ).let { bareId -> + "$internalLinkBeginning/c/$bareId/$messageId" + } + else -> return null + } +} + +private const val stickerSetAddingLinkPrefix = "$internalLinkBeginning/addstickers" + +/** + * Create a link for adding of sticker set with name [stickerSetName]. Was added thanks to user Djaler and based on + * https://github.com/Djaler/evil-bot/blob/master/src/main/kotlin/com/github/djaler/evilbot/utils/StickerUtils.kt#L6-L8 + * + * @see [makeLinkToAddStickerSetInMarkdownV2] + * @see [makeLinkToAddStickerSetInMarkdown] + * @see [makeLinkToAddStickerSetInHtml] + */ +fun makeLinkToAddStickerSet( + stickerSetName: StickerSetName, + parseMode: ParseMode +) = (stickerSetName to "$stickerSetAddingLinkPrefix/$stickerSetName").link( + parseMode +) + +/** + * @return Link for adding of sticker set with name [stickerSetName] with formatting for [MarkdownV2] + */ +fun makeLinkToAddStickerSetInMarkdownV2(stickerSetName: StickerSetName) = makeLinkToAddStickerSet( + stickerSetName, + MarkdownV2 +) +/** + * @return Link for adding of sticker set with name [stickerSetName] with formatting for [Markdown] + */ +fun makeLinkToAddStickerSetInMarkdown(stickerSetName: StickerSetName) = makeLinkToAddStickerSet( + stickerSetName, + Markdown +) +/** + * @return Link for adding of sticker set with name [stickerSetName] with formatting for [HTML] + */ +fun makeLinkToAddStickerSetInHtml(stickerSetName: StickerSetName) = makeLinkToAddStickerSet( + stickerSetName, + HTML +) diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt index 29523ab7ea..9bacaf0dc4 100644 --- a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt @@ -7,6 +7,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended. private const val internalLinkBeginning = "https://t.me" +@Deprecated("Replaced into TelegramBotAPI-extensions-utils project") fun makeLinkToMessage( username: String, messageId: MessageIdentifier @@ -15,6 +16,7 @@ fun makeLinkToMessage( private val linkIdRedundantPartRegex = Regex("^-100") private val usernameBeginSymbolRegex = Regex("^@") +@Deprecated("Replaced into TelegramBotAPI-extensions-utils project") fun makeLinkToMessage( chat: ExtendedChat, messageId: MessageIdentifier