Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ruslanys/telegraff
Kotlin DSL для разработки Telegram ботов
https://github.com/ruslanys/telegraff
dsl framework kotlin kotlin-dsl spring-boot telegram telegram-bot telegram-bot-framework
Last synced: about 2 months ago
JSON representation
Kotlin DSL для разработки Telegram ботов
- Host: GitHub
- URL: https://github.com/ruslanys/telegraff
- Owner: ruslanys
- License: apache-2.0
- Created: 2018-10-17T05:30:52.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-09-22T17:48:11.000Z (over 4 years ago)
- Last Synced: 2024-10-10T13:34:39.671Z (2 months ago)
- Topics: dsl, framework, kotlin, kotlin-dsl, spring-boot, telegram, telegram-bot, telegram-bot-framework
- Language: Kotlin
- Homepage: https://habr.com/ru/post/445072/
- Size: 2.72 MB
- Stars: 146
- Watchers: 9
- Forks: 29
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
![Telegraff](docs/logo.png "Logo")
## Подключение
```
repositories {
maven {
url "https://dl.bintray.com/ruslanys/maven"
}
}
```Gradle:
```
compile("me.ruslanys.telegraff:telegraff-starter:1.0.0")
```Maven:
```
me.ruslanys.telegraff
telegraff-starter
1.0.0```
## Настройка
```
telegram.access-key= # api key
telegram.mode= # polling (default), webhook
telegram.webhook-base-url= # required for webhook mode
telegram.webhook-endpoint-url= # optional
```## Использование
Положите файл с расширением `.kts` в папку c ресурсами `handlers`:
`resources/handlers/ExampleHandler.kts`.```kotlin
enum class PaymentMethod {
CARD, CASH
}handler("/taxi", "такси") {
step("locationFrom") {
question {
MarkdownMessage("Откуда поедем?")
}
}step("locationTo") {
question {
MarkdownMessage("Куда поедем?")
}
}step("paymentMethod") {
question {
MarkdownMessage("Оплата картой или наличкой?", "Картой", "Наличкой")
}validation {
when (it.toLowerCase()) {
"картой" -> PaymentMethod.CARD
"наличкой" -> PaymentMethod.CASH
else -> throw ValidationException("Пожалуйста, выбери один из вариантов")
}
}
}process { state, answers ->
val from = answers["locationFrom"] as String
val to = answers["locationTo"] as String
val paymentMethod = answers["paymentMethod"] as PaymentMethod// Business logic
MarkdownMessage("Заказ принят. Поедем из $from в $to. Оплата $paymentMethod.")
}
}
```## Устройство
![Обработка сообщений](docs/processing-diagram.png "Обработка сообщений")