Add `hasCommands` / `hasNoCommands` extensions on `CommonMessage`

These extensions are meant to be used as arguments to the `initialFilter` parameter in behaviour builder triggers.
This commit is contained in:
madhead 2022-10-24 03:42:11 +02:00
parent d9846f27c9
commit 86cc7cfb3d
No known key found for this signature in database
GPG Key ID: ACED25F067D0F238
2 changed files with 47 additions and 0 deletions

View File

@ -1,5 +1,10 @@
# TelegramBotAPI changelog
## 3.4.0
* `Utils`:
* New extensions on `CommonMessage`: `hasCommands` and `hasNoCommands`. Useful for the `initialFilter` parameter in behaviour builder triggers.
## 3.3.0
**THIS VERSION CONTAINS UPGRADE KOTLIN (AND ALL RELATED LIBRARIES) UP TO 1.7.20**

View File

@ -0,0 +1,42 @@
package dev.inmo.tgbotapi.extensions.utils.updates
import dev.inmo.tgbotapi.extensions.utils.botCommandTextSourceOrNull
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
import dev.inmo.tgbotapi.types.message.content.TextContent
/**
* A predicate to test whether a message contains any commands in its body.
* Use it as the `initialFilter` parameter in behaviour builder triggers.
* E.g.
*
* ```kotlin
* onContentMessage(
* initialFilter = CommonMessage<MessageContent>::hasCommands
* ) {
* // the message contains at least one command here
* }
* ```
*
* @return true if this [CommonMessage] contains any commands. False otherwise.
* @see hasNoCommands
*/
fun CommonMessage<*>.hasCommands(): Boolean =
(this.content as? TextContent)?.textSources?.any { it.botCommandTextSourceOrNull() != null } ?: false
/**
* A predicate to test whether a message contains any commands in its body.
* Use it as the `initialFilter` parameter in behaviour builder triggers.
* E.g.
*
* ```kotlin
* onContentMessage(
* initialFilter = CommonMessage<MessageContent>::hasNoCommands
* ) {
* // the message contains no commands here
* }
* ```
*
* @return true if this [CommonMessage] does not contain any commands. False otherwise.
* @see hasCommands
*/
fun CommonMessage<*>.hasNoCommands(): Boolean = !this.hasCommands()