update dependencies and RandomFileSenderBot example

This commit is contained in:
InsanusMokrassar 2021-09-08 23:00:19 +06:00
parent c07f4f2ed1
commit aee0943a5e
2 changed files with 56 additions and 13 deletions

View File

@ -1,12 +1,21 @@
import dev.inmo.tgbotapi.bot.Ktor.telegramBot import dev.inmo.tgbotapi.bot.Ktor.telegramBot
import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.extensions.api.bot.getMe import dev.inmo.tgbotapi.extensions.api.bot.getMe
import dev.inmo.tgbotapi.extensions.api.bot.setMyCommands import dev.inmo.tgbotapi.extensions.api.bot.setMyCommands
import dev.inmo.tgbotapi.extensions.api.send.media.sendDocument import dev.inmo.tgbotapi.extensions.api.send.media.sendDocument
import dev.inmo.tgbotapi.extensions.api.send.media.sendDocumentsGroup
import dev.inmo.tgbotapi.extensions.api.send.reply import dev.inmo.tgbotapi.extensions.api.send.reply
import dev.inmo.tgbotapi.extensions.api.send.withUploadDocumentAction
import dev.inmo.tgbotapi.extensions.behaviour_builder.buildBehaviour import dev.inmo.tgbotapi.extensions.behaviour_builder.buildBehaviour
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommandWithArgs
import dev.inmo.tgbotapi.requests.abstracts.asMultipartFile
import dev.inmo.tgbotapi.requests.abstracts.toInputFile import dev.inmo.tgbotapi.requests.abstracts.toInputFile
import dev.inmo.tgbotapi.types.BotCommand import dev.inmo.tgbotapi.types.BotCommand
import dev.inmo.tgbotapi.types.InputMedia.DocumentMediaGroupMemberInputMedia
import dev.inmo.tgbotapi.types.InputMedia.InputMediaDocument
import dev.inmo.tgbotapi.types.chat.abstracts.Chat
import dev.inmo.tgbotapi.types.mediaCountInMediaGroup
import kotlinx.coroutines.* import kotlinx.coroutines.*
import java.io.File import java.io.File
@ -27,21 +36,55 @@ suspend fun main(args: Array<String>) {
} }
} }
val bot = telegramBot(botToken) suspend fun TelegramBot.sendFiles(chat: Chat, files: List<File>) {
val scope = CoroutineScope(Dispatchers.Default) when (files.size) {
1 -> sendDocument(
bot.buildBehaviour(scope) { chat.id,
onCommand(command.toRegex()) { message -> files.first().asMultipartFile()
pickFile() ?.let { )
bot.sendDocument( else -> sendDocumentsGroup(
message.chat.id, chat,
it.toInputFile() files.map { InputMediaDocument(it.asMultipartFile()) }
) )
} ?: bot.reply(message, "Nothing selected :(")
} }
}
val bot = telegramBot(botToken)
bot.buildBehaviour(defaultExceptionsHandler = { it.printStackTrace() }) {
onCommandWithArgs(command) { message, args ->
withUploadDocumentAction(message.chat) {
val count = args.firstOrNull() ?.toIntOrNull() ?: 1
var sent = false
var left = count
val chosen = mutableListOf<File>()
while (left > 0) {
left--
val picked = pickFile() ?: continue
chosen.add(picked)
if (chosen.size >= mediaCountInMediaGroup.last) {
sendFiles(message.chat, chosen)
chosen.clear()
sent = true
}
}
sendFiles(message.chat, chosen)
sent || chosen.isNotEmpty()
if (!sent) {
bot.reply(message, "Nothing selected :(")
}
}
}
setMyCommands( setMyCommands(
BotCommand(command, "Send some random file in picker directory") BotCommand(command, "Send some random file in picker directory")
) )
println(getMe()) println(getMe())
}.join() }.join()
} }

View File

@ -3,5 +3,5 @@ org.gradle.parallel=true
kotlin_version=1.5.30 kotlin_version=1.5.30
telegram_bot_api_version=0.35.7 telegram_bot_api_version=0.35.8
micro_utils_version=0.5.24 micro_utils_version=0.5.25