Kotlin Telegram Bot 0.12.1a Help

Step types

By default, the step() method expects a text message. With the type parameter you can specify the expected message type from the user:

step("get_contact", type = CONTACT) { sendMessage("Your number is ${contact.phoneNumber}") }

Multiple message types can be defined for a single step. Example with user registration:

@Factory class RegistrationHandler : BotHandler({ // regex with phone number like +7 (123) 456-78-90 val phonePattern = Regex("\\+?[78]?[\\s\\-]?\\(?\\d{3}\\)?[\\s\\-]?\\d{3}([\\s\\-]?\\d{2}){2}") command("/register", next = "get_contact") { sendMessage("Enter a number or share your contact to register", replyMarkup = contactButton("Share contact")) } step("get_contact", type = CONTACT) { sendMessage("${contact.firstName}, You have successfully registered with the number ${contact.phoneNumber}!", replyMarkup = removeKeyboard()) } step("get_contact", type = TEXT, next = "get_firstname") { phonePattern.find(text) ?: throw ChatException("Incorrect phone number format") sendMessage("And what is your name?", replyMarkup = removeKeyboard()) transfer(text) } step("get_firstname") { val phone = transferred<String>() sendMessage("$text, You have successfully registered with the number $phone!") } })

Available types at this time:

object MessageType { val TEXT val AUDIO val DOCUMENT val PHOTO val STICKER val VIDEO val VIDEO_NOTE val VOICE val CONTACT val LOCATION val WEB_APP_DATA }
Last modified: 09 December 2024