start add tests for new business account features

This commit is contained in:
2025-05-11 21:28:32 +06:00
parent 1708cad654
commit 349517462e

View File

@@ -15,11 +15,15 @@ import dev.inmo.tgbotapi.extensions.utils.ifAccessibleMessage
import dev.inmo.tgbotapi.extensions.utils.ifBusinessContentMessage import dev.inmo.tgbotapi.extensions.utils.ifBusinessContentMessage
import dev.inmo.tgbotapi.extensions.utils.textContentOrNull import dev.inmo.tgbotapi.extensions.utils.textContentOrNull
import dev.inmo.tgbotapi.types.ChatId import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.business_connection.BusinessConnection
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
import dev.inmo.tgbotapi.types.chat.PrivateChat
import dev.inmo.tgbotapi.utils.toJson
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import kotlinx.serialization.json.Json
suspend fun main(args: Array<String>) { suspend fun main(args: Array<String>) {
val botToken = args.first() val botToken = args.first()
@@ -34,6 +38,7 @@ suspend fun main(args: Array<String>) {
} }
val businessConnectionsChats = mutableMapOf<BusinessConnectionId, ChatId>() val businessConnectionsChats = mutableMapOf<BusinessConnectionId, ChatId>()
val chatsBusinessConnections = mutableMapOf<ChatId, BusinessConnectionId>()
val businessConnectionsChatsMutex = Mutex() val businessConnectionsChatsMutex = Mutex()
telegramBotWithBehaviourAndLongPolling(botToken, CoroutineScope(Dispatchers.IO)) { telegramBotWithBehaviourAndLongPolling(botToken, CoroutineScope(Dispatchers.IO)) {
@@ -43,12 +48,14 @@ suspend fun main(args: Array<String>) {
onBusinessConnectionEnabled { onBusinessConnectionEnabled {
businessConnectionsChatsMutex.withLock { businessConnectionsChatsMutex.withLock {
businessConnectionsChats[it.id] = it.userChatId businessConnectionsChats[it.id] = it.userChatId
chatsBusinessConnections[it.userChatId] = it.id
} }
send(it.userChatId, "Business connection ${it.businessConnectionId.string} has been enabled") send(it.userChatId, "Business connection ${it.businessConnectionId.string} has been enabled")
} }
onBusinessConnectionDisabled { onBusinessConnectionDisabled {
businessConnectionsChatsMutex.withLock { businessConnectionsChatsMutex.withLock {
businessConnectionsChats.remove(it.id) businessConnectionsChats.remove(it.id)
chatsBusinessConnections.remove(it.userChatId)
} }
send(it.userChatId, "Business connection ${it.businessConnectionId.string} has been disabled") send(it.userChatId, "Business connection ${it.businessConnectionId.string} has been disabled")
} }
@@ -98,5 +105,16 @@ suspend fun main(args: Array<String>) {
} }
send(businessConnectionOwnerChat, "There are several removed messages in chat ${it.chat.id}: ${it.messageIds}") send(businessConnectionOwnerChat, "There are several removed messages in chat ${it.chat.id}: ${it.messageIds}")
} }
onCommand("get_business_account_info", initialFilter = { it.chat is PrivateChat }) {
val businessConnectionId = chatsBusinessConnections[it.chat.id]
val businessConnectionInfo = businessConnectionId ?.let { getBusinessConnection(it) }
reply(it) {
if (businessConnectionInfo == null) {
+"There is no business connection for current chat"
} else {
+(Json { prettyPrint = true; encodeDefaults = true }.encodeToString(businessConnectionInfo))
}
}
}
}.second.join() }.second.join()
} }