Type-safe library for work with Telegram Bot API
Go to file
InsanusMokrassar 6d8190e5aa commonly of webhooks and other requests-related code 2019-04-20 12:56:48 +08:00
gradle/wrapper update version of gradle and libs 2019-02-21 12:10:21 +08:00
src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI commonly of webhooks and other requests-related code 2019-04-20 12:56:48 +08:00
.gitignore init 2018-12-26 16:21:52 +08:00
CHANGELOG.md commonly of webhooks and other requests-related code 2019-04-20 12:56:48 +08:00
LICENSE init 2018-12-26 16:21:52 +08:00
README.md Update README.md 2019-04-16 18:47:39 +08:00
build.gradle commonly of webhooks and other requests-related code 2019-04-20 12:56:48 +08:00
gradle.properties commonly of webhooks and other requests-related code 2019-04-20 12:56:48 +08:00
gradlew init 2018-12-26 16:21:52 +08:00
gradlew.bat init 2018-12-26 16:21:52 +08:00
maven.publish.gradle remove redundant part of maven.publish.gradle 2019-03-21 08:54:57 +08:00
publish.gradle add opportunity to use properties of project in user and key of bintray publication 2018-12-28 10:40:24 +08:00
settings.gradle init 2018-12-26 16:21:52 +08:00

README.md

TelegramBotAPI

Download Build Status

What is it?

It is one more project which wish to be useful and full Telegram Bots API bridge for Kotlin. Most part of some specific solves or unuseful moments are describing by official Telegram Bot API.

Compatibility

This version compatible with 14th of April 2019 update of TelegramBotAPI. There is one exception of implemented functionality. It is Telegram Passport API, which was presented in August 2018 update of TelegramBotAPI update. It will be implemented as soon as possible. All included and supported API can be found on wiki.

How to implement library?

Common ways to implement this library are presented here. In some cases it will require additional steps like inserting of additional libraries (like kotlin stdlib). In the examples will be used variable telegrambotapi.version, which must be set up by developer. Available versions are presented on bintray, next version is last published:

Download

Maven

<dependency>
  <groupId>com.github.insanusmokrassar</groupId>
  <artifactId>TelegramBotAPI</artifactId>
  <version>${telegrambotapi.version}</version>
</dependency>

Gradle

implementation "com.github.insanusmokrassar:TelegramBotAPI:${telegrambotapi.version}"

Gradle (old)

compile "com.github.insanusmokrassar:TelegramBotAPI:${telegrambotapi.version}"

How to work with library?

By default in any documentation will be meaning that you have variable in scope with names

Name of variable Description Where to get? (Examples)
executor RequestsExecutor Ktor RequestExecutor realisation

Requests Examples

Get Me

executor.execute(GetMe())

As a result you will receive User object. This object used as is now (as in API documentation), but it is possible that this class will be renamed to RawUser and you will be able to get real realisation of this object like Bot (in cases when isBot == true) or User (otherwise)

Getting updates

In this library currently realised two ways to get updates from telegram:

  • Polling - in this case bot will request updates from time to time (you can set up delay between requests)
  • Webhook via reverse proxy or something like this

Updates filters

Currently webhook method contains UpdatesFilter as necessary argument for getting updates. UpdatesFilter will sort updates and throw their into different callbacks. Currently supporting separate getting updates for media groups - they are accumulating with debounce in one second (for being sure that all objects of media group was received).

Updates polling also support UpdatesFilter but you must not use it and can get updates directly in UpdateReceiver, which you will provide to startGettingOfUpdates method

Webhook set up

If you wish to use webhook method, you will need:

  • White IP - your IP address or host, which available for calling. TelegramBotAPI recommend to use some unique address for each bot which you are using
  • SSL certificate. Usually you can obtain the certificate using your domain provider, Let'sEncrypt or create it
  • Nginx or something like this

Template for Nginx server config you can find in this gist.

For webhook you can provide File with public part of certificate, URL where bot will be available and inner PORT which will be used to start receiving of updates. Actually, you can skip passing of File when you have something like nginx for proxy forwarding.