TelegramBotAPI-examples/HelloBot/src/main/kotlin/HelloBot.kt

53 lines
2.3 KiB
Kotlin
Raw Normal View History

import dev.inmo.micro_utils.coroutines.safely
2020-10-04 11:32:50 +00:00
import dev.inmo.tgbotapi.extensions.api.chat.get.getChat
2020-10-04 13:18:16 +00:00
import dev.inmo.tgbotapi.extensions.api.send.reply
2020-10-04 11:32:50 +00:00
import dev.inmo.tgbotapi.extensions.api.send.sendTextMessage
import dev.inmo.tgbotapi.bot.Ktor.telegramBot
2021-06-27 19:14:16 +00:00
import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviour
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onContentMessage
import dev.inmo.tgbotapi.extensions.utils.asChannelChat
2020-10-04 11:32:50 +00:00
import dev.inmo.tgbotapi.extensions.utils.formatting.linkMarkdownV2
import dev.inmo.tgbotapi.extensions.utils.formatting.textMentionMarkdownV2
2021-03-12 09:48:31 +00:00
import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.longPolling
2020-10-04 11:32:50 +00:00
import dev.inmo.tgbotapi.types.ParseMode.MarkdownV2
import dev.inmo.tgbotapi.types.User
import dev.inmo.tgbotapi.types.chat.abstracts.*
import dev.inmo.tgbotapi.utils.extensions.escapeMarkdownV2Common
2020-06-02 15:22:09 +00:00
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
2020-06-02 15:48:07 +00:00
/**
* The main purpose of this bot is just to answer "Oh, hi, " and add user mention here
*/
2020-06-02 15:22:09 +00:00
suspend fun main(vararg args: String) {
val botToken = args.first()
2021-06-27 19:14:16 +00:00
telegramBotWithBehaviour(botToken, CoroutineScope(Dispatchers.IO)) {
onContentMessage { message ->
val chat = message.chat
if (chat is ChannelChat) {
val answer = "Hi everybody in this channel \"${chat.title}\""
sendTextMessage(chat, answer, MarkdownV2)
return@onContentMessage
2020-06-02 15:22:09 +00:00
}
2021-06-27 19:14:16 +00:00
val answerText = "Oh, hi, " + when (chat) {
is PrivateChat -> "${chat.firstName} ${chat.lastName}".textMentionMarkdownV2(chat.id)
is User -> "${chat.firstName} ${chat.lastName}".textMentionMarkdownV2(chat.id)
is SupergroupChat -> (chat.username ?.username ?: getChat(chat).inviteLink) ?.let {
chat.title.linkMarkdownV2(it)
} ?: chat.title
is GroupChat -> bot.getChat(chat).inviteLink ?.let {
chat.title.linkMarkdownV2(it)
} ?: chat.title
else -> "Unknown :(".escapeMarkdownV2Common()
}
2021-06-27 19:14:16 +00:00
reply(
message,
answerText,
MarkdownV2
)
}
}.second.join()
}