sendMessage

fun <S : State> TransitionBuilder<S>.sendMessage(chatId: Long, message: MessageTextBuilder.() -> Unit, keyboard: InlineKeyboardBuilder.() -> Unit? = null)
fun <S : State> TransitionBuilder<S>.sendMessage(chatId: Long, message: MessageText, markup: InlineKeyboardMarkup? = null)


fun <S : State> TransitionBuilder<S>.sendMessage(chatId: Long, text: String, markup: InlineKeyboardMarkup? = null)

Deprecated

Telegram parses this string, so foreign text in it must be escaped and unbalanced markup fails the whole message. Use sendMessage(chatId, message = { ... }), or MessageText.plain(text) to send it literally.

Replace with

sendMessage(chatId, MessageText.plain(text), markup)

Sends text for Telegram to parse as legacy Markdown — what every message did before entities.

Kept for one release so a bot with hand-written Markdown keeps rendering while it migrates: had this overload started sending the string as plain text instead, every asterisk in every message would have become literal on upgrade, with nothing failing.

MessageText.plain(text) is the other reading — send it literally, markup and all — and it is the right one for anything a person typed.