mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI-examples.git
synced 2025-10-05 15:09:20 +00:00
start add tests for new business account features
This commit is contained in:
@@ -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()
|
||||||
}
|
}
|
Reference in New Issue
Block a user