آموزش ساخت دکمه های شیشه ای در ربات تلگرام (اینلاین کیبورد با PHP)

آموزش ساخت دکمه های شیشه ای در ربات تلگرام اینلاین کیبورد

فهرست مطالب

دکمه های شیشه ای یا اینلاین کیبورد (Inline Keyboard) یکی از قدرتمندترین و جذاب ترین قابلیت های پلتفرم ربات های تلگرام هستند. بر خلاف کیبوردهای معمولی که در پایین صفحه چت کاربر قرار می گیرند و با فشردن آنها یک پیام متنی ساده به چت ارسال می شود، دکمه های شیشه ای دقیقا زیر هر پیام سنجاق می شوند و می توانند بدون ارسال هیچ پیامی، داده ها را در پشت صحنه پردازش کرده، صفحه وب باز کنند یا متن پیام قبلی را به صورت آنی ویرایش نمایند.

اگر می خواهید ربات تلگرامی شما ظاهری مدرن، حرفه ای و کاربرپسند داشته باشد، یادگیری نحوه ساخت و مدیریت دکمه های شیشه ای یک ضرورت اساسی است. در این راهنمای جامع و کاربردی از سورس یو، به صورت گام به گام و با کدهای استاندارد PHP یاد می گیرید که چگونه انواع دکمه های شیشه ای لینک دار، چند سطحی و تعاملی را پیاده سازی کنید.

تفاوت کیبورد معمولی (Reply Keyboard) با دکمه های شیشه ای (Inline Keyboard)

پیش از ورود به کدنویسی، بهتر است تفاوت اصلی این دو نوع کیبورد تلگرام را مرور کنیم:

ویژگیکیبورد معمولی (Reply Keyboard)دکمه های شیشه ای (Inline Keyboard)
محل نمایشجایگزین صفحه کلید اصلی گوشیچسبیده به زیر هر پیام ارسالی
نحوه ارسال دادهیک پیام متنی از طرف کاربر به چت ارسال می کندداده را بی صدا (Callback Query) پردازش می کند
پشتیبانی از لینک وبپشتیبانی نمی کندپشتیبانی کامل از باز کردن لینک های اینترنتی و وب اپ
ویرایش آنی پیامامکان پذیر نیستمی توان متن و دکمه ها را درجا ویرایش کرد
تجربه کاربری (UX)سنتی و مناسب منوهای ثابت اصلیبسیار مدرن، تعاملی و متناسب با پنل های مدیریت

ساختار دکمه های شیشه ای در Bot API تلگرام

تلگرام دکمه های شیشه ای را در قالب یک آرایه دو بعدی با نام reply_markup و کلید inline_keyboard دریافت می کند. هر سطر از دکمه ها، یک آرایه مستقل است و درون هر سطر می توانید یک یا چند دکمه قرار دهید.

مهم ترین فیلدهای هر دکمه شیشه ای عبارتند از:

  • text: متنی که روی دکمه نمایش داده می شود (الزامی).
  • url: آدرس اینترنتی معتبر که با کلیک کاربر در مرورگر یا تلگرام باز می شود.
  • callback_data: داده ای مخفی (حداکثر ۶۴ بایت) که با کلیک کاربر به سرور شما ارسال می شود.
  • web_app: آدرس یک مینی اپ تلگرامی برای باز شدن درون اپلیکیشن.

۱. ساخت دکمه شیشه ای لینک دار (URL Button) با PHP

ساده ترین نوع دکمه شیشه ای، دکمه ای است که کاربر را به یک سایت یا کانال هدایت می کند. در این حالت نیازی به پردازش پاسخ از طرف وب هوک شما نیست چون تلگرام مستقیما لینک را باز می کند.

<?php
$token = "YOUR_BOT_TOKEN";
$chat_id = "USER_CHAT_ID";

// ساختار کیبورد شیشه ای لینک دار
$keyboard = [
    'inline_keyboard' => [
        [
            ['text' => 'مشاهده فروشگاه سورس یو', 'url' => 'https://sourcio.ir/shop/']
        ],
        [
            ['text' => 'کانال تلگرام ما', 'url' => 'https://t.me/sourcio_ir'],
            ['text' => 'پشتیبانی آنلاین', 'url' => 'https://t.me/sourcio_support']
        ]
    ]
];

$postData = [
    'chat_id' => $chat_id,
    'text' => 'برای دسترسی به بخش های مختلف، از دکمه های زیر استفاده کنید:',
    'reply_markup' => json_encode($keyboard)
];

// ارسال درخواست به تلگرام با cURL
$ch = curl_init("https://api.telegram.org/bot{$token}/sendMessage");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$response = curl_exec($ch);
curl_close($ch);
?>

۲. ساخت دکمه شیشه ای تعاملی با Callback Data

