mirror of
https://github.com/InsanusMokrassar/PlaguPoster.git
synced 2026-03-14 04:52:26 +00:00
add coloring of inline buttons
This commit is contained in:
@@ -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)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -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": [
|
||||
|
||||
@@ -113,7 +113,7 @@ object Plugin : Plugin {
|
||||
PanelButtonBuilder {
|
||||
CallbackDataInlineKeyboardButton(
|
||||
text,
|
||||
"publish ${it.id.string}"
|
||||
"publish ${it.id.string}",
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user