diff --git a/posts/gc/src/jvmMain/kotlin/Plugin.kt b/posts/gc/src/jvmMain/kotlin/Plugin.kt index b9c9fd2..2a5addf 100644 --- a/posts/gc/src/jvmMain/kotlin/Plugin.kt +++ b/posts/gc/src/jvmMain/kotlin/Plugin.kt @@ -33,6 +33,7 @@ import dev.inmo.tgbotapi.extensions.utils.extensions.sameMessage import dev.inmo.tgbotapi.extensions.utils.types.buttons.dataButton import dev.inmo.tgbotapi.extensions.utils.types.buttons.flatInlineKeyboard import dev.inmo.tgbotapi.types.MilliSeconds +import dev.inmo.tgbotapi.types.buttons.KeyboardButtonStyle import dev.inmo.tgbotapi.utils.bold import kotlinx.coroutines.* import kotlinx.coroutines.flow.filter @@ -148,7 +149,7 @@ object Plugin : Plugin { message, text = "Are you sure want to trigger posts garbage collecting?", replyMarkup = flatInlineKeyboard { - dataButton("Sure", yesData) + dataButton("Sure", yesData, style = KeyboardButtonStyle.Primary) dataButton("No", noData) } ) diff --git a/posts/panel/src/jvmMain/kotlin/Plugin.kt b/posts/panel/src/jvmMain/kotlin/Plugin.kt index 03d85b8..3a5f0df 100644 --- a/posts/panel/src/jvmMain/kotlin/Plugin.kt +++ b/posts/panel/src/jvmMain/kotlin/Plugin.kt @@ -1,7 +1,9 @@ package dev.inmo.plaguposter.posts.panel import com.benasher44.uuid.uuid4 +import dev.inmo.micro_utils.coroutines.runCatchingLogging import dev.inmo.micro_utils.coroutines.runCatchingSafely +import dev.inmo.micro_utils.coroutines.subscribeLoggingDropExceptions import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.micro_utils.koin.getAllDistinct import dev.inmo.micro_utils.repos.* @@ -32,6 +34,7 @@ import dev.inmo.tgbotapi.types.MessageId import dev.inmo.tgbotapi.types.ReplyParameters import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.buttons.KeyboardButtonStyle import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.utils.bold import dev.inmo.tgbotapi.utils.buildEntities @@ -69,7 +72,8 @@ object Plugin : Plugin { PanelButtonBuilder { CallbackDataInlineKeyboardButton( text, - "refresh ${it.id.string}" + "refresh ${it.id.string}", + style = KeyboardButtonStyle.Primary ) } } @@ -97,7 +101,7 @@ object Plugin : Plugin { basePostsMessages } - postsRepo.newObjectsFlow.subscribeSafelyWithoutExceptions(this) { + postsRepo.newObjectsFlow.subscribeLoggingDropExceptions(this) { val firstContent = it.content.first() val buttons = api.buttonsBuilders.chunked(config.buttonsPerRow).mapNotNull { row -> row.mapNotNull { builder -> @@ -162,7 +166,7 @@ object Plugin : Plugin { edit( query.message, replyMarkup = flatInlineKeyboard { - dataButton("\uD83D\uDDD1", approveData) + dataButton("\uD83D\uDDD1", approveData, style = KeyboardButtonStyle.Danger) api.RootPanelButtonBuilder.buildButton(post) ?.let(::add) } ) @@ -184,7 +188,7 @@ object Plugin : Plugin { val postId = query.data.removePrefix("refresh ").let(::PostId) val (chatId, messageId) = postsMessages.get(postId) ?: return@onMessageDataCallbackQuery - runCatchingSafely { + runCatching { refreshPostMessage( postId, chatId, diff --git a/posts_registrar/src/jvmMain/kotlin/Plugin.kt b/posts_registrar/src/jvmMain/kotlin/Plugin.kt index 61a1365..b39c451 100644 --- a/posts_registrar/src/jvmMain/kotlin/Plugin.kt +++ b/posts_registrar/src/jvmMain/kotlin/Plugin.kt @@ -22,6 +22,7 @@ import dev.inmo.tgbotapi.extensions.utils.extensions.sameChat import dev.inmo.tgbotapi.extensions.utils.extensions.sameMessage import dev.inmo.tgbotapi.extensions.utils.textContentOrNull import dev.inmo.tgbotapi.extensions.utils.types.buttons.* +import dev.inmo.tgbotapi.types.buttons.KeyboardButtonStyle import dev.inmo.tgbotapi.utils.regular import kotlinx.coroutines.async import kotlinx.coroutines.flow.* @@ -56,7 +57,8 @@ object Plugin : Plugin { flatInlineKeyboard { dataButton( "Finish", - buttonUuid + buttonUuid, + style = KeyboardButtonStyle.Primary, ) } } else { diff --git a/ratings/source/src/jvmMain/kotlin/Plugin.kt b/ratings/source/src/jvmMain/kotlin/Plugin.kt index e344899..038e883 100644 --- a/ratings/source/src/jvmMain/kotlin/Plugin.kt +++ b/ratings/source/src/jvmMain/kotlin/Plugin.kt @@ -43,6 +43,7 @@ import dev.inmo.tgbotapi.extensions.utils.types.buttons.flatInlineKeyboard import dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard import dev.inmo.tgbotapi.types.ReplyParameters import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.KeyboardButtonStyle import dev.inmo.tgbotapi.types.message.textsources.boldTextSource import dev.inmo.tgbotapi.types.message.textsources.regularTextSource import dev.inmo.tgbotapi.types.polls.InputPollOption @@ -67,7 +68,9 @@ object Plugin : Plugin { val variants: RatingsVariants, val autoAttach: Boolean, val ratingOfferText: String, - val panelButtonText: String = "Ratings" + val panelButtonText: String = "Ratings", + val ratingEnabledStyle: KeyboardButtonStyle? = null, + val ratingDisabledStyle: KeyboardButtonStyle? = null ) override fun Module.setupDI(params: JsonObject) { @@ -296,13 +299,19 @@ object Plugin : Plugin { panelApi ?.apply { add( PanelButtonBuilder { + val enabled = pollsToPostsIdsRepo.keys(it.id, firstPageWithOneElementPagination).results.any() CallbackDataInlineKeyboardButton( - config.panelButtonText + if (pollsToPostsIdsRepo.keys(it.id, firstPageWithOneElementPagination).results.any()) { + config.panelButtonText + if (enabled) { SuccessfulSymbol } else { UnsuccessfulSymbol }, - "toggle_ratings ${it.id.string}" + "toggle_ratings ${it.id.string}", + style = if (enabled) { + config.ratingEnabledStyle + } else { + config.ratingDisabledStyle + } ) } ) diff --git a/sample/config.json b/sample/config.json index 294fabc..74093e6 100644 --- a/sample/config.json +++ b/sample/config.json @@ -41,7 +41,9 @@ "Results": 0 }, "autoAttach": true, - "ratingOfferText": "What do you think about it?" + "ratingOfferText": "What do you think about it?", + "ratingEnabledStyle": "success", + "ratingDisabledStyle": "danger" }, "selector": { "items": [ diff --git a/triggers/command/src/jvmMain/kotlin/Plugin.kt b/triggers/command/src/jvmMain/kotlin/Plugin.kt index f0a8a3d..de6d330 100644 --- a/triggers/command/src/jvmMain/kotlin/Plugin.kt +++ b/triggers/command/src/jvmMain/kotlin/Plugin.kt @@ -113,7 +113,7 @@ object Plugin : Plugin { PanelButtonBuilder { CallbackDataInlineKeyboardButton( text, - "publish ${it.id.string}" + "publish ${it.id.string}", ) } ) diff --git a/triggers/timer/src/commonMain/kotlin/TimerPanelButton.kt b/triggers/timer/src/commonMain/kotlin/TimerPanelButton.kt index 729d3df..b3152f4 100644 --- a/triggers/timer/src/commonMain/kotlin/TimerPanelButton.kt +++ b/triggers/timer/src/commonMain/kotlin/TimerPanelButton.kt @@ -6,6 +6,7 @@ import dev.inmo.plaguposter.posts.models.RegisteredPost import dev.inmo.plaguposter.posts.panel.PanelButtonBuilder import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.InlineKeyboardButton +import dev.inmo.tgbotapi.types.buttons.KeyboardButtonStyle class TimerPanelButton( private val timersRepo: TimersRepo @@ -18,7 +19,12 @@ class TimerPanelButton( return CallbackDataInlineKeyboardButton( "⏰ ${ if (publishingTime == null) UnsuccessfulSymbol else SuccessfulSymbol }", - "$timerSetPrefix ${post.id}" + "$timerSetPrefix ${post.id}", + style = if (publishingTime == null) { + null + } else { + KeyboardButtonStyle.Success + } ) }