From d89202aebb4a4210e972a660beb58ad1020dc631 Mon Sep 17 00:00:00 2001
From: InsanusMokrassar <ovsyannikov.alexey95@gmail.com>
Date: Mon, 18 Oct 2021 17:14:40 +0600
Subject: [PATCH] update up to 0.36.0

---
 FSMBot/build.gradle                    |  8 +++-
 FSMBot/src/main/kotlin/SimpleFSMBot.kt | 56 +++++++++-----------------
 gradle.properties                      |  4 +-
 3 files changed, 28 insertions(+), 40 deletions(-)

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<String>) {
     val botToken = args.first()
 
-    telegramBotWithBehaviour(botToken, CoroutineScope(Dispatchers.IO)) {
-        val fsm = buildFSM {
-            strictlyOn<ExpectContentOrStopState> {
-                sendMessage(
-                    it.context,
-                    buildEntities {
-                        +"Send me some content or " + botCommand("stop") + " if you want to stop sending"
-                    }
-                )
+    telegramBotWithBehaviourAndFSMAndStartLongPolling(botToken, CoroutineScope(Dispatchers.IO)) {
+        strictlyOn<ExpectContentOrStopState> {
+            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<StopState> {
-                sendMessage(it.context, "You have stopped sending of content")
+        }
+        strictlyOn<StopState> {
+            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