improve communities bot

This commit is contained in:
2026-08-21 12:08:33 +06:00
parent 2dd20f51db
commit 016400a821

View File

@@ -8,12 +8,17 @@ import dev.inmo.tgbotapi.extensions.api.chat.get.getChat
import dev.inmo.tgbotapi.extensions.api.send.reply import dev.inmo.tgbotapi.extensions.api.send.reply
import dev.inmo.tgbotapi.extensions.api.send.send import dev.inmo.tgbotapi.extensions.api.send.send
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitCommunityChatAdded import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitCommunityChatAdded
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitCommunityChatAddedEventsMessages
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitCommunityChatRemoved
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitCommunityChatRemovedEventsMessages
import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommunityChatAdded import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommunityChatAdded
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommunityChatRemoved import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommunityChatRemoved
import dev.inmo.tgbotapi.extensions.utils.extensions.sameChat
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
/** /**
@@ -85,10 +90,17 @@ suspend fun main(vararg args: String) {
} }
// waitCommunityChatAdded expectation: suspend until this chat is added to a community // waitCommunityChatAdded expectation: suspend until this chat is added to a community
onCommand("wait_community") { onCommand("wait_community_added") { origin ->
reply(it, "Waiting for this chat to be added to a community...") reply(origin, "Waiting for this chat to be added to a community...")
val event = waitCommunityChatAdded().first() val event = waitCommunityChatAddedEventsMessages().filter { it.sameChat(origin) }.first().chatEvent
reply(it, "Chat added to community: ${event.community.name} (id=${event.community.id.long})") reply(origin, "Chat added to community: ${event.community.name} (id=${event.community.id.long})")
}
// waitCommunityChatAdded expectation: suspend until this chat is added to a community
onCommand("wait_community_removed") { origin ->
reply(origin, "Waiting for this chat to be added to a community...")
waitCommunityChatRemovedEventsMessages().filter { it.sameChat(origin) }.first()
reply(origin, "Chat removed from its community (${origin.chat.id})")
} }
allUpdatesFlow.subscribeSafelyWithoutExceptions(this) { allUpdatesFlow.subscribeSafelyWithoutExceptions(this) {