Skip to content

Commit 3495174

Browse files
start add tests for new business account features
1 parent 1708cad commit 3495174

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

BusinessConnectionsBot/src/main/kotlin/BusinessConnectionsBot.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,15 @@ import dev.inmo.tgbotapi.extensions.utils.ifAccessibleMessage
1515
import dev.inmo.tgbotapi.extensions.utils.ifBusinessContentMessage
1616
import dev.inmo.tgbotapi.extensions.utils.textContentOrNull
1717
import dev.inmo.tgbotapi.types.ChatId
18+
import dev.inmo.tgbotapi.types.business_connection.BusinessConnection
1819
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
20+
import dev.inmo.tgbotapi.types.chat.PrivateChat
21+
import dev.inmo.tgbotapi.utils.toJson
1922
import kotlinx.coroutines.CoroutineScope
2023
import kotlinx.coroutines.Dispatchers
2124
import kotlinx.coroutines.sync.Mutex
2225
import kotlinx.coroutines.sync.withLock
26+
import kotlinx.serialization.json.Json
2327

2428
suspend 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

Comments
 (0)