added `botCommand` text source factory function supporting `BotCommand`

This commit is contained in:
d1snin 2022-10-13 19:56:26 +03:00
parent 0c9919e9e7
commit 7488eb9d4b
No known key found for this signature in database
GPG Key ID: 2B2D54531207CA16
1 changed files with 8 additions and 4 deletions

View File

@ -1,7 +1,8 @@
package dev.inmo.tgbotapi.types.message.textsources
import dev.inmo.tgbotapi.types.usernameRegex
import dev.inmo.tgbotapi.types.BotCommand
import dev.inmo.tgbotapi.types.Username
import dev.inmo.tgbotapi.types.usernameRegex
import dev.inmo.tgbotapi.utils.RiskFeature
import dev.inmo.tgbotapi.utils.internal.*
import kotlinx.serialization.Serializable
@ -12,14 +13,14 @@ private val commandRegex = Regex("[/!][^@\\s]*")
* @see botCommand
*/
@Serializable
data class BotCommandTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor (
data class BotCommandTextSource @RiskFeature(DirectInvocationOfTextSourceConstructor) constructor(
override val source: String
) : TextSource {
val command: String by lazy {
commandRegex.find(source) ?.value ?.substring(1) ?: source.substring(1)// skip first symbol like "/" or "!"
commandRegex.find(source)?.value?.substring(1) ?: source.substring(1)// skip first symbol like "/" or "!"
}
val username: Username? by lazy {
Username(usernameRegex.find(source) ?.value ?: return@lazy null)
Username(usernameRegex.find(source)?.value ?: return@lazy null)
}
override val markdown: String by lazy { source.commandMarkdown() }
@ -32,3 +33,6 @@ data class BotCommandTextSource @RiskFeature(DirectInvocationOfTextSourceConstru
*/
@Suppress("NOTHING_TO_INLINE")
inline fun botCommand(command: String) = BotCommandTextSource("/$command")
@Suppress("NOTHING_TO_INLINE")
inline fun botCommand(botCommand: BotCommand) = botCommand(botCommand.command)