This commit is contained in:
InsanusMokrassar 2020-06-02 19:28:10 +06:00
parent b28fd5252b
commit 656b8b6774
7 changed files with 102 additions and 19 deletions

View File

@ -1,38 +1,24 @@
buildscript {
repositories {
mavenLocal()
jcenter()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
}
}
plugins {
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version"
}
apply plugin: 'kotlin'
apply plugin: 'application'
project.version = "0.1.0"
project.group = "com.insanusmokrassar"
mainClassName="com.insanusmokrassar.examples.ForwarderBotKt"
repositories {
mavenLocal()
jcenter()
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
implementation "com.github.insanusmokrassar:TelegramBotAPI:$telegram_bot_api_version"
implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-api:$telegram_bot_api_version"
implementation "com.github.insanusmokrassar:TelegramBotAPI-all:$telegram_bot_api_version"
}

View File

@ -33,7 +33,7 @@ suspend fun main(args: Array<String>) {
is UserForwardInfo -> forwardInfo.from.let { user ->
"User ${user.id.chatId.toString().codeMarkdownV2()} " + "(${user.firstName} ${user.lastName}: ${user.username ?.username ?: "Without username"})".regularMarkdownV2()
}
is ForwardFromChannelInfo -> "Channel (".regularMarkdownV2() + (forwardInfo.channelChat as ChannelChat).title.codeMarkdownV2() + ")".regularMarkdownV2()
is ForwardFromChannelInfo -> "Channel (".regularMarkdownV2() + (forwardInfo.channelChat).title.codeMarkdownV2() + ")".regularMarkdownV2()
}
} else {
"There is no forward info"

View File

@ -0,0 +1,9 @@
# RandomFileSenderBot
This bot will send random file from input folder OR from bot working folder
## Launch
```bash
../gradlew run --args="BOT_TOKEN[ optional/folder/path]"
```

View File

@ -0,0 +1,24 @@
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
apply plugin: 'application'
mainClassName="com.insanusmokrassar.examples.RandomFileSenderBotKt"
repositories {
jcenter()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "com.github.insanusmokrassar:TelegramBotAPI-all:$telegram_bot_api_version"
}

View File

@ -0,0 +1,64 @@
package com.insanusmokrassar.examples
import com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.KtorRequestsExecutor
import com.github.insanusmokrassar.TelegramBotAPI.extensions.api.send.sendTextMessage
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.textsources.BotCommandTextSource
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.MarkdownV2
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.ChannelChat
import com.github.insanusmokrassar.TelegramBotAPI.types.message.*
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.TextContent
import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.BaseMessageUpdate
import com.github.insanusmokrassar.TelegramBotAPI.utils.*
import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdateReceiver
import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.startGettingOfUpdates
import kotlinx.coroutines.*
/**
* This bot will always return message about forwarder. In cases when sent message was not a forward message it will
* send suitable message
*/
suspend fun main(args: Array<String>) {
val botToken = args.first()
val bot = KtorRequestsExecutor(TelegramAPIUrlsKeeper(botToken))
val scope = CoroutineScope(Dispatchers.Default)
val callback: UpdateReceiver<BaseMessageUpdate> = { messageUpdate ->
val message = messageUpdate.data
val infoToSend = if (message is ContentMessage<*>) {
val content = message.content
when (content) {
is TextContent -> {
val commandSource = (content.entities.singleOrNull() ?.source as? BotCommandTextSource)
if (commandSource != null && commandSource.command == "sendFile") {
// TODO
} else {
bot.sendTextMessage(message.chat, "Send me /sendFile to get random file")
}
}
}
val forwardInfo = message.forwardInfo
when (forwardInfo) {
null -> "There is no forward info"
is AnonymousForwardInfo -> "Anonymous user which signed as \"${forwardInfo.senderName.codeMarkdownV2()}\""
is UserForwardInfo -> forwardInfo.from.let { user ->
"User ${user.id.chatId.toString().codeMarkdownV2()} " + "(${user.firstName} ${user.lastName}: ${user.username ?.username ?: "Without username"})".regularMarkdownV2()
}
is ForwardFromChannelInfo -> "Channel (".regularMarkdownV2() + (forwardInfo.channelChat as ChannelChat).title.codeMarkdownV2() + ")".regularMarkdownV2()
}
} else {
"There is no forward info"
}
bot.sendTextMessage(message.chat, infoToSend, MarkdownV2)
}
bot.startGettingOfUpdates(
messageCallback = callback,
channelPostCallback = callback,
scope = scope
)
scope.coroutineContext[Job]!!.join()
}

View File

@ -1,4 +1,3 @@
kotlin_version=1.3.61
kotlin_coroutines_version=1.3.3
kotlin_version=1.3.72
telegram_bot_api_version=0.23.3
telegram_bot_api_version=0.27.5

View File

@ -1 +1,2 @@
include ":ForwarderBot"
include ":RandomFileSenderBot"