mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI-examples.git
synced 2025-12-27 08:29:10 +00:00
Compare commits
24 Commits
9.2.0
...
b1b8d0eb75
| Author | SHA1 | Date | |
|---|---|---|---|
| b1b8d0eb75 | |||
| 2ac23f70ab | |||
| e155373655 | |||
| d842dab5b8 | |||
| 7186d5e624 | |||
|
|
8fefb17599 | ||
| bcf4ae5888 | |||
| 7090db148e | |||
| 7d786f0e06 | |||
| c88f84011f | |||
| b8cc8854ea | |||
| 13470999e8 | |||
| af04a854ef | |||
| 44e86c9349 | |||
| 65c32d97d5 | |||
| 9b7605591e | |||
| 89d5a4f911 | |||
| 53cf212175 | |||
| 28301a92c9 | |||
| f814b11777 | |||
| 9773a74890 | |||
| a81cfaaba9 | |||
|
|
ee599611f3 | ||
| d3d6cd16c6 |
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@@ -11,9 +11,9 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt install -y libcurl4-openssl-dev
|
sudo apt install -y libcurl4-openssl-dev
|
||||||
- name: Set up JDK 11
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v1
|
||||||
with:
|
with:
|
||||||
java-version: 11
|
java-version: 17
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: ./gradlew build
|
run: ./gradlew build
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
|
import dev.inmo.kslog.common.KSLog
|
||||||
|
import dev.inmo.kslog.common.LogLevel
|
||||||
|
import dev.inmo.kslog.common.defaultMessageFormatter
|
||||||
|
import dev.inmo.kslog.common.filter.filtered
|
||||||
|
import dev.inmo.kslog.common.setDefaultKSLog
|
||||||
import dev.inmo.tgbotapi.bot.ktor.telegramBot
|
import dev.inmo.tgbotapi.bot.ktor.telegramBot
|
||||||
import dev.inmo.tgbotapi.extensions.api.bot.getMe
|
import dev.inmo.tgbotapi.extensions.api.bot.getMe
|
||||||
|
import dev.inmo.tgbotapi.utils.DefaultKTgBotAPIKSLog
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is one of the most easiest bot - it will just print information about itself
|
* This is one of the most easiest bot - it will just print information about itself
|
||||||
@@ -7,6 +13,11 @@ import dev.inmo.tgbotapi.extensions.api.bot.getMe
|
|||||||
suspend fun main(vararg args: String) {
|
suspend fun main(vararg args: String) {
|
||||||
val botToken = args.first()
|
val botToken = args.first()
|
||||||
|
|
||||||
|
setDefaultKSLog(
|
||||||
|
KSLog { level: LogLevel, tag: String?, message: Any, throwable: Throwable? ->
|
||||||
|
println(defaultMessageFormatter(level, tag, message, throwable))
|
||||||
|
}
|
||||||
|
)
|
||||||
val bot = telegramBot(botToken)
|
val bot = telegramBot(botToken)
|
||||||
|
|
||||||
println(bot.getMe())
|
println(bot.getMe())
|
||||||
|
|||||||
@@ -32,16 +32,16 @@ suspend fun main(vararg args: String) {
|
|||||||
val chat = message.chat
|
val chat = message.chat
|
||||||
|
|
||||||
val answerText = when (val chat = message.chat) {
|
val answerText = when (val chat = message.chat) {
|
||||||
is ChannelChat -> {
|
is PreviewChannelChat -> {
|
||||||
val answer = "Hi everybody in this channel \"${chat.title}\""
|
val answer = "Hi everybody in this channel \"${chat.title}\""
|
||||||
reply(message, answer, MarkdownV2)
|
reply(message, answer, MarkdownV2)
|
||||||
return@onMentionWithAnyContent
|
return@onMentionWithAnyContent
|
||||||
}
|
}
|
||||||
is PrivateChat -> {
|
is PreviewPrivateChat -> {
|
||||||
reply(message, "Hi, " + "${chat.firstName} ${chat.lastName}".textMentionMarkdownV2(chat.id), MarkdownV2)
|
reply(message, "Hi, " + "${chat.firstName} ${chat.lastName}".textMentionMarkdownV2(chat.id), MarkdownV2)
|
||||||
return@onMentionWithAnyContent
|
return@onMentionWithAnyContent
|
||||||
}
|
}
|
||||||
is GroupChat -> {
|
is PreviewGroupChat -> {
|
||||||
message.ifFromChannelGroupContentMessage {
|
message.ifFromChannelGroupContentMessage {
|
||||||
val answer = "Hi, ${it.senderChat.title}"
|
val answer = "Hi, ${it.senderChat.title}"
|
||||||
reply(message, answer, MarkdownV2)
|
reply(message, answer, MarkdownV2)
|
||||||
@@ -56,9 +56,7 @@ suspend fun main(vararg args: String) {
|
|||||||
} ?: chat.title
|
} ?: chat.title
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is UnknownExtendedChat,
|
|
||||||
is UnknownChatType -> "Unknown :(".escapeMarkdownV2Common()
|
is UnknownChatType -> "Unknown :(".escapeMarkdownV2Common()
|
||||||
else -> error("Something went wrong: unknown type of chat $chat")
|
|
||||||
}
|
}
|
||||||
reply(
|
reply(
|
||||||
message,
|
message,
|
||||||
|
|||||||
@@ -16,15 +16,9 @@ apply plugin: 'application'
|
|||||||
|
|
||||||
mainClassName="InlineQueriesBotKt"
|
mainClassName="InlineQueriesBotKt"
|
||||||
|
|
||||||
|
apply from: "$nativePartTemplate"
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
def hostOs = System.getProperty("os.name")
|
|
||||||
def isMingwX64 = hostOs.startsWith("Windows")
|
|
||||||
def nativeTarget
|
|
||||||
if (hostOs == "Linux") nativeTarget = linuxX64("native") { binaries { executable() } }
|
|
||||||
else if (isMingwX64) nativeTarget = mingwX64("native") { binaries { executable() } }
|
|
||||||
else throw new GradleException("Host OS is not supported in Kotlin/Native.")
|
|
||||||
|
|
||||||
jvm()
|
jvm()
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
@@ -35,22 +29,10 @@ kotlin {
|
|||||||
api "dev.inmo:tgbotapi:$telegram_bot_api_version"
|
api "dev.inmo:tgbotapi:$telegram_bot_api_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nativeMain {
|
|
||||||
dependencies {
|
|
||||||
def engine
|
|
||||||
|
|
||||||
if (hostOs == "Linux") engine = "curl"
|
|
||||||
else if (isMingwX64) engine = "winhttp"
|
|
||||||
else throw new GradleException("Host OS is not supported in Kotlin/Native.")
|
|
||||||
|
|
||||||
api "io.ktor:ktor-client-$engine:$ktor_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'io.ktor:ktor-client-logging-jvm:2.3.0'
|
implementation 'io.ktor:ktor-client-logging-jvm:2.3.5'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
|
|||||||
import dev.inmo.tgbotapi.extensions.api.EditLiveLocationInfo
|
import dev.inmo.tgbotapi.extensions.api.EditLiveLocationInfo
|
||||||
import dev.inmo.tgbotapi.extensions.api.chat.get.getChat
|
import dev.inmo.tgbotapi.extensions.api.chat.get.getChat
|
||||||
import dev.inmo.tgbotapi.extensions.api.edit.edit
|
import dev.inmo.tgbotapi.extensions.api.edit.edit
|
||||||
|
import dev.inmo.tgbotapi.extensions.api.edit.location.live.stopLiveLocation
|
||||||
import dev.inmo.tgbotapi.extensions.api.handleLiveLocation
|
import dev.inmo.tgbotapi.extensions.api.handleLiveLocation
|
||||||
import dev.inmo.tgbotapi.extensions.api.send.*
|
import dev.inmo.tgbotapi.extensions.api.send.*
|
||||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitMessageDataCallbackQuery
|
import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.waitMessageDataCallbackQuery
|
||||||
@@ -75,7 +76,7 @@ suspend fun main(vararg args: String) {
|
|||||||
|
|
||||||
sendingJob.cancel() // ends live location
|
sendingJob.cancel() // ends live location
|
||||||
currentMessageState.value ?.let {
|
currentMessageState.value ?.let {
|
||||||
edit(it, replyMarkup = null) // removing reply keyboard
|
stopLiveLocation(it, replyMarkup = null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
allUpdatesFlow.subscribeSafelyWithoutExceptions(this) { println(it) }
|
allUpdatesFlow.subscribeSafelyWithoutExceptions(this) { println(it) }
|
||||||
|
|||||||
@@ -16,15 +16,7 @@ apply plugin: 'application'
|
|||||||
|
|
||||||
mainClassName="RandomFileSenderBotKt"
|
mainClassName="RandomFileSenderBotKt"
|
||||||
|
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
def hostOs = System.getProperty("os.name")
|
|
||||||
def isMingwX64 = hostOs.startsWith("Windows")
|
|
||||||
def nativeTarget
|
|
||||||
if (hostOs == "Linux") nativeTarget = linuxX64("native") { binaries { executable() } }
|
|
||||||
else if (isMingwX64) nativeTarget = mingwX64("native") { binaries { executable() } }
|
|
||||||
else throw new GradleException("Host OS is not supported in Kotlin/Native.")
|
|
||||||
|
|
||||||
jvm()
|
jvm()
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
@@ -35,18 +27,8 @@ kotlin {
|
|||||||
api "dev.inmo:tgbotapi:$telegram_bot_api_version"
|
api "dev.inmo:tgbotapi:$telegram_bot_api_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nativeMain {
|
|
||||||
dependencies {
|
|
||||||
def engine
|
|
||||||
|
|
||||||
if (hostOs == "Linux") engine = "curl"
|
|
||||||
else if (isMingwX64) engine = "winhttp"
|
|
||||||
else throw new GradleException("Host OS is not supported in Kotlin/Native.")
|
|
||||||
|
|
||||||
api "io.ktor:ktor-client-$engine:$ktor_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply from: "$nativePartTemplate"
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
linuxX64()
|
linuxX64()
|
||||||
mingwX64()
|
mingwX64()
|
||||||
|
linuxArm64()
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
commonMain {
|
commonMain {
|
||||||
|
|||||||
@@ -12,15 +12,9 @@ plugins {
|
|||||||
id "org.jetbrains.kotlin.multiplatform"
|
id "org.jetbrains.kotlin.multiplatform"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply from: "$nativePartTemplate"
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
def hostOs = System.getProperty("os.name")
|
|
||||||
def isMingwX64 = hostOs.startsWith("Windows")
|
|
||||||
def nativeTarget
|
|
||||||
if (hostOs == "Linux") nativeTarget = linuxX64("native") { binaries { executable() } }
|
|
||||||
else if (isMingwX64) nativeTarget = mingwX64("native") { binaries { executable() } }
|
|
||||||
else throw new GradleException("Host OS is not supported in Kotlin/Native.")
|
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
commonMain {
|
commonMain {
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -29,18 +23,6 @@ kotlin {
|
|||||||
api project(":ResenderBot:ResenderBotLib")
|
api project(":ResenderBot:ResenderBotLib")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nativeMain {
|
|
||||||
dependencies {
|
|
||||||
def engine
|
|
||||||
|
|
||||||
if (hostOs == "Linux") engine = "curl"
|
|
||||||
else if (isMingwX64) engine = "winhttp"
|
|
||||||
else throw new GradleException("Host OS is not supported in Kotlin/Native.")
|
|
||||||
|
|
||||||
api "io.ktor:ktor-client-$engine:$ktor_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,5 +18,5 @@ dependencies {
|
|||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
|
|
||||||
implementation "dev.inmo:tgbotapi:$telegram_bot_api_version"
|
implementation "dev.inmo:tgbotapi:$telegram_bot_api_version"
|
||||||
implementation 'io.ktor:ktor-client-logging-jvm:2.3.3'
|
implementation 'io.ktor:ktor-client-logging-jvm:2.3.5'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ fun main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
appendText("Exit button")
|
appendText("Answer in chat button")
|
||||||
} ?: window.alert("Unable to load body")
|
} ?: window.alert("Unable to load body")
|
||||||
|
|
||||||
document.body ?.appendElement("p", {})
|
document.body ?.appendElement("p", {})
|
||||||
|
|||||||
@@ -52,8 +52,13 @@ suspend fun main(vararg args: String) {
|
|||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
routing {
|
routing {
|
||||||
staticFiles("", File("WebApp/build/distributions")) {
|
val baseJsFolder = File("WebApp/build/dist/js/")
|
||||||
default("WebApp/build/distributions/index.html")
|
baseJsFolder.list() ?.forEach {
|
||||||
|
if (it == "productionExecutable" || it == "developmentExecutable") {
|
||||||
|
staticFiles("", File(baseJsFolder, it)) {
|
||||||
|
default("WebApp/build/dist/js/$it/index.html")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
post("inline") {
|
post("inline") {
|
||||||
val requestBody = call.receiveText()
|
val requestBody = call.receiveText()
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ buildscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
|
ext {
|
||||||
|
nativePartTemplate = "${rootProject.projectDir.absolutePath}/native_template.gradle"
|
||||||
|
}
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ org.gradle.parallel=true
|
|||||||
org.gradle.jvmargs=-Xmx2g
|
org.gradle.jvmargs=-Xmx2g
|
||||||
|
|
||||||
|
|
||||||
kotlin_version=1.8.22
|
kotlin_version=1.9.21
|
||||||
telegram_bot_api_version=9.2.0
|
telegram_bot_api_version=9.4.1
|
||||||
micro_utils_version=0.19.9
|
micro_utils_version=0.20.15
|
||||||
serialization_version=1.5.1
|
serialization_version=1.6.1
|
||||||
ktor_version=2.3.3
|
ktor_version=2.3.6
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
|||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
|
||||||
|
|||||||
20
native_template.gradle
Normal file
20
native_template.gradle
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
kotlin {
|
||||||
|
def hostOs = System.getProperty("os.name")
|
||||||
|
def isMingwX64 = hostOs.startsWith("Windows")
|
||||||
|
def isArch64 = System.getProperty("os.arch") == "aarch64"
|
||||||
|
|
||||||
|
def nativeTarget
|
||||||
|
if (hostOs == "Linux") {
|
||||||
|
if (isArch64) {
|
||||||
|
nativeTarget = linuxArm64("native") { binaries { executable() } }
|
||||||
|
} else {
|
||||||
|
nativeTarget = linuxX64("native") { binaries { executable() } }
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isMingwX64) {
|
||||||
|
nativeTarget = mingwX64("native") { binaries { executable() } }
|
||||||
|
} else {
|
||||||
|
throw new GradleException("Host OS is not supported in Kotlin/Native.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user