
com.github.insanusmokrassar.AutoPostTelegramBot.plugins.rating.commands.DisableRating.kt Maven / Gradle / Ivy
package com.github.insanusmokrassar.AutoPostTelegramBot.plugins.rating.commands
import com.github.insanusmokrassar.AutoPostTelegramBot.base.database.exceptions.NoRowFoundException
import com.github.insanusmokrassar.AutoPostTelegramBot.base.database.tables.PostsTable
import com.github.insanusmokrassar.AutoPostTelegramBot.base.plugins.abstractions.MutableRatingPlugin
import com.github.insanusmokrassar.AutoPostTelegramBot.base.plugins.commonLogger
import com.github.insanusmokrassar.AutoPostTelegramBot.plugins.rating.disableLikesForPost
import com.github.insanusmokrassar.AutoPostTelegramBot.utils.commands.Command
import com.github.insanusmokrassar.TelegramBotAPI.bot.RequestsExecutor
import com.github.insanusmokrassar.TelegramBotAPI.requests.DeleteMessage
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendMessage
import com.github.insanusmokrassar.TelegramBotAPI.types.UpdateIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.AbleToReplyMessage
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.CommonMessage
import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.executeUnsafe
import java.lang.ref.WeakReference
class DisableRating(
executor: RequestsExecutor,
private val ratingsPlugin: MutableRatingPlugin
) : Command() {
override val commandRegex: Regex = Regex("deleteRating")
private val executorWR = WeakReference(executor)
override suspend fun onCommand(updateId: UpdateIdentifier, message: CommonMessage<*>) {
val executor = executorWR.get() ?: return
val replied = (message as? AbleToReplyMessage) ?.replyTo ?: return // TODO:: Add sending tooltip
try {
val postId = PostsTable.findPost(
replied.messageId
)
disableLikesForPost(
postId,
ratingsPlugin
)
executor.executeUnsafe(
DeleteMessage(
message.chat.id,
message.messageId
)
)
commonLogger.info("Rating was disabled")
} catch (e: NoRowFoundException) {
commonLogger.throwing(this::class.simpleName, "deleteRating", e)
executor.executeUnsafe(
SendMessage(
message.chat.id,
"Post for message was not found",
replyToMessageId = message.messageId
)
)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy