mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI-examples.git
synced 2025-12-05 13:55:38 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6a9921d4bd | |||
| 33b14f320c | |||
| 50ad281132 | |||
| 6abfc3d369 | |||
| f73620afec | |||
| a3d5112c83 | |||
|
|
23abae07b7 | ||
| c5a9f657cf | |||
|
|
51f7715915 | ||
|
|
bdfb900ce3 | ||
| 27790a2576 |
9
ChatAvatarSetter/README.md
Normal file
9
ChatAvatarSetter/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# ChatAvatarSetter
|
||||
|
||||
This bot will set the chat avatar based on the image sent to bot
|
||||
|
||||
## Launch
|
||||
|
||||
```bash
|
||||
../gradlew run --args="BOT_TOKEN"
|
||||
```
|
||||
21
ChatAvatarSetter/build.gradle
Normal file
21
ChatAvatarSetter/build.gradle
Normal file
@@ -0,0 +1,21 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'application'
|
||||
|
||||
mainClassName="ChatAvatarSetterKt"
|
||||
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
|
||||
implementation "dev.inmo:tgbotapi:$telegram_bot_api_version"
|
||||
}
|
||||
36
ChatAvatarSetter/src/main/kotlin/ChatAvatarSetter.kt
Normal file
36
ChatAvatarSetter/src/main/kotlin/ChatAvatarSetter.kt
Normal file
@@ -0,0 +1,36 @@
|
||||
import dev.inmo.micro_utils.coroutines.runCatchingSafely
|
||||
import dev.inmo.tgbotapi.bot.ktor.telegramBot
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.modify.setChatPhoto
|
||||
import dev.inmo.tgbotapi.extensions.api.files.downloadFile
|
||||
import dev.inmo.tgbotapi.extensions.api.send.reply
|
||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.buildBehaviourWithLongPolling
|
||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onPhoto
|
||||
import dev.inmo.tgbotapi.extensions.utils.*
|
||||
import dev.inmo.tgbotapi.requests.abstracts.asMultipartFile
|
||||
import kotlinx.coroutines.*
|
||||
|
||||
suspend fun main(args: Array<String>) {
|
||||
val bot = telegramBot(args.first())
|
||||
|
||||
bot.buildBehaviourWithLongPolling(scope = CoroutineScope(Dispatchers.IO)) {
|
||||
onPhoto {
|
||||
val bytes = downloadFile(it.content)
|
||||
runCatchingSafely {
|
||||
setChatPhoto(
|
||||
it.chat.id,
|
||||
bytes.asMultipartFile("sample.jpg")
|
||||
)
|
||||
}.onSuccess { b ->
|
||||
if (b) {
|
||||
reply(it, "Done")
|
||||
} else {
|
||||
reply(it, "Something went wrong")
|
||||
}
|
||||
}.onFailure { e ->
|
||||
e.printStackTrace()
|
||||
|
||||
reply(it, "Something went wrong (see logs)")
|
||||
}
|
||||
}
|
||||
}.join()
|
||||
}
|
||||
@@ -2,8 +2,7 @@ import dev.inmo.micro_utils.coroutines.defaultSafelyWithoutExceptionHandler
|
||||
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
|
||||
import dev.inmo.tgbotapi.extensions.api.bot.getMe
|
||||
import dev.inmo.tgbotapi.bot.ktor.telegramBot
|
||||
import dev.inmo.tgbotapi.extensions.api.get.getCustomEmojiStickerOrNull
|
||||
import dev.inmo.tgbotapi.extensions.api.get.getStickerSet
|
||||
import dev.inmo.tgbotapi.extensions.api.get.*
|
||||
import dev.inmo.tgbotapi.extensions.api.send.*
|
||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.*
|
||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.*
|
||||
@@ -14,17 +13,21 @@ import dev.inmo.tgbotapi.utils.bold
|
||||
import dev.inmo.tgbotapi.utils.buildEntities
|
||||
import kotlinx.coroutines.*
|
||||
|
||||
fun StickerSet.buildInfo() = buildEntities {
|
||||
bold("StickerSet name: ") + "${name}\n"
|
||||
bold("StickerSet title: ") + "${title}\n"
|
||||
bold(
|
||||
when (stickerType) {
|
||||
StickerType.CustomEmoji -> "Custom emoji"
|
||||
StickerType.Mask -> "Mask"
|
||||
StickerType.Regular -> "Regular"
|
||||
is StickerType.Unknown -> "Unknown type \"${stickerType.type}\""
|
||||
}
|
||||
) + " sticker set with title " + bold(title) + " and name " + bold(name)
|
||||
fun StickerSet?.buildInfo() = buildEntities {
|
||||
if (this@buildInfo == null) {
|
||||
bold("Looks like this stickerset has been removed")
|
||||
} else {
|
||||
bold("StickerSet name: ") + "${name}\n"
|
||||
bold("StickerSet title: ") + "${title}\n"
|
||||
bold(
|
||||
when (stickerType) {
|
||||
StickerType.CustomEmoji -> "Custom emoji"
|
||||
StickerType.Mask -> "Mask"
|
||||
StickerType.Regular -> "Regular"
|
||||
is StickerType.Unknown -> "Unknown type \"${stickerType.type}\""
|
||||
}
|
||||
) + " sticker set with title " + bold(title) + " and name " + bold(name)
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun activateStickerInfoBot(
|
||||
@@ -58,7 +61,7 @@ suspend fun activateStickerInfoBot(
|
||||
}
|
||||
}
|
||||
onSticker {
|
||||
val stickerSetInfo = getStickerSet(it.content.media)
|
||||
val stickerSetInfo = getStickerSetOrNull(it.content.media)
|
||||
reply(
|
||||
it,
|
||||
stickerSetInfo.buildInfo()
|
||||
|
||||
@@ -4,8 +4,8 @@ org.gradle.parallel=true
|
||||
org.gradle.jvmargs=-Xmx768m
|
||||
|
||||
|
||||
kotlin_version=1.7.10
|
||||
telegram_bot_api_version=3.2.6
|
||||
micro_utils_version=0.12.13
|
||||
serialization_version=1.4.0
|
||||
ktor_version=2.1.1
|
||||
kotlin_version=1.7.20
|
||||
telegram_bot_api_version=3.3.1
|
||||
micro_utils_version=0.13.2
|
||||
serialization_version=1.4.1
|
||||
ktor_version=2.1.3
|
||||
|
||||
@@ -21,6 +21,8 @@ include ":StickerInfoBot:jvm_launcher"
|
||||
|
||||
include ":SlotMachineDetectorBot"
|
||||
|
||||
include ":ChatAvatarSetter"
|
||||
|
||||
include ":WebApp"
|
||||
|
||||
include ":FSMBot"
|
||||
|
||||
Reference in New Issue
Block a user