@@ -4,13 +4,10 @@ import by.jprof.telegram.bot.core.UpdateProcessor
44import by.jprof.telegram.bot.votes.dao.VotesDAO
55import by.jprof.telegram.bot.votes.model.Votes
66import by.jprof.telegram.bot.votes.tgbotapi_extensions.toInlineKeyboardMarkup
7+ import by.jprof.telegram.bot.votes.voting_processor.VotingProcessor
78import dev.inmo.tgbotapi.CommonAbstracts.justTextSources
89import dev.inmo.tgbotapi.bot.RequestsExecutor
9- import dev.inmo.tgbotapi.extensions.api.answers.answerCallbackQuery
10- import dev.inmo.tgbotapi.extensions.api.edit.ReplyMarkup.editMessageReplyMarkup
1110import dev.inmo.tgbotapi.extensions.api.send.reply
12- import dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery
13- import dev.inmo.tgbotapi.types.CallbackQuery.MessageDataCallbackQuery
1411import dev.inmo.tgbotapi.types.MessageEntity.textsources.TextLinkTextSource
1512import dev.inmo.tgbotapi.types.MessageEntity.textsources.URLTextSource
1613import dev.inmo.tgbotapi.types.ParseMode.MarkdownV2ParseMode
@@ -26,14 +23,21 @@ import kotlinx.coroutines.launch
2623import kotlinx.coroutines.supervisorScope
2724import org.apache.logging.log4j.LogManager
2825
26+ private fun votesConstructor (votesId : String ): Votes = Votes (votesId, listOf (" \uD83D\uDC4D " , " \uD83D\uDC4E " ))
27+
2928class JEPUpdateProcessor (
3029 private val jepSummary : JEPSummary ,
3130 private val votesDAO : VotesDAO ,
3231 private val bot : RequestsExecutor ,
33- ) : UpdateProcessor {
32+ ) : VotingProcessor(
33+ " JEP" ,
34+ votesDAO,
35+ ::votesConstructor,
36+ bot,
37+ ), UpdateProcessor {
3438 companion object {
35- val logger = LogManager .getLogger(JEPUpdateProcessor ::class .java)!!
36- val linkRegex = " https?://openjdk\\ .java\\ .net/jeps/(\\ d+)/?" .toRegex()
39+ private val logger = LogManager .getLogger(JEPUpdateProcessor ::class .java)!!
40+ private val linkRegex = " https?://openjdk\\ .java\\ .net/jeps/(\\ d+)/?" .toRegex()
3741 }
3842
3943 override suspend fun process (update : Update ) {
@@ -57,27 +61,6 @@ class JEPUpdateProcessor(
5761 }
5862 }
5963
60- private suspend fun processCallbackQuery (callbackQuery : CallbackQuery ) {
61- logger.debug(" Processing callback query: {}" , callbackQuery)
62-
63- (callbackQuery as ? MessageDataCallbackQuery )?.data?.takeIf { it.startsWith(" JEP" ) }?.let { data ->
64- val (votesId, vote) = data.split(" :" ).takeIf { it.size == 2 } ? : return
65- val fromUserId = callbackQuery.user.id.chatId.toString()
66-
67- logger.debug(" Tracking {}'s '{}' vote for {}" , fromUserId, vote, votesId)
68-
69- val votes = votesDAO.get(votesId) ? : votesId.toVotes()
70- val updatedVotes = votes.copy(votes = votes.votes + (fromUserId to vote))
71-
72- votesDAO.save(updatedVotes)
73- bot.answerCallbackQuery(callbackQuery)
74- bot.editMessageReplyMarkup(
75- message = callbackQuery.message,
76- replyMarkup = updatedVotes.toInlineKeyboardMarkup()
77- )
78- }
79- }
80-
8164 private fun extractJEPs (message : Message ): List <String >? =
8265 (message as ? ContentMessage <* >)?.let { contentMessage ->
8366 (contentMessage.content as ? TextContent )?.let { content ->
@@ -107,7 +90,7 @@ class JEPUpdateProcessor(
10790 " Cast your vote for *JEP $jep * now ⤵️"
10891 }
10992 val votesId = jep.toVotesID()
110- val votes = votesDAO.get(votesId) ? : votesId.toVotes( )
93+ val votes = votesDAO.get(votesId) ? : votesConstructor(votesId )
11194
11295 bot.reply(
11396 to = message,
@@ -116,8 +99,4 @@ class JEPUpdateProcessor(
11699 replyMarkup = votes.toInlineKeyboardMarkup()
117100 )
118101 }
119-
120- private fun String.toVotesID () = " JEP-$this "
121-
122- private fun String.toVotes () = Votes (this , listOf (" \uD83D\uDC4D " , " \uD83D\uDC4E " ))
123102}
0 commit comments