https://github.com/InsanusMokrassar/TelegramBotAPI
Type-safe library for work with Telegram Bot API
https://github.com/InsanusMokrassar/TelegramBotAPI
dev-inmo-tgbotapi hacktoberfest kotlin kotlin-js kotlin-jvm kotlin-library kotlin-multiplatform ktgbotapi telegram telegram-bot-api telegram-bots-api telegrambotapi tgbotapi
Last synced: 4 months ago
JSON representation
Type-safe library for work with Telegram Bot API
- Host: GitHub
- URL: https://github.com/InsanusMokrassar/TelegramBotAPI
- Owner: InsanusMokrassar
- License: apache-2.0
- Created: 2018-12-26T07:45:11.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-09T07:51:51.000Z (4 months ago)
- Last Synced: 2024-12-10T14:49:42.382Z (4 months ago)
- Topics: dev-inmo-tgbotapi, hacktoberfest, kotlin, kotlin-js, kotlin-jvm, kotlin-library, kotlin-multiplatform, ktgbotapi, telegram, telegram-bot-api, telegram-bots-api, telegrambotapi, tgbotapi
- Language: Kotlin
- Homepage: https://docs.inmo.dev/tgbotapi/index.html
- Size: 186 MB
- Stars: 365
- Watchers: 5
- Forks: 32
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-telegram - tgbotapi - Type-safe library for work with Telegram Bot API. (Bots / Bot Libs)
- awesome-telegram - TelegramBotAPI
- awesome-kotlin-multiplatform - tgbotapi - Strongly-typed API wrapper for [Telegram Bot API](https://core.telegram.org/bots/api) with (Libraries / Social)
README
# TelegramBotAPI [](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi) [](https://core.telegram.org/bots/api-changelog#december-4-2024)
| Docs | [](https://tgbotapi.inmo.dev/index.html) [](https://docs.inmo.dev/tgbotapi/index.html) |
|:----------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Useful repos | [](https://github.com/InsanusMokrassar/TelegramBotAPI-bot_template/generate) [](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/) |
| Misc | [](https://github.com/KotlinBy/awesome-kotlin) [](https://docs.google.com/forms/d/e/1FAIpQLSctdJHT_aEniyYT0-IUAEfo1hsIlezX2owlkEAYX4KPl2V2_A/viewform?usp=sf_link) |
| Platforms |   |
| Experimental Platforms | [](https://kotlinlang.org/docs/native-target-support.html#tier-1) [](https://kotlinlang.org/docs/native-target-support.html#tier-1) |Hello! This is a set of libraries for working with Telegram Bot API.
## Examples
There are several things you need to do to launch examples below:
* Add `mavenCentral()` to your project repositories
* [Maven variant](https://github.com/InsanusMokrassar/TelegramBotAPI/wiki/Including-in-your-project#pomxml)
* 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](https://github.com/InsanusMokrassar/TelegramBotAPI/wiki/Including-in-your-project#telegrambotapi)More including instructions [available here](https://github.com/InsanusMokrassar/TelegramBotAPI/wiki/Including-in-your-project).
Other configuration examples:* [For multiplatform](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/tree/master/ResenderBot)
* [For JVM](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/blob/master/GetMeBot/build.gradle)### Most common example
```kotlin
suspend fun main() {
val bot = telegramBot(TOKEN)bot.buildBehaviourWithLongPolling {
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
```kotlin
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
```kotlin
suspend fun main() {
val bot = telegramBot(TOKEN)bot.buildBehaviourWithLongPolling {
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](https://github.com/InsanusMokrassar/TelegramBotAPI-examples). Besides, you are
always welcome in our [docs](https://docs.inmo.dev/tgbotapi/index.html) and
[chat](https://t.me/InMoTelegramBotAPIChat).