قدرت واقعی دکمه های شیشه ای زمانی مشخص می شود که بخواهید کاربر با کلیک روی یک دکمه، عملیاتی را بدون خروج از تلگرام انجام دهد (مانند انتخاب گزینه، دریافت موجودی، یا تغییر صفحه).

<?php
// ساختار دکمه های تعاملی
$inline_keyboard = [
    'inline_keyboard' => [
        [
            ['text' => 'موجودی حساب من 💰', 'callback_data' => 'check_balance'],
            ['text' => 'لیست سفارشات 📦', 'callback_data' => 'my_orders']
        ],
        [
            ['text' => 'تنظیمات اعلان ها ⚙', 'callback_data' => 'settings']
        ]
    ]
];

$params = [
    'chat_id' => $chat_id,
    'text' => 'لطفا یک گزینه را از پنل کاربری انتخاب کنید:',
    'reply_markup' => json_encode($inline_keyboard)
];

// ارسال به متد sendMessage
file_get_contents("https://api.telegram.org/bot{$token}/sendMessage?" . http_build_query($params));
?>

۳. نحوه دریافت و پاسخ به رویداد کلیک (Callback Query)

وقتی کاربر روی یک دکمه مجهز به callback_data کلیک می کند، تلگرام اطلاعات کلیک را در قالب یک آبجکت به نام callback_query به وب هوک شما می فرستد. شما باید دو کار انجام دهید:

  1. پاسخ با متد answerCallbackQuery: برای اینکه ساعت شنی لودینگ روی دکمه متوقف شود و در صورت نیاز یک اعلان یا آلرت پاپ آپ به کاربر نشان دهید.
  2. انجام عملیات مورد نظر: مانند ارسال متن جدید یا ویرایش همان پیام قبلی با متد editMessageText.
<?php
// دریافت داده های ارسالی از وب هوک تلگرام
$update = json_decode(file_get_contents('php://input'), true);

if (isset($update['callback_query'])) {
    $callback_id = $update['callback_query']['id'];
    $data = $update['callback_query']['data'];
    $from_id = $update['callback_query']['from']['id'];
    $message_id = $update['callback_query']['message']['message_id'];
    $chat_id = $update['callback_query']['message']['chat']['id'];

    if ($data === 'check_balance') {
        // ۱. بستن لودینگ دکمه با یک پیام کوتاه
        $answer = [
            'callback_query_id' => $callback_id,
            'text' => 'موجودی شما: ۱,۲۵۰,۰۰۰ تومان',
            'show_alert' => true // نمایش به صورت پنجره پاپ آپ Alert
        ];
        file_get_contents("https://api.telegram.org/bot{$token}/answerCallbackQuery?" . http_build_query($answer));

        // ۲. ویرایش متن پیام قبلی با اطلاعات جدید
        $edit = [
            'chat_id' => $chat_id,
            'message_id' => $message_id,
            'text' => "موجودی کیف پول شما تا این لحظه ۱,۲۵۰,۰۰۰ تومان است.\nآخرین تراکنش: دیروز ساعت ۱۸:۳۰"
        ];
        file_get_contents("https://api.telegram.org/bot{$token}/editMessageText?" . http_build_query($edit));
    }
}
?>

نکات حیاتی و محدودیت های تلگرام در دکمه های شیشه ای

  • محدودیت ۶۴ بایتی داده ها: فیلد callback_data نمی تواند بیش از ۶۴ بایت داده داشته باشد. بنابراین به جای ذخیره سازی متن های طولانی، از شناسه های کوتاه مانند item_102 یا page_2 استفاده کنید.
  • الزام فراخوانی answerCallbackQuery: اگر به callback_query پاسخ ندهید، آیکون چرخان لودینگ تا چند ثانیه روی دکمه باقی می ماند و حس کند بودن ربات را به کاربر القا می کند.
  • چیدمان ریسپانسیو: در صفحات موبایل، قرار دادن بیش از ۲ یا ۳ دکمه در یک ردیف باعث بریده شدن متن دکمه ها می شود. همیشه چیدمان های ۱ یا ۲ ستونی را برای راحتی کاربر در اولویت قرار دهید.
پیشنهاد ویژه سورس یو

به دنبال سورس های آماده با دکمه های شیشه ای حرفه ای هستید؟

اگر زمان کافی برای برنامه نویسی منوهای پیچیده، پنل مدیریت و سیستم های چند سطحی دکمه های شیشه ای را ندارید، می توانید از سورس های آماده و تست شده سورس یو با راه انداز هوشمند استفاده کنید:

سوالات متداول درباره دکمه های شیشه ای تلگرام

تصویر تیم تولید محتوای سورس یو
تیم تولید محتوای سورس یو

تیم تولید محتوای سورس یو با افتخار تقدیم میکند

دیدگاهتان را بنویسید