@@ -15,11 +15,15 @@ import dev.inmo.tgbotapi.extensions.utils.ifAccessibleMessage
1515import dev.inmo.tgbotapi.extensions.utils.ifBusinessContentMessage
1616import dev.inmo.tgbotapi.extensions.utils.textContentOrNull
1717import dev.inmo.tgbotapi.types.ChatId
18+ import dev.inmo.tgbotapi.types.business_connection.BusinessConnection
1819import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
20+ import dev.inmo.tgbotapi.types.chat.PrivateChat
21+ import dev.inmo.tgbotapi.utils.toJson
1922import kotlinx.coroutines.CoroutineScope
2023import kotlinx.coroutines.Dispatchers
2124import kotlinx.coroutines.sync.Mutex
2225import kotlinx.coroutines.sync.withLock
26+ import kotlinx.serialization.json.Json
2327
2428suspend fun main (args : Array <String >) {
2529 val botToken = args.first()
@@ -34,6 +38,7 @@ suspend fun main(args: Array<String>) {
3438 }
3539
3640 val businessConnectionsChats = mutableMapOf<BusinessConnectionId , ChatId >()
41+ val chatsBusinessConnections = mutableMapOf<ChatId , BusinessConnectionId >()
3742 val businessConnectionsChatsMutex = Mutex ()
3843
3944 telegramBotWithBehaviourAndLongPolling(botToken, CoroutineScope (Dispatchers .IO )) {
@@ -43,12 +48,14 @@ suspend fun main(args: Array<String>) {
4348 onBusinessConnectionEnabled {
4449 businessConnectionsChatsMutex.withLock {
4550 businessConnectionsChats[it.id] = it.userChatId
51+ chatsBusinessConnections[it.userChatId] = it.id
4652 }
4753 send(it.userChatId, " Business connection ${it.businessConnectionId.string} has been enabled" )
4854 }
4955 onBusinessConnectionDisabled {
5056 businessConnectionsChatsMutex.withLock {
5157 businessConnectionsChats.remove(it.id)
58+ chatsBusinessConnections.remove(it.userChatId)
5259 }
5360 send(it.userChatId, " Business connection ${it.businessConnectionId.string} has been disabled" )
5461 }
@@ -98,5 +105,16 @@ suspend fun main(args: Array<String>) {
98105 }
99106 send(businessConnectionOwnerChat, " There are several removed messages in chat ${it.chat.id} : ${it.messageIds} " )
100107 }
108+ onCommand(" get_business_account_info" , initialFilter = { it.chat is PrivateChat }) {
109+ val businessConnectionId = chatsBusinessConnections[it.chat.id]
110+ val businessConnectionInfo = businessConnectionId ?.let { getBusinessConnection(it) }
111+ reply(it) {
112+ if (businessConnectionInfo == null ) {
113+ + " There is no business connection for current chat"
114+ } else {
115+ + (Json { prettyPrint = true ; encodeDefaults = true }.encodeToString(businessConnectionInfo))
116+ }
117+ }
118+ }
101119 }.second.join()
102120}
0 commit comments