mirror of
https://github.com/InsanusMokrassar/PlaguPoster.git
synced 2026-05-21 05:37:20 +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.dataButton
|
||||||
import dev.inmo.tgbotapi.extensions.utils.types.buttons.flatInlineKeyboard
|
import dev.inmo.tgbotapi.extensions.utils.types.buttons.flatInlineKeyboard
|
||||||
import dev.inmo.tgbotapi.types.MilliSeconds
|
import dev.inmo.tgbotapi.types.MilliSeconds
|
||||||
|
import dev.inmo.tgbotapi.types.buttons.KeyboardButtonStyle
|
||||||
import dev.inmo.tgbotapi.utils.bold
|
import dev.inmo.tgbotapi.utils.bold
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.flow.filter
|
import kotlinx.coroutines.flow.filter
|
||||||
@@ -148,7 +149,7 @@ object Plugin : Plugin {
|
|||||||
message,
|
message,
|
||||||
text = "Are you sure want to trigger posts garbage collecting?",
|
text = "Are you sure want to trigger posts garbage collecting?",
|
||||||
replyMarkup = flatInlineKeyboard {
|
replyMarkup = flatInlineKeyboard {
|
||||||
dataButton("Sure", yesData)
|
dataButton("Sure", yesData, style = KeyboardButtonStyle.Primary)
|
||||||
dataButton("No", noData)
|
dataButton("No", noData)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package dev.inmo.plaguposter.posts.panel
|
package dev.inmo.plaguposter.posts.panel
|
||||||
|
|
||||||
import com.benasher44.uuid.uuid4
|
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.runCatchingSafely
|
||||||
|
import dev.inmo.micro_utils.coroutines.subscribeLoggingDropExceptions
|
||||||
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
|
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
|
||||||
import dev.inmo.micro_utils.koin.getAllDistinct
|
import dev.inmo.micro_utils.koin.getAllDistinct
|
||||||
import dev.inmo.micro_utils.repos.*
|
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.ReplyParameters
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
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.types.message.ParseMode
|
||||||
import dev.inmo.tgbotapi.utils.bold
|
import dev.inmo.tgbotapi.utils.bold
|
||||||
import dev.inmo.tgbotapi.utils.buildEntities
|
import dev.inmo.tgbotapi.utils.buildEntities
|
||||||
@@ -69,7 +72,8 @@ object Plugin : Plugin {
|
|||||||
PanelButtonBuilder {
|
PanelButtonBuilder {
|
||||||
CallbackDataInlineKeyboardButton(
|
CallbackDataInlineKeyboardButton(
|
||||||
text,
|
text,
|
||||||
"refresh ${it.id.string}"
|
"refresh ${it.id.string}",
|
||||||
|
style = KeyboardButtonStyle.Primary
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -97,7 +101,7 @@ object Plugin : Plugin {
|
|||||||
basePostsMessages
|
basePostsMessages
|
||||||
}
|
}
|
||||||
|
|
||||||
postsRepo.newObjectsFlow.subscribeSafelyWithoutExceptions(this) {
|
postsRepo.newObjectsFlow.subscribeLoggingDropExceptions(this) {
|
||||||
val firstContent = it.content.first()
|
val firstContent = it.content.first()
|
||||||
val buttons = api.buttonsBuilders.chunked(config.buttonsPerRow).mapNotNull { row ->
|
val buttons = api.buttonsBuilders.chunked(config.buttonsPerRow).mapNotNull { row ->
|
||||||
row.mapNotNull { builder ->
|
row.mapNotNull { builder ->
|
||||||
@@ -162,7 +166,7 @@ object Plugin : Plugin {
|
|||||||
edit(
|
edit(
|
||||||
query.message,
|
query.message,
|
||||||
replyMarkup = flatInlineKeyboard {
|
replyMarkup = flatInlineKeyboard {
|
||||||
dataButton("\uD83D\uDDD1", approveData)
|
dataButton("\uD83D\uDDD1", approveData, style = KeyboardButtonStyle.Danger)
|
||||||
api.RootPanelButtonBuilder.buildButton(post) ?.let(::add)
|
api.RootPanelButtonBuilder.buildButton(post) ?.let(::add)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -184,7 +188,7 @@ object Plugin : Plugin {
|
|||||||
val postId = query.data.removePrefix("refresh ").let(::PostId)
|
val postId = query.data.removePrefix("refresh ").let(::PostId)
|
||||||
val (chatId, messageId) = postsMessages.get(postId) ?: return@onMessageDataCallbackQuery
|
val (chatId, messageId) = postsMessages.get(postId) ?: return@onMessageDataCallbackQuery
|
||||||
|
|
||||||
runCatchingSafely {
|
runCatching {
|
||||||
refreshPostMessage(
|
refreshPostMessage(
|
||||||
postId,
|
postId,
|
||||||
chatId,
|
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.extensions.sameMessage
|
||||||
import dev.inmo.tgbotapi.extensions.utils.textContentOrNull
|
import dev.inmo.tgbotapi.extensions.utils.textContentOrNull
|
||||||
import dev.inmo.tgbotapi.extensions.utils.types.buttons.*
|
import dev.inmo.tgbotapi.extensions.utils.types.buttons.*
|
||||||
|
import dev.inmo.tgbotapi.types.buttons.KeyboardButtonStyle
|
||||||
import dev.inmo.tgbotapi.utils.regular
|
import dev.inmo.tgbotapi.utils.regular
|
||||||
import kotlinx.coroutines.async
|
import kotlinx.coroutines.async
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
@@ -56,7 +57,8 @@ object Plugin : Plugin {
|
|||||||
flatInlineKeyboard {
|
flatInlineKeyboard {
|
||||||
dataButton(
|
dataButton(
|
||||||
"Finish",
|
"Finish",
|
||||||
buttonUuid
|
buttonUuid,
|
||||||
|
style = KeyboardButtonStyle.Primary,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} 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.extensions.utils.types.buttons.inlineKeyboard
|
||||||
import dev.inmo.tgbotapi.types.ReplyParameters
|
import dev.inmo.tgbotapi.types.ReplyParameters
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton
|
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.boldTextSource
|
||||||
import dev.inmo.tgbotapi.types.message.textsources.regularTextSource
|
import dev.inmo.tgbotapi.types.message.textsources.regularTextSource
|
||||||
import dev.inmo.tgbotapi.types.polls.InputPollOption
|
import dev.inmo.tgbotapi.types.polls.InputPollOption
|
||||||
@@ -67,7 +68,9 @@ object Plugin : Plugin {
|
|||||||
val variants: RatingsVariants,
|
val variants: RatingsVariants,
|
||||||
val autoAttach: Boolean,
|
val autoAttach: Boolean,
|
||||||
val ratingOfferText: String,
|
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) {
|
override fun Module.setupDI(params: JsonObject) {
|
||||||
@@ -296,13 +299,19 @@ object Plugin : Plugin {
|
|||||||
panelApi ?.apply {
|
panelApi ?.apply {
|
||||||
add(
|
add(
|
||||||
PanelButtonBuilder {
|
PanelButtonBuilder {
|
||||||
|
val enabled = pollsToPostsIdsRepo.keys(it.id, firstPageWithOneElementPagination).results.any()
|
||||||
CallbackDataInlineKeyboardButton(
|
CallbackDataInlineKeyboardButton(
|
||||||
config.panelButtonText + if (pollsToPostsIdsRepo.keys(it.id, firstPageWithOneElementPagination).results.any()) {
|
config.panelButtonText + if (enabled) {
|
||||||
SuccessfulSymbol
|
SuccessfulSymbol
|
||||||
} else {
|
} else {
|
||||||
UnsuccessfulSymbol
|
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
|
"Results": 0
|
||||||
},
|
},
|
||||||
"autoAttach": true,
|
"autoAttach": true,
|
||||||
"ratingOfferText": "What do you think about it?"
|
"ratingOfferText": "What do you think about it?",
|
||||||
|
"ratingEnabledStyle": "success",
|
||||||
|
"ratingDisabledStyle": "danger"
|
||||||
},
|
},
|
||||||
"selector": {
|
"selector": {
|
||||||
"items": [
|
"items": [
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ object Plugin : Plugin {
|
|||||||
PanelButtonBuilder {
|
PanelButtonBuilder {
|
||||||
CallbackDataInlineKeyboardButton(
|
CallbackDataInlineKeyboardButton(
|
||||||
text,
|
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.plaguposter.posts.panel.PanelButtonBuilder
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton
|
||||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.InlineKeyboardButton
|
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.InlineKeyboardButton
|
||||||
|
import dev.inmo.tgbotapi.types.buttons.KeyboardButtonStyle
|
||||||
|
|
||||||
class TimerPanelButton(
|
class TimerPanelButton(
|
||||||
private val timersRepo: TimersRepo
|
private val timersRepo: TimersRepo
|
||||||
@@ -18,7 +19,12 @@ class TimerPanelButton(
|
|||||||
|
|
||||||
return CallbackDataInlineKeyboardButton(
|
return CallbackDataInlineKeyboardButton(
|
||||||
"⏰ ${ if (publishingTime == null) UnsuccessfulSymbol else SuccessfulSymbol }",
|
"⏰ ${ 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