From 63e0f5c054350ec85b666d03ad70032f5254d54d Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 20 Jan 2020 14:42:38 +0600 Subject: [PATCH 1/5] 0.22.1 --- CHANGELOG.md | 4 ++++ build.gradle | 2 +- .../message/content/abstracts/MediaContent.kt | 2 ++ .../message/content/media/AnimationContent.kt | 17 +++++++++++++++-- .../types/message/content/media/AudioContent.kt | 14 ++++++++++++++ .../message/content/media/DocumentContent.kt | 11 +++++++++++ .../types/message/content/media/PhotoContent.kt | 11 +++++++++-- .../message/content/media/StickerContent.kt | 8 ++++++++ .../types/message/content/media/VideoContent.kt | 15 +++++++++++++-- .../message/content/media/VideoNoteContent.kt | 10 ++++++++++ .../types/message/content/media/VoiceContent.kt | 11 +++++++++++ 11 files changed, 98 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb378514ff..841d33b4b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,10 @@ mistake - don't hesitate to say this.** * Version updates: * Ktor `1.2.6` -> `1.3.0` +### 0.22.1 MediaContent#asInputMedia + +* All `MediaContent` instances now can create their `InputMedia` analog + ## 0.21.0 TelegramBotAPI 4.5 * _**All `MessageEntity`'es now are replaced with `TextPart`**_ diff --git a/build.gradle b/build.gradle index bd7757769b..477d57c158 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ plugins { id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version" } -project.version = "0.22.0" +project.version = "0.22.1" project.group = "com.github.insanusmokrassar" apply from: "publish.gradle" diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/MediaContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/MediaContent.kt index 9248dc721a..d163813030 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/MediaContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/MediaContent.kt @@ -1,7 +1,9 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.TelegramMediaFile interface MediaContent: MessageContent { val media: TelegramMediaFile + fun asInputMedia(): InputMedia } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt index 007157e500..6c67d897a3 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt @@ -5,8 +5,10 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendAnimation import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMediaAnimation import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier -import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode +import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.AnimationFile import com.github.insanusmokrassar.TelegramBotAPI.types.files.DocumentFile @@ -14,6 +16,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Conten import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions +import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownV2Captions data class AnimationContent( override val media: AnimationFile, @@ -39,4 +42,14 @@ data class AnimationContent( replyToMessageId, replyMarkup ) -} \ No newline at end of file + + override fun asInputMedia(): InputMediaAnimation = InputMediaAnimation( + media.fileId, + toMarkdownV2Captions().first(), + MarkdownV2, + media.width, + media.height, + media.duration, + media.thumb ?.fileId + ) +} diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt index 5a7846cfb0..35e47a691b 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt @@ -5,14 +5,18 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendAudio import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMediaAudio import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode +import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.MarkdownV2 import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.AudioFile import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions +import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownV2Captions data class AudioContent( override val media: AudioFile, @@ -37,4 +41,14 @@ data class AudioContent( replyToMessageId, replyMarkup ) + + override fun asInputMedia(): InputMediaAudio = InputMediaAudio( + media.fileId, + toMarkdownV2Captions().first(), + MarkdownV2, + media.duration, + media.performer, + media.title, + media.thumb ?.fileId + ) } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt index b1f4ed37ce..2b7b196828 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt @@ -5,14 +5,18 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendDocument import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMediaDocument import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode +import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.MarkdownV2 import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.DocumentFile import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions +import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownV2Captions data class DocumentContent( override val media: DocumentFile, @@ -34,4 +38,11 @@ data class DocumentContent( replyToMessageId, replyMarkup ) + + override fun asInputMedia(): InputMediaDocument = InputMediaDocument( + media.fileId, + toMarkdownV2Captions().first(), + MarkdownV2, + media.thumb ?.fileId + ) } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt index be200dc210..c8cbd20969 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt @@ -4,10 +4,10 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendPhoto import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier -import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMediaPhoto -import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.MediaGroupMemberInputMedia +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.* import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode +import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.MarkdownV2 import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.PhotoSize import com.github.insanusmokrassar.TelegramBotAPI.types.files.biggest @@ -16,6 +16,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Messag import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaCollectionContent import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaGroupContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions +import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownV2Captions data class PhotoContent( override val mediaCollection: List, @@ -44,4 +45,10 @@ data class PhotoContent( toHtmlCaptions().firstOrNull(), HTMLParseMode ) + + override fun asInputMedia(): InputMediaPhoto = InputMediaPhoto( + media.fileId, + toMarkdownV2Captions().first(), + MarkdownV2 + ) } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt index 5932235d01..48dca1b404 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt @@ -3,12 +3,14 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendSticker import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMediaDocument import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.Sticker import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent +import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownV2Captions data class StickerContent( override val media: Sticker @@ -25,4 +27,10 @@ data class StickerContent( replyToMessageId, replyMarkup ) + + override fun asInputMedia(): InputMediaDocument = InputMediaDocument( + media.fileId, + null, + thumb = media.thumb ?.fileId + ) } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt index be862e3d80..f7ca32c856 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt @@ -4,16 +4,17 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendVideo import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier -import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMediaVideo -import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.MediaGroupMemberInputMedia +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.* import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode +import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.MarkdownV2 import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.VideoFile import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaGroupContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions +import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownV2Captions data class VideoContent( override val media: VideoFile, @@ -49,4 +50,14 @@ data class VideoContent( media.duration, media.thumb ?.fileId ) + + override fun asInputMedia(): InputMediaVideo = InputMediaVideo( + media.fileId, + toMarkdownV2Captions().first(), + MarkdownV2, + media.width, + media.height, + media.duration, + media.thumb ?.fileId + ) } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt index 6918131b0b..73dfaceba4 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt @@ -3,6 +3,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.message.content.media import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendVideoNote import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMediaVideo import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup @@ -10,6 +11,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.files.VideoNoteFile import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent +import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownV2Captions data class VideoNoteContent( override val media: VideoNoteFile @@ -40,4 +42,12 @@ data class VideoNoteContent( replyToMessageId, replyMarkup ) + + override fun asInputMedia(): InputMediaVideo = InputMediaVideo( + media.fileId, + width = media.width, + height = media.height, + duration = media.duration, + thumb = media.thumb ?.fileId + ) } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt index ec78bf3f32..26b8fa523f 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt @@ -5,14 +5,18 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.TextPart import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendVoice import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia +import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMediaAudio import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode +import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.MarkdownV2 import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.VoiceFile import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions +import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownV2Captions data class VoiceContent( override val media: VoiceFile, @@ -35,4 +39,11 @@ data class VoiceContent( replyToMessageId, replyMarkup ) + + override fun asInputMedia(): InputMediaAudio = InputMediaAudio( + media.fileId, + toMarkdownV2Captions().first(), + MarkdownV2, + media.duration + ) } From 92224b95df62c3612f8764178b8d21b9f64369ab Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 20 Jan 2020 16:35:36 +0600 Subject: [PATCH 2/5] PreviewFeature, message links --- CHANGELOG.md | 6 +++ .../TelegramBotAPI/utils/Annotations.kt | 6 +++ .../TelegramBotAPI/utils/LinksFormatting.kt | 40 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/Annotations.kt create mode 100644 src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 841d33b4b8..ee9812fae7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,12 @@ mistake - don't hesitate to say this.** ### 0.22.1 MediaContent#asInputMedia * All `MediaContent` instances now can create their `InputMedia` analog +* New annotation `PreviewFeature` was added to mark new thing as preview for the time +while they can work incorrectly +* Added links utils: + * `makeLinkToMessage` have two signatures - for direct creating using username and for abstract creating using + chat id + * `makeFileLink` is unsafe way to create file link ## 0.21.0 TelegramBotAPI 4.5 diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/Annotations.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/Annotations.kt new file mode 100644 index 0000000000..c717bd2781 --- /dev/null +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/Annotations.kt @@ -0,0 +1,6 @@ +package com.github.insanusmokrassar.TelegramBotAPI.utils + +import kotlin.Experimental.* + +@Experimental(Level.WARNING) +annotation class PreviewFeature diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt new file mode 100644 index 0000000000..3b62bea1f1 --- /dev/null +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt @@ -0,0 +1,40 @@ +package com.github.insanusmokrassar.TelegramBotAPI.utils + +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatId +import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier +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.* + +private const val internalLinkBeginning = "https://t.me" + +@PreviewFeature +fun makeLinkToMessage( + username: String, + messageId: MessageIdentifier +): String = "$internalLinkBeginning/$username/$messageId" + +private val linkIdRedundantPartRegex = Regex("^-100") + +@PreviewFeature +fun makeLinkToMessage( + chat: ExtendedChat, + messageId: MessageIdentifier +): String? { + return when { + chat is UsernameChat && chat.username != null -> "$internalLinkBeginning/${chat.username}/$messageId" + chat !is PrivateChat -> chat.id.chatId.toString().replace( + linkIdRedundantPartRegex, + "" + ).let { bareId -> + "$internalLinkBeginning/c/$bareId/$messageId" + } + else -> return null + } +} + +@PreviewFeature +fun makeFileLink( + botToken: String, + filePath: String +) = "https://api.telegram.org/file/bot$botToken/$filePath" From d330cd2bfc2e9515bb072d51ed3078d4e6c7856f Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 20 Jan 2020 20:14:52 +0600 Subject: [PATCH 3/5] hotfix --- .../insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt index 3b62bea1f1..9b8825ca0e 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt @@ -22,7 +22,7 @@ fun makeLinkToMessage( messageId: MessageIdentifier ): String? { return when { - chat is UsernameChat && chat.username != null -> "$internalLinkBeginning/${chat.username}/$messageId" + chat is UsernameChat && chat.username != null -> "$internalLinkBeginning/${chat.username ?.username}/$messageId" chat !is PrivateChat -> chat.id.chatId.toString().replace( linkIdRedundantPartRegex, "" From f99873dd70f6f0c9e0ba3042179a490dc3c59bdc Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 20 Jan 2020 22:10:46 +0600 Subject: [PATCH 4/5] hotfix --- .../insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt index 9b8825ca0e..d031cc25f4 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt @@ -15,6 +15,7 @@ fun makeLinkToMessage( ): String = "$internalLinkBeginning/$username/$messageId" private val linkIdRedundantPartRegex = Regex("^-100") +private val usernameBeginSymbolRegex = Regex("^@") @PreviewFeature fun makeLinkToMessage( @@ -22,7 +23,9 @@ fun makeLinkToMessage( messageId: MessageIdentifier ): String? { return when { - chat is UsernameChat && chat.username != null -> "$internalLinkBeginning/${chat.username ?.username}/$messageId" + chat is UsernameChat && chat.username != null -> { + "$internalLinkBeginning/${chat.username ?.username ?.replace(usernameBeginSymbolRegex, "")}/$messageId" + } chat !is PrivateChat -> chat.id.chatId.toString().replace( linkIdRedundantPartRegex, "" From 5f593439a3b05538eab286ae588eb6b826ef32ab Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 20 Jan 2020 22:38:45 +0600 Subject: [PATCH 5/5] remove file link maker --- CHANGELOG.md | 1 - .../TelegramBotAPI/utils/LinksFormatting.kt | 7 ------- 2 files changed, 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee9812fae7..c6560409fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,7 +76,6 @@ while they can work incorrectly * Added links utils: * `makeLinkToMessage` have two signatures - for direct creating using username and for abstract creating using chat id - * `makeFileLink` is unsafe way to create file link ## 0.21.0 TelegramBotAPI 4.5 diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt index d031cc25f4..23c0407436 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/LinksFormatting.kt @@ -1,6 +1,5 @@ package com.github.insanusmokrassar.TelegramBotAPI.utils -import com.github.insanusmokrassar.TelegramBotAPI.types.ChatId import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.PrivateChat import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.UsernameChat @@ -35,9 +34,3 @@ fun makeLinkToMessage( else -> return null } } - -@PreviewFeature -fun makeFileLink( - botToken: String, - filePath: String -) = "https://api.telegram.org/file/bot$botToken/$filePath"