Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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 ботов

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 "Обработка сообщений")