1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-11-22 08:13:47 +00:00

signature change in filterCommandsWithArgs

This commit is contained in:
InsanusMokrassar 2020-09-13 23:58:09 +06:00
parent 3fa3aa50d9
commit 314ceed78e
3 changed files with 10 additions and 4 deletions

View File

@ -60,6 +60,8 @@
* `filterExactCommands` * `filterExactCommands`
* `filterCommandsInsideTextMessages` * `filterCommandsInsideTextMessages`
* `filterCommandsWithArgs` * `filterCommandsWithArgs`
* Extension `Flow<BaseSentMessageUpdate>.filterCommandsWithArgs` has changed its signature: now it will also have
original message paired with list of text sources
## 0.27.0 ## 0.27.0

View File

@ -59,7 +59,8 @@ fun <T : ContentMessage<TextContent>> Flow<T>.filterCommandsInsideTextMessages(
* [RegularTextSource] will be split by " " for several [RegularTextSource] which will contains not empty args without * [RegularTextSource] will be split by " " for several [RegularTextSource] which will contains not empty args without
* spaces. * spaces.
* *
* @return Converted list with first entity [BotCommandTextSource] and than all others according to rules in description * @return Paired original message and converted list with first entity [BotCommandTextSource] and than all others
* according to rules in description
* *
* @see fullEntitiesList * @see fullEntitiesList
* @see asContentMessagesFlow * @see asContentMessagesFlow
@ -72,7 +73,7 @@ fun <T : ContentMessage<TextContent>> Flow<T>.filterCommandsWithArgs(
val allEntities = contentMessage.content.fullEntitiesList() val allEntities = contentMessage.content.fullEntitiesList()
(allEntities.firstOrNull() as? BotCommandTextSource) ?.let { (allEntities.firstOrNull() as? BotCommandTextSource) ?.let {
if (commandRegex.matches(it.command)) { if (commandRegex.matches(it.command)) {
allEntities.flatMap { contentMessage to allEntities.flatMap {
when (it) { when (it) {
is RegularTextSource -> it.source.split(" ").mapNotNull { regularTextSourcePart -> is RegularTextSource -> it.source.split(" ").mapNotNull { regularTextSourcePart ->
if (regularTextSourcePart.isNotBlank()) { if (regularTextSourcePart.isNotBlank()) {

View File

@ -5,6 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.extensions.utils.onlyTextConte
import com.github.insanusmokrassar.TelegramBotAPI.extensions.utils.shortcuts.* import com.github.insanusmokrassar.TelegramBotAPI.extensions.utils.shortcuts.*
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.BotCommandTextSource import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.BotCommandTextSource
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.RegularTextSource import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.RegularTextSource
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.fullEntitiesList import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.fullEntitiesList
import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.BaseSentMessageUpdate import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.BaseSentMessageUpdate
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.*
@ -50,7 +52,8 @@ fun <T : BaseSentMessageUpdate> Flow<T>.filterCommandsInsideTextMessages(
* [RegularTextSource] will be split by " " for several [RegularTextSource] which will contains not empty args without * [RegularTextSource] will be split by " " for several [RegularTextSource] which will contains not empty args without
* spaces. * spaces.
* *
* @return Converted list with first entity [BotCommandTextSource] and than all others according to rules in description * @return Paired original message and converted list with first entity [BotCommandTextSource] and than all others
* according to rules in description
* *
* @see fullEntitiesList * @see fullEntitiesList
* @see asContentMessagesFlow * @see asContentMessagesFlow
@ -58,4 +61,4 @@ fun <T : BaseSentMessageUpdate> Flow<T>.filterCommandsInsideTextMessages(
*/ */
fun <T : BaseSentMessageUpdate> Flow<T>.filterCommandsWithArgs( fun <T : BaseSentMessageUpdate> Flow<T>.filterCommandsWithArgs(
commandRegex: Regex commandRegex: Regex
): Flow<List<TextSource>> = textMessages().filterCommandsWithArgs(commandRegex) ): Flow<Pair<ContentMessage<TextContent>, List<TextSource>>> = textMessages().filterCommandsWithArgs(commandRegex)