mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI-examples.git
synced 2024-12-22 08:37:18 +00:00
start migration onto 0.38.20
This commit is contained in:
parent
bf0c6497fe
commit
df778b4e93
@ -1,14 +1,18 @@
|
||||
import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions
|
||||
import dev.inmo.tgbotapi.types.webAppQueryIdField
|
||||
import dev.inmo.tgbotapi.webapps.*
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.client.request.*
|
||||
import io.ktor.client.statement.HttpResponse
|
||||
import io.ktor.client.statement.readText
|
||||
import io.ktor.http.encodeURLPath
|
||||
import io.ktor.http.*
|
||||
import io.ktor.http.content.TextContent
|
||||
import kotlinx.browser.document
|
||||
import kotlinx.browser.window
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.dom.appendElement
|
||||
import kotlinx.dom.appendText
|
||||
import org.w3c.dom.HTMLElement
|
||||
|
||||
fun main() {
|
||||
console.log("Web app started")
|
||||
@ -16,12 +20,25 @@ fun main() {
|
||||
val scope = CoroutineScope(Dispatchers.Default)
|
||||
runCatching {
|
||||
document.body ?.appendElement("button") {
|
||||
addEventListener(
|
||||
"click",
|
||||
{
|
||||
webApp.sendData("Clicked")
|
||||
(this as HTMLElement).onclick = {
|
||||
scope.launchSafelyWithoutExceptions {
|
||||
HttpClient().post<HttpResponse>("${window.location.origin.removeSuffix("/")}/inline") {
|
||||
parameter(webAppQueryIdField, webApp.initDataUnsafe.queryId)
|
||||
body = "Clicked"
|
||||
contentType(ContentType.Text.Plain)
|
||||
}
|
||||
handleResult(
|
||||
{ "Clicked" }
|
||||
) {
|
||||
HttpClient().post<HttpResponse>(
|
||||
"${window.location.origin}/inline"
|
||||
) {
|
||||
parameter(webAppQueryIdField, it)
|
||||
body = "Clicked"
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
appendText("Example button")
|
||||
} ?: window.alert("Unable to load body")
|
||||
webApp.apply {
|
||||
|
@ -1,14 +1,26 @@
|
||||
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
|
||||
import dev.inmo.micro_utils.ktor.server.createKtorServer
|
||||
import dev.inmo.tgbotapi.extensions.api.answers.answer
|
||||
import dev.inmo.tgbotapi.extensions.api.bot.getMe
|
||||
import dev.inmo.tgbotapi.extensions.api.bot.setMyCommands
|
||||
import dev.inmo.tgbotapi.extensions.api.send.*
|
||||
import dev.inmo.tgbotapi.extensions.api.telegramBot
|
||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.*
|
||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.*
|
||||
import dev.inmo.tgbotapi.extensions.utils.types.buttons.*
|
||||
import dev.inmo.tgbotapi.types.BotCommand
|
||||
import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.InlineQueryResultArticle
|
||||
import dev.inmo.tgbotapi.types.InlineQueries.InputMessageContent.InputTextMessageContent
|
||||
import dev.inmo.tgbotapi.types.webAppQueryIdField
|
||||
import dev.inmo.tgbotapi.types.webapps.WebAppInfo
|
||||
import io.ktor.application.call
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import io.ktor.http.content.*
|
||||
import io.ktor.request.receiveText
|
||||
import io.ktor.response.respond
|
||||
import io.ktor.routing.*
|
||||
import io.ktor.server.tomcat.Tomcat
|
||||
import io.ktor.utils.io.readRemaining
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import java.io.File
|
||||
|
||||
@ -21,6 +33,7 @@ import java.io.File
|
||||
* Will start the server to share the static (index.html and WebApp.js) on 0.0.0.0:8080
|
||||
*/
|
||||
suspend fun main(vararg args: String) {
|
||||
val bot = telegramBot(args.first(), testServer = args.any { it == "testServer" })
|
||||
createKtorServer(
|
||||
Tomcat,
|
||||
"0.0.0.0",
|
||||
@ -32,19 +45,26 @@ suspend fun main(vararg args: String) {
|
||||
routing {
|
||||
static {
|
||||
files(File("WebApp/build/distributions"))
|
||||
default("WebApp/build/distributions/index.html")
|
||||
}
|
||||
post("inline") {
|
||||
val requestBody = call.receiveText()
|
||||
val queryId = call.parameters[webAppQueryIdField] ?: error("$webAppQueryIdField should be presented")
|
||||
|
||||
bot.answer(queryId, InlineQueryResultArticle(queryId, "Result", InputTextMessageContent(requestBody)))
|
||||
call.respond(HttpStatusCode.OK)
|
||||
}
|
||||
}
|
||||
}.start(false)
|
||||
|
||||
telegramBotWithBehaviourAndLongPolling(
|
||||
args.first(),
|
||||
bot.buildBehaviourWithLongPolling(
|
||||
defaultExceptionsHandler = { it.printStackTrace() }
|
||||
) {
|
||||
onCommand("start") {
|
||||
onCommand("reply_markup") {
|
||||
reply(
|
||||
it,
|
||||
"Button",
|
||||
replyMarkup = replyKeyboard {
|
||||
replyMarkup = replyKeyboard(resizeKeyboard = true, oneTimeKeyboard = true) {
|
||||
row {
|
||||
webAppButton("Open WebApp", WebAppInfo(args[1]))
|
||||
}
|
||||
@ -52,9 +72,25 @@ suspend fun main(vararg args: String) {
|
||||
|
||||
)
|
||||
}
|
||||
onCommand("inline") {
|
||||
reply(
|
||||
it,
|
||||
"Button",
|
||||
replyMarkup = inlineKeyboard {
|
||||
row {
|
||||
webAppButton("Open WebApp", WebAppInfo(args[1]))
|
||||
}
|
||||
}
|
||||
|
||||
)
|
||||
}
|
||||
setMyCommands(
|
||||
BotCommand("reply_markup", "Use to get reply markup keyboard with web app trigger"),
|
||||
BotCommand("inline", "Use to get inline keyboard with web app trigger"),
|
||||
)
|
||||
allUpdatesFlow.subscribeSafelyWithoutExceptions(this) {
|
||||
println(it)
|
||||
}
|
||||
println(getMe())
|
||||
}.second.join()
|
||||
}.join()
|
||||
}
|
||||
|
@ -3,6 +3,6 @@ org.gradle.parallel=true
|
||||
|
||||
|
||||
kotlin_version=1.6.10
|
||||
telegram_bot_api_version=0.38.19
|
||||
telegram_bot_api_version=0.38.20
|
||||
micro_utils_version=0.9.24
|
||||
ktor_version=1.6.8
|
||||
|
Loading…
Reference in New Issue
Block a user