1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-12-22 16:47:13 +00:00
Type-safe library for work with Telegram Bot API
Go to file
2021-10-18 17:13:30 +06:00
.github Merge pull request #474 from InsanusMokrassar/0.36.0 2021-10-18 17:13:30 +06:00
docs BehaviourBuilder FSM extension 2021-10-13 14:22:01 +06:00
gradle/wrapper update gradle wrapper 2021-08-22 11:09:35 +06:00
resources packages update 2021-10-18 15:20:25 +06:00
tgbotapi small fix 2021-10-18 15:38:42 +06:00
tgbotapi.api cleanup 'extension' suffix in readmes 2021-10-18 15:37:10 +06:00
tgbotapi.behaviour_builder deprecate several behaviour builder methods 2021-10-18 15:48:24 +06:00
tgbotapi.behaviour_builder.fsm deprecate several behaviour builder methods 2021-10-18 15:48:24 +06:00
tgbotapi.core cleanup 'extension' suffix in readmes 2021-10-18 15:37:10 +06:00
tgbotapi.extensions.api update publish scripts of old packages 2021-10-18 15:23:43 +06:00
tgbotapi.extensions.behaviour_builder update publish scripts of old packages 2021-10-18 15:23:43 +06:00
tgbotapi.extensions.behaviour_builder.fsm update publish scripts of old packages 2021-10-18 15:23:43 +06:00
tgbotapi.extensions.utils update publish scripts of old packages 2021-10-18 15:23:43 +06:00
tgbotapi.utils cleanup 'extension' suffix in readmes 2021-10-18 15:37:10 +06:00
_config.yml Set theme jekyll-theme-cayman 2020-01-06 22:44:23 +06:00
.gitignore add publication of github release via changelog 2020-09-22 18:04:10 +06:00
.travis.yml update travis config 2020-10-22 19:19:55 +06:00
build.gradle BehaviourBuilder FSM extension 2021-10-13 14:22:01 +06:00
changelog_info_retriever update changelog parser 2020-10-04 17:43:25 +06:00
CHANGELOG.md add telegraph note 2021-10-18 16:43:37 +06:00
CONTRIBUTING.md Create CONTRIBUTING.md 2020-10-02 13:10:01 +06:00
gradle.properties update microutils 2021-10-18 14:13:22 +06:00
gradlew init 2018-12-26 16:21:52 +08:00
gradlew.bat init 2018-12-26 16:21:52 +08:00
LICENSE Update LICENSE 2020-02-19 22:29:53 +06:00
README.md cleanup 'extension' suffix in readmes 2021-10-18 15:37:10 +06:00
renovate.json Add renovate.json 2020-08-12 20:21:10 +00:00
settings.gradle packages update 2021-10-18 15:20:25 +06:00
TelegramBotAPI.drawio packages update 2021-10-18 15:20:25 +06:00

Participate in our common survey ☺

TelegramBotAPI

Table of contents generated with markdown-toc

Hello! This is a set of libraries for working with Telegram Bot API.

Common info Awesome Kotlin Badge Build Status Small survey
Useful links Chat in Telegram Create bot KDocs Examples, Mini tutorial
TelegramBotAPI Core status Maven Central
TelegramBotAPI API Extensions status Maven Central
TelegramBotAPI Util Extensions status Maven Central
TelegramBotAPI Behaviour Builder Extensions status Maven Central
TelegramBotAPI Behaviour Builder Extensions status Maven Central
TelegramBotAPI All status Maven Central

Examples

There are several things you need to do to launch examples below:

  • Add mavenCentral() to your project repositories
  • Add dependency implementation "dev.inmo:tgbotapi:$tgbotapi_version"
    • Replace tgbotapi_version with exact version (see last one in the table above) or put variable with this name in project
    • Alternative variant for maven here

More including instructions available here. Other configuration examples:

Most common example

suspend fun main() {
  val bot = telegramBot(TOKEN)

  bot.buildBehaviour {
    println(getMe())
  
    onCommand("start") {
      reply(it, "Hi:)")
    }
  }.join()
}

In this example you will see information about this bot at the moment of starting and answer with Hi:) every time it gets message /start

Handling only last messages

suspend fun main() {
  val bot = telegramBot(TOKEN)

  val flowsUpdatesFilter = FlowsUpdatesFilter()
  bot.buildBehaviour(flowUpdatesFilter = flowsUpdatesFilter) {
    println(getMe())
  
    onCommand("start") {
      reply(it, "Hi:)")
    }

    retrieveAccumulatedUpdates(this).join()
  }
}

The main difference with the previous example is that bot will get only last updates (accumulated before bot launch and maybe some updates it got after launch)

Build a little bit more complex behaviour

suspend fun main() {
  val bot = telegramBot(TOKEN)

  bot.buildBehaviour {
    println(getMe())

    val nameReplyMarkup = ReplyKeyboardMarkup(
      matrix {
        row {
          +SimpleKeyboardButton("nope")
        }
      }
    )
    onCommand("start") {
      val photo = waitPhoto(
        SendTextMessage(it.chat.id, "Send me your photo please")
      ).first()

      val name = waitText(
        SendTextMessage(
          it.chat.id,
          "Send me your name or choose \"nope\"",
          replyMarkup = nameReplyMarkup
        )
      ).first().text.takeIf { it != "nope" }

      sendPhoto(
        it.chat,
        photo.mediaCollection,
        entities = buildEntities {
          if (name != null) regular(name) // may be collapsed up to name ?.let(::regular)
        }
      )
    }
  }.join()
}

More examples

You may find examples in this project. Besides, you are always welcome in our wiki and chat.