Popularity
4.5
Growing
Activity
9.5
Growing
89
2
11

Description

Library for Object-Oriented and type-safe work with Telegram Bot API.

Programming language: Kotlin
License: Apache License 2.0
Tags: Library     KotlinJS     KotlinJVM     Multiplatform     Telegram-bot-api    
Latest version: v0.35.9

TelegramBotAPI alternatives and similar libraries

Based on the "Multiplatform" category.
Alternatively, view TelegramBotAPI alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of TelegramBotAPI or a related project?

Add another 'Multiplatform' Library

README

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](badges/chat.svg) [Create bot](badges/template.svg) [KDocs](badges/kdocs.svg) 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 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.