mirror of
				https://github.com/InsanusMokrassar/TelegramBotAPI.git
				synced 2025-10-25 17:20:07 +00:00 
			
		
		
		
	Merge pull request #664 from d1snin/bot-command
added `EntitiesBuilder.botCommand` and `EntitiesBuilder.botCommandln`…
This commit is contained in:
		| @@ -12,6 +12,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.marker_factories.Mar | ||||
| import dev.inmo.tgbotapi.extensions.behaviour_builder.utils.times | ||||
| import dev.inmo.tgbotapi.extensions.utils.botCommandTextSourceOrNull | ||||
| import dev.inmo.tgbotapi.extensions.utils.extensions.parseCommandsWithParams | ||||
| import dev.inmo.tgbotapi.types.BotCommand | ||||
| import dev.inmo.tgbotapi.types.message.content.TextContent | ||||
| import dev.inmo.tgbotapi.types.message.content.TextMessage | ||||
| import dev.inmo.tgbotapi.types.update.abstracts.Update | ||||
| @@ -82,6 +83,15 @@ suspend fun <BC : BehaviourContext> BC.command( | ||||
|     scenarioReceiver: CustomBehaviourContextAndTypeReceiver<BC, Unit, TextMessage> | ||||
| ) = command(command.toRegex(), requireOnlyCommandInMessage, initialFilter, subcontextUpdatesFilter, markerFactory, scenarioReceiver) | ||||
|  | ||||
| suspend fun <BC : BehaviourContext> BC.command( | ||||
|     botCommand: BotCommand, | ||||
|     requireOnlyCommandInMessage: Boolean = true, | ||||
|     initialFilter: CommonMessageFilter<TextContent>? = CommonMessageFilterExcludeMediaGroups, | ||||
|     subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver<BC, Boolean, TextMessage, Update> = MessageFilterByChat, | ||||
|     markerFactory: MarkerFactory<in TextMessage, Any> = ByChatMessageMarkerFactory, | ||||
|     scenarioReceiver: CustomBehaviourContextAndTypeReceiver<BC, Unit, TextMessage> | ||||
| ) = command(botCommand.command, requireOnlyCommandInMessage, initialFilter, subcontextUpdatesFilter, markerFactory, scenarioReceiver) | ||||
|  | ||||
| suspend fun <BC : BehaviourContext> BC.onCommand( | ||||
|     commandRegex: Regex, | ||||
|     requireOnlyCommandInMessage: Boolean = true, | ||||
| @@ -100,6 +110,15 @@ suspend fun <BC : BehaviourContext> BC.onCommand( | ||||
|     scenarioReceiver: CustomBehaviourContextAndTypeReceiver<BC, Unit, TextMessage> | ||||
| ): Job = onCommand(command.toRegex(), requireOnlyCommandInMessage, initialFilter, subcontextUpdatesFilter, markerFactory, scenarioReceiver) | ||||
|  | ||||
| suspend fun <BC : BehaviourContext> BC.onCommand( | ||||
|     botCommand: BotCommand, | ||||
|     requireOnlyCommandInMessage: Boolean = true, | ||||
|     initialFilter: CommonMessageFilter<TextContent>? = CommonMessageFilterExcludeMediaGroups, | ||||
|     subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver<BC, Boolean, TextMessage, Update> = MessageFilterByChat, | ||||
|     markerFactory: MarkerFactory<in TextMessage, Any> = ByChatMessageMarkerFactory, | ||||
|     scenarioReceiver: CustomBehaviourContextAndTypeReceiver<BC, Unit, TextMessage> | ||||
| ): Job = onCommand(botCommand.command, requireOnlyCommandInMessage, initialFilter, subcontextUpdatesFilter, markerFactory, scenarioReceiver) | ||||
|  | ||||
| suspend fun <BC : BehaviourContext> BC.commandWithArgs( | ||||
|     commandRegex: Regex, | ||||
|     initialFilter: CommonMessageFilter<TextContent>? = CommonMessageFilterExcludeMediaGroups, | ||||
| @@ -134,6 +153,20 @@ suspend fun <BC : BehaviourContext> BC.commandWithArgs( | ||||
|     scenarioReceiver = scenarioReceiver | ||||
| ) | ||||
|  | ||||
| suspend fun <BC : BehaviourContext> BC.commandWithArgs( | ||||
|     botCommand: BotCommand, | ||||
|     initialFilter: CommonMessageFilter<TextContent>? = CommonMessageFilterExcludeMediaGroups, | ||||
|     subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver<BC, Boolean, TextMessage, Update> = MessageFilterByChat, | ||||
|     markerFactory: MarkerFactory<in TextMessage, Any> = ByChatMessageMarkerFactory, | ||||
|     scenarioReceiver: CustomBehaviourContextAndTwoTypesReceiver<BC, Unit, TextMessage, Array<String>> | ||||
| ) = commandWithArgs( | ||||
|     botCommand.command, | ||||
|     initialFilter = initialFilter, | ||||
|     subcontextUpdatesFilter = subcontextUpdatesFilter, | ||||
|     markerFactory = markerFactory, | ||||
|     scenarioReceiver = scenarioReceiver | ||||
| ) | ||||
|  | ||||
| suspend fun <BC : BehaviourContext> BC.onCommandWithArgs( | ||||
|     commandRegex: Regex, | ||||
|     initialFilter: CommonMessageFilter<TextContent>? = CommonMessageFilterExcludeMediaGroups, | ||||
| @@ -149,3 +182,11 @@ suspend fun <BC : BehaviourContext> BC.onCommandWithArgs( | ||||
|     markerFactory: MarkerFactory<in TextMessage, Any> = ByChatMessageMarkerFactory, | ||||
|     scenarioReceiver: CustomBehaviourContextAndTwoTypesReceiver<BC, Unit, TextMessage, Array<String>> | ||||
| ): Job = onCommandWithArgs(command.toRegex(), initialFilter, subcontextUpdatesFilter, markerFactory, scenarioReceiver) | ||||
|  | ||||
| suspend fun <BC : BehaviourContext> BC.onCommandWithArgs( | ||||
|     botCommand: BotCommand, | ||||
|     initialFilter: CommonMessageFilter<TextContent>? = CommonMessageFilterExcludeMediaGroups, | ||||
|     subcontextUpdatesFilter: CustomBehaviourContextAndTwoTypesReceiver<BC, Boolean, TextMessage, Update> = MessageFilterByChat, | ||||
|     markerFactory: MarkerFactory<in TextMessage, Any> = ByChatMessageMarkerFactory, | ||||
|     scenarioReceiver: CustomBehaviourContextAndTwoTypesReceiver<BC, Unit, TextMessage, Array<String>> | ||||
| ): Job = onCommandWithArgs(botCommand.command, initialFilter, subcontextUpdatesFilter, markerFactory, scenarioReceiver) | ||||
|   | ||||
| @@ -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 | ||||
| @@ -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) | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
| package dev.inmo.tgbotapi.utils | ||||
|  | ||||
| import dev.inmo.micro_utils.common.joinTo | ||||
| import dev.inmo.tgbotapi.types.BotCommand | ||||
| import dev.inmo.tgbotapi.types.CustomEmojiId | ||||
| import dev.inmo.tgbotapi.types.chat.User | ||||
| import dev.inmo.tgbotapi.types.message.textsources.* | ||||
| @@ -148,6 +149,15 @@ inline fun EntitiesBuilder.botCommand(command: String) = add(dev.inmo.tgbotapi.t | ||||
|  * Version of [EntitiesBuilder.botCommand] with new line at the end | ||||
|  */ | ||||
| inline fun EntitiesBuilder.botCommandln(command: String) = botCommand(command) + newLine | ||||
| /** | ||||
|  * Add botCommand using [EntitiesBuilder.add] with [dev.inmo.tgbotapi.types.message.textsources.botCommand] | ||||
|  */ | ||||
| inline fun EntitiesBuilder.botCommand(botCommand: BotCommand) = add(dev.inmo.tgbotapi.types.message.textsources.botCommand(botCommand)) | ||||
| /** | ||||
|  * Version of [EntitiesBuilder.botCommand] with new line at the end | ||||
|  */ | ||||
| inline fun EntitiesBuilder.botCommandln(botCommand: BotCommand) = botCommand(botCommand) + newLine | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user