@@ -6,6 +6,7 @@ import dev.inmo.tgbotapi.extensions.api.bot.getMe
66import dev.inmo.tgbotapi.extensions.api.bot.setMyCommands
77import dev.inmo.tgbotapi.extensions.api.send.reply
88import dev.inmo.tgbotapi.extensions.api.send.send
9+ import dev.inmo.tgbotapi.extensions.api.set.setUserEmojiStatus
910import dev.inmo.tgbotapi.extensions.api.telegramBot
1011import dev.inmo.tgbotapi.extensions.behaviour_builder.buildBehaviourWithLongPolling
1112import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onBaseInlineQuery
@@ -16,12 +17,9 @@ import dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard
1617import dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard
1718import dev.inmo.tgbotapi.extensions.utils.types.buttons.webAppButton
1819import dev.inmo.tgbotapi.requests.answers.InlineQueryResultsButton
19- import dev.inmo.tgbotapi.types.BotCommand
20+ import dev.inmo.tgbotapi.types.*
2021import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultArticle
2122import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputTextMessageContent
22- import dev.inmo.tgbotapi.types.InlineQueryId
23- import dev.inmo.tgbotapi.types.LinkPreviewOptions
24- import dev.inmo.tgbotapi.types.webAppQueryIdField
2523import dev.inmo.tgbotapi.types.webapps.WebAppInfo
2624import dev.inmo.tgbotapi.utils.*
2725import io.ktor.http.*
@@ -30,7 +28,6 @@ import io.ktor.server.http.content.*
3028import io.ktor.server.request.*
3129import io.ktor.server.response.*
3230import io.ktor.server.routing.*
33- import kotlinx.coroutines.Dispatchers
3431import kotlinx.serialization.json.Json
3532import java.io.File
3633
@@ -105,6 +102,26 @@ suspend fun main(vararg args: String) {
105102
106103 call.respond(HttpStatusCode .OK , isSafe.toString())
107104 }
105+ post(" setCustomEmoji" ) {
106+ val requestBody = call.receiveText()
107+ val webAppCheckData = Json .decodeFromString(WebAppDataWrapper .serializer(), requestBody)
108+
109+ val isSafe = telegramBotAPIUrlsKeeper.checkWebAppData(webAppCheckData.data, webAppCheckData.hash)
110+ val rawUserId = call.parameters[userIdField] ?.toLongOrNull() ?.let (::RawChatId ) ? : error(" $userIdField should be presented as long value" )
111+
112+ val set = if (isSafe) {
113+ runCatching {
114+ bot.setUserEmojiStatus(
115+ UserId (rawUserId),
116+ CustomEmojiIdToSet
117+ )
118+ }.getOrElse { false }
119+ } else {
120+ false
121+ }
122+
123+ call.respond(HttpStatusCode .OK , set.toString())
124+ }
108125 }
109126 }.start(false )
110127
0 commit comments