@@ -2,7 +2,10 @@ import dev.inmo.kslog.common.KSLog
22import dev.inmo.kslog.common.LogLevel
33import dev.inmo.kslog.common.defaultMessageFormatter
44import dev.inmo.kslog.common.setDefaultKSLog
5+ import dev.inmo.tgbotapi.extensions.api.answers.answer
56import dev.inmo.tgbotapi.extensions.api.bot.getMe
7+ import dev.inmo.tgbotapi.extensions.api.business.deleteBusinessMessages
8+ import dev.inmo.tgbotapi.extensions.api.business.readBusinessMessage
69import dev.inmo.tgbotapi.extensions.api.chat.modify.pinChatMessage
710import dev.inmo.tgbotapi.extensions.api.chat.modify.unpinChatMessage
811import dev.inmo.tgbotapi.extensions.api.get.getBusinessConnection
@@ -14,10 +17,15 @@ import dev.inmo.tgbotapi.extensions.utils.accessibleMessageOrNull
1417import dev.inmo.tgbotapi.extensions.utils.ifAccessibleMessage
1518import dev.inmo.tgbotapi.extensions.utils.ifBusinessContentMessage
1619import dev.inmo.tgbotapi.extensions.utils.textContentOrNull
20+ import dev.inmo.tgbotapi.extensions.utils.types.buttons.dataButton
21+ import dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard
1722import dev.inmo.tgbotapi.types.ChatId
23+ import dev.inmo.tgbotapi.types.MessageId
24+ import dev.inmo.tgbotapi.types.RawChatId
1825import dev.inmo.tgbotapi.types.business_connection.BusinessConnection
1926import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
2027import dev.inmo.tgbotapi.types.chat.PrivateChat
28+ import dev.inmo.tgbotapi.utils.row
2129import dev.inmo.tgbotapi.utils.toJson
2230import kotlinx.coroutines.CoroutineScope
2331import kotlinx.coroutines.Dispatchers
@@ -78,7 +86,20 @@ suspend fun main(args: Array<String>) {
7886 if (businessContentMessage.sentByBusinessConnectionOwner) {
7987 reply(sent, " You have sent this message to the ${businessContentMessage.businessConnectionId.string} related chat" )
8088 } else {
81- reply(sent, " User have sent this message to you in the ${businessContentMessage.businessConnectionId.string} related chat" )
89+ reply(
90+ to = sent,
91+ text = " User have sent this message to you in the ${businessContentMessage.businessConnectionId.string} related chat" ,
92+ )
93+ send(
94+ chatId = businessConnectionsChats[it.businessConnectionId] ? : return @ifBusinessContentMessage,
95+ text = " User have sent this message to you in the ${businessContentMessage.businessConnectionId.string} related chat" ,
96+ replyMarkup = inlineKeyboard {
97+ row {
98+ dataButton(" Read message" , " read ${it.chat.id.chatId.long} ${it.messageId.long} " )
99+ dataButton(" Delete message" , " delete ${it.chat.id.chatId.long} ${it.messageId.long} " )
100+ }
101+ }
102+ )
82103 }
83104 }
84105 }
@@ -116,5 +137,37 @@ suspend fun main(args: Array<String>) {
116137 }
117138 }
118139 }
140+ onMessageDataCallbackQuery(Regex (" read \\ d+ \\ d+" )) {
141+ val (_, chatIdString, messageIdString) = it.data.split(" " )
142+ val chatId = chatIdString.toLongOrNull() ?.let (::RawChatId ) ?.let (::ChatId ) ? : return @onMessageDataCallbackQuery
143+ val messageId = messageIdString.toLongOrNull() ?.let (::MessageId ) ? : return @onMessageDataCallbackQuery
144+ val businessConnectionId = chatsBusinessConnections[it.message.chat.id]
145+
146+ val readResponse = businessConnectionId ?.let { readBusinessMessage(it, chatId, messageId) }
147+ answer(
148+ it,
149+ if (readResponse == null ) {
150+ " There is no business connection for current chat"
151+ } else {
152+ " Message has been read"
153+ }
154+ )
155+ }
156+ onMessageDataCallbackQuery(Regex (" delete \\ d+ \\ d+" )) {
157+ val (_, chatIdString, messageIdString) = it.data.split(" " )
158+ val chatId = chatIdString.toLongOrNull() ?.let (::RawChatId ) ?.let (::ChatId ) ? : return @onMessageDataCallbackQuery
159+ val messageId = messageIdString.toLongOrNull() ?.let (::MessageId ) ? : return @onMessageDataCallbackQuery
160+ val businessConnectionId = chatsBusinessConnections[it.message.chat.id]
161+
162+ val readResponse = businessConnectionId ?.let { deleteBusinessMessages(it, listOf (messageId)) }
163+ answer(
164+ it,
165+ if (readResponse == null ) {
166+ " There is no business connection for current chat"
167+ } else {
168+ " Message has been deleted"
169+ }
170+ )
171+ }
119172 }.second.join()
120173}
0 commit comments