mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI-examples.git
synced 2025-09-05 16:19:43 +00:00
complete forwarder bot exmple
This commit is contained in:
38
ForwarderBot/build.gradle
Normal file
38
ForwarderBot/build.gradle
Normal file
@@ -0,0 +1,38 @@
|
||||
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.main"
|
||||
|
||||
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"
|
||||
}
|
@@ -0,0 +1,50 @@
|
||||
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.ParseMode.MarkdownV2
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.PossiblyForwardedMessage
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.BaseMessageUpdate
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
|
||||
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 PossiblyForwardedMessage) {
|
||||
val forwardInfo = message.forwardInfo
|
||||
when (forwardInfo) {
|
||||
null -> "There is no forward info"
|
||||
is AnonymousForwardInfo -> "Anonymous user which signed as \"${forwardInfo.senderName}\""
|
||||
is UserForwardInfo -> forwardInfo.from.let { user ->
|
||||
"User `${user.id.chatId}` (`${user.firstName} ${user.lastName}`: ${user.username ?.username ?: "Without username"})"
|
||||
}
|
||||
is ForwardFromChannelInfo -> "Channel (${forwardInfo.channelChat})"
|
||||
}
|
||||
} else {
|
||||
"There is no forward info"
|
||||
}
|
||||
bot.sendTextMessage(message.chat, infoToSend, MarkdownV2)
|
||||
}
|
||||
|
||||
bot.startGettingOfUpdates(
|
||||
messageCallback = callback,
|
||||
channelPostCallback = callback,
|
||||
scope = scope
|
||||
)
|
||||
|
||||
scope.coroutineContext[Job]!!.join()
|
||||
}
|
Reference in New Issue
Block a user