Keyboards

Use neutral builders and let the bot render them for its selected platform.

from peyk import Bot
from peyk.keyboard import InlineKeyboardBuilder, ButtonStyle

bot = Bot("TOKEN", platform="telegram")
keyboard = (InlineKeyboardBuilder()
            .button(text="Open", url="https://example.com")
            .button(text="Save", callback_data="save", style=ButtonStyle.SUCCESS)
            .adjust(1)
            .as_markup())

@bot.command("start")
async def start(message):
    await message.answer("Choose:", reply_markup=keyboard)

Platform notes

Surface

Telegram

Bale

Rubika

Inline keyboards

yes

yes

yes

Reply keyboards

yes

yes

yes

Color style

yes*

no

unknown

Rubika native kinds

no

no

yes

* Telegram style values are represented in the audited type surface; the wire values remain an evidence-qualified area in the capability registry.