add forumMessage/notForumMessage extensions

This commit is contained in:
InsanusMokrassar 2022-11-08 22:11:44 +06:00
parent c4fdc350ce
commit 7d7658c64f
1 changed files with 38 additions and 0 deletions

View File

@ -2,8 +2,10 @@ package dev.inmo.tgbotapi.extensions.utils.updates
import dev.inmo.tgbotapi.extensions.utils.*
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
import dev.inmo.tgbotapi.types.message.abstracts.Message
import dev.inmo.tgbotapi.types.message.content.TextContent
import dev.inmo.tgbotapi.types.message.textsources.BotCommandTextSource
import dev.inmo.tgbotapi.utils.extensions.threadIdOrNull
/**
* A predicate to test whether a message contains any commands in its body.
@ -42,3 +44,39 @@ fun CommonMessage<*>.hasCommands(): Boolean = withContentOrNull<TextContent>() ?
* @see hasCommands
*/
fun CommonMessage<*>.hasNoCommands(): Boolean = !this.hasCommands()
/**
* A predicate to test that message has been sent in the forum.
* Use it as the `initialFilter` parameter in behaviour builder triggers.
* E.g.
*
* ```kotlin
* onContentMessage(
* initialFilter = Message::forumMessage
* ) {
* // The message here will be from forum
* }
* ```
*
* @return true if this [Message] is from forum ([threadIdOrNull] is not null). False otherwise.
* @see notForumMessage
*/
fun Message.forumMessage(): Boolean = threadIdOrNull != null
/**
* A predicate to test that message has not been sent in the forum.
* Use it as the `initialFilter` parameter in behaviour builder triggers.
* E.g.
*
* ```kotlin
* onContentMessage(
* initialFilter = Message::notForumMessage
* ) {
* // The message here will not be from forum
* }
* ```
*
* @return true if this [Message] is not from forum ([threadIdOrNull] is not null). False otherwise.
* @see forumMessage
*/
fun Message.notForumMessage(): Boolean = !forumMessage()