40 lines
1.2 KiB
Kotlin
40 lines
1.2 KiB
Kotlin
package dev.inmo.configurable_inline_telegram_bot.models
|
|
|
|
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputTextMessageContent
|
|
import dev.inmo.tgbotapi.types.ParseMode.MarkdownV2
|
|
import kotlinx.serialization.Serializable
|
|
import kotlinx.serialization.Transient
|
|
|
|
@Serializable
|
|
data class Format(
|
|
val template: String,
|
|
val regexTemplate: String = "^$",
|
|
val splitBy: String? = null,
|
|
val enableMarkdownSupport: Boolean = false
|
|
) {
|
|
@Transient
|
|
val queryRegex = Regex(regexTemplate, RegexOption.DOT_MATCHES_ALL)
|
|
|
|
init {
|
|
println(queryRegex)
|
|
}
|
|
|
|
fun formatByRegex(with: String): String? {
|
|
return if (queryRegex.matches(with)) {
|
|
template.format(*(splitBy ?.let { with.split(it).toTypedArray() } ?: arrayOf(with)))
|
|
} else {
|
|
null
|
|
}
|
|
}
|
|
|
|
fun createContent(with: String): InputTextMessageContent? {
|
|
return if (queryRegex.matches(with)) {
|
|
InputTextMessageContent(
|
|
template.format(*(splitBy ?.let { with.split(it).toTypedArray() } ?: arrayOf(with))),
|
|
if (enableMarkdownSupport) MarkdownV2 else null
|
|
)
|
|
} else {
|
|
null
|
|
}
|
|
}
|
|
} |