سیستم دکمههای تعاملی در کتابخانه روبکا — کیبورد معمولی و شیشهای (Inline & Chat Keypad)
from rubka.button import InlineBuilder
# ساخت کیبورد شیشهای
builder = InlineBuilder()
builder.row(
InlineBuilder().button_simple(id="btn1", text="دکمه 1"),
InlineBuilder().button_simple(id="btn2", text="دکمه 2")
).row(
InlineBuilder().button_simple(id="btn3", text="دکمه 3")
)
keypad = builder.build()from rubka.button import ChatKeypadBuilder
# ساخت کیبورد معمولی
keypad = (
ChatKeypadBuilder()
.row(
ChatKeypadBuilder().button(id="one", text="button one"),
ChatKeypadBuilder().button(id="two", text="button two")
)
.row(
ChatKeypadBuilder().button(id="three", text="button three")
)
.build()
)| پارامتر | نوع | توضیحات |
|---|---|---|
| id | str | شناسه یکتای دکمه |
| text | str | متن نمایشی دکمه |
from rubka import Robot, Message
from rubka.button import ChatKeypadBuilder, InlineBuilder
bot = Robot("YOUR_TOKEN")
chat_keypad = (
ChatKeypadBuilder()
.row(
ChatKeypadBuilder().button(id="one", text="تست")
)
.build()
)
inline_keypad = (
InlineBuilder()
.row(
InlineBuilder().button_simple(id="one", text="تست")
)
.build()
)
@bot.on_message(commands=["start"])
async def start(bot: Robot, message: Message):
await message.reply(
"به ربات خوش آمدید",
chat_keypad=chat_keypad,
inline_keypad=inline_keypad
)
@bot.on_callback('one')
async def btn_one(bot: Robot, message: Message):
await message.answer("دکمه یک کلیک شد")
bot.run()ChatKeypadBuilder().button(id="one", text="button one")
| پارامتر | نوع | توضیحات |
|---|---|---|
| id | str | شناسه دکمه |
| text | str | متن دکمه |
| url | str | آدرس لینک |
InlineBuilder().button_url_link(
id="web",
text="بازدید سایت",
url="https://rubka.ir"
)| پارامتر | نوع | توضیحات |
|---|---|---|
| id | str | شناسه دکمه |
| text | str | متن دکمه |
| username | str | نام کاربری کانال (با یا بدون @) |
| ask_join | bool | درخواست تأیید قبل از عضویت |
InlineBuilder().button_join_channel(
id="join",
text="عضویت در کانال",
username="rubka_library",
ask_join=True
)InlineBuilder().button_open_chat(
id="chat",
text="ارسال پیام به ادمین",
object_guid="user_guid",
object_type="User"
)selection = {
"selection_id": "select1",
"title": "انتخاب رنگ",
"items": [
{"text": "قرمز", "type": "TextOnly"},
{"text": "آبی", "type": "TextOnly"}
],
"is_multi_selection": False,
"columns_count": 2
}
InlineBuilder().button_selection(
id="color_select",
text="انتخاب رنگ",
selection=selection
)InlineBuilder().button_calendar(
id="date",
title="انتخاب تاریخ",
type_="DatePersian",
default_value="1403-01-01",
min_year="1400",
max_year="1410"
)InlineBuilder().button_number_picker(
id="age",
title="انتخاب سن",
min_value="1",
max_value="100",
default_value="25"
)InlineBuilder().button_string_picker(
id="city",
title="انتخاب شهر",
items=["تهران", "اصفهان", "شیراز", "مشهد"],
default_value="تهران"
)InlineBuilder().button_textbox(
id="input",
title="ورود نام",
type_line="SingleLine",
type_keypad="String",
place_holder="نام خود را وارد کنید"
)InlineBuilder().button_location(
id="loc",
type_="Picker",
location_image_url="https://example.com/map.png",
title="انتخاب موقعیت"
)InlineBuilder().button_camera_image(id="camera_img", title="گرفتن عکس")
InlineBuilder().button_camera_video(id="camera_vid", title="گرفتن ویدیو")
InlineBuilder().button_gallery_image(id="gallery_img", title="انتخاب عکس")
InlineBuilder().button_gallery_video(id="gallery_vid", title="انتخاب ویدیو")
InlineBuilder().button_file(id="file", title="انتخاب فایل")
InlineBuilder().button_audio(id="audio", title="انتخاب آهنگ")
InlineBuilder().button_record_audio(id="record", title="ضبط صدا")
InlineBuilder().button_ask_my_phone_number(id="phone", title="ارسال شماره")
InlineBuilder().button_ask_location(id="loc_req", title="ارسال موقعیت")
InlineBuilder().button_my_location(id="my_loc", title="موقعیت من")
InlineBuilder().button_barcode(id="barcode", title="اسکن بارکد")
| پارامتر | نوع | توضیحات |
|---|---|---|
| id | str | شناسه دکمه |
| title | str | عنوان دکمه |
| amount | int | مبلغ به تومان |
| description | str | None | توضیحات پرداخت |
InlineBuilder().button_payment(
id="pay",
title="پرداخت ۱۰,۰۰۰ تومان",
amount=10000,
description="شارژ حساب کاربری"
)builder.row(
InlineBuilder().button_simple(id="btn1", text="دکمه 1"),
InlineBuilder().button_simple(id="btn2", text="دکمه 2")
)keypad = builder.build()
await message.reply_inline("متن پیام", inline_keypad=keypad)from rubka import Robot, Message
from rubka.button import ChatKeypadBuilder, InlineBuilder
bot = Robot("YOUR_TOKEN")
# کیبورد معمولی
chat_keypad = (
ChatKeypadBuilder()
.row(
ChatKeypadBuilder().button(id="one", text="دکمه یک"),
ChatKeypadBuilder().button(id="two", text="دکمه دو")
)
.row(
ChatKeypadBuilder().button(id="three", text="دکمه سه")
)
.build()
)
# کیبورد شیشهای
inline_keypad = (
InlineBuilder()
.row(
InlineBuilder().button_simple(id="info", text="اطلاعات"),
InlineBuilder().button_ask_location(id="loc", text="لوکیشن من")
)
.row(
InlineBuilder().button_ask_my_phone_number(id="phone", text="ارسال شماره")
)
.build()
)
@bot.on_message(commands=["start"])
async def start(bot: Robot, message: Message):
await message.reply(
"به ربات خوش آمدید",
chat_keypad=chat_keypad,
inline_keypad=inline_keypad
)
@bot.on_callback('one')
async def btn_one(bot: Robot, message: Message):
await message.answer("دکمه یک کلیک شد")
@bot.on_callback('info')
async def btn_info(bot: Robot, message: Message):
await message.answer("اطلاعات ربات")
bot.run()مستندات کامل دکمههای Rubka — ساخت کیبوردهای تعاملی حرفهای
پشتیبانی از کیبورد معمولی (ChatKeypad) و شیشهای (InlineKeypad)