diff --git a/FSMBot/build.gradle b/FSMBot/build.gradle index 567cab4..feaa2c3 100644 --- a/FSMBot/build.gradle +++ b/FSMBot/build.gradle @@ -1,6 +1,7 @@ buildscript { repositories { - jcenter() + mavenLocal() + mavenCentral() } dependencies { @@ -13,10 +14,13 @@ apply plugin: 'application' mainClassName="SimpleFSMBotKt" +repositories { + mavenLocal() + mavenCentral() +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "dev.inmo:tgbotapi:$telegram_bot_api_version" - implementation "dev.inmo:micro_utils.fsm.common:$micro_utils_version" } diff --git a/FSMBot/src/main/kotlin/SimpleFSMBot.kt b/FSMBot/src/main/kotlin/SimpleFSMBot.kt index 164b971..e152106 100644 --- a/FSMBot/src/main/kotlin/SimpleFSMBot.kt +++ b/FSMBot/src/main/kotlin/SimpleFSMBot.kt @@ -1,20 +1,13 @@ import dev.inmo.micro_utils.fsm.common.State -import dev.inmo.micro_utils.fsm.common.dsl.buildFSM -import dev.inmo.micro_utils.fsm.common.dsl.strictlyOn -import dev.inmo.tgbotapi.extensions.api.send.media.sendMediaGroup -import dev.inmo.tgbotapi.extensions.api.send.reply import dev.inmo.tgbotapi.extensions.api.send.sendMessage import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.* import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.* import dev.inmo.tgbotapi.extensions.utils.extensions.parseCommandsWithParams import dev.inmo.tgbotapi.extensions.utils.formatting.* -import dev.inmo.tgbotapi.extensions.utils.shortcuts.chat import dev.inmo.tgbotapi.types.ChatId import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.message.content.TextContent -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaGroupContent -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import kotlinx.coroutines.* sealed interface BotState : State @@ -24,41 +17,32 @@ data class StopState(override val context: ChatId) : BotState suspend fun main(args: Array) { val botToken = args.first() - telegramBotWithBehaviour(botToken, CoroutineScope(Dispatchers.IO)) { - val fsm = buildFSM { - strictlyOn { - sendMessage( - it.context, - buildEntities { - +"Send me some content or " + botCommand("stop") + " if you want to stop sending" - } - ) + telegramBotWithBehaviourAndFSMAndStartLongPolling(botToken, CoroutineScope(Dispatchers.IO)) { + strictlyOn { + sendMessage( + it.context, + buildEntities { + +"Send me some content or " + botCommand("stop") + " if you want to stop sending" + } + ) - doInSubContext(stopOnCompletion = false) { - val behaviourSubcontext = this - onContentMessage( - initialFilter = { message -> message.chat.id == it.context } - ) { message -> - execute(message.content.createResend(it.context)) - } - onCommand("stop") { - behaviourSubcontext.cancel() - } - }.join() - - StopState(it.context) + val content = waitContentMessage().first() + when { + content is TextContent && content.parseCommandsWithParams().keys.contains("stop") -> StopState(it.context) + else -> { + execute(content.createResend(it.context)) + it + } } - strictlyOn { - sendMessage(it.context, "You have stopped sending of content") + } + strictlyOn { + sendMessage(it.context, "You have stopped sending of content") - null - } + null } command("start") { - fsm.startChain(ExpectContentOrStopState(it.chat.id, it)) + startChain(ExpectContentOrStopState(it.chat.id, it)) } - - fsm.start(this) }.second.join() } diff --git a/gradle.properties b/gradle.properties index 0eafa5c..6e5b6f9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,5 +3,5 @@ org.gradle.parallel=true kotlin_version=1.5.31 -telegram_bot_api_version=0.35.9 -micro_utils_version=0.5.31 +telegram_bot_api_version=0.36.0 +micro_utils_version=0.7.2