PreviewFeature, message links

This commit is contained in:
InsanusMokrassar 2020-01-20 16:35:36 +06:00
parent 63e0f5c054
commit 92224b95df
3 changed files with 52 additions and 0 deletions

View File

@ -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

View File

@ -0,0 +1,6 @@
package com.github.insanusmokrassar.TelegramBotAPI.utils
import kotlin.Experimental.*
@Experimental(Level.WARNING)
annotation class PreviewFeature

View File

@ -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"