چگونه برای ربات تلگرام کلید خارجی ایجاد کنیم؟

آموزش ساخت ربات تلگرام

چگونه برای ربات تلگرام کلید خارجی ایجاد کنیم؟

خوب نبودخوبخیلی خوبعالیخیلی عالی (1 votes, average: 5٫00 out of 5)

در این آموزش توضیح خواهیم داد که چگونه برای ربات تلگرام ReplyKeyboardMarkup یا کلید خارجی ایجاد کنید. همان طور که در آموزش ساخت ربات تلگرام دیدید، برای ساخت این نوع دکمه شما باید از آرایه‌های تودرتو استفاده کنید، ما فانکشنی را ایجاد کردیم تا این کار آسان‌تر گردد.

function createButton($keys, $one_time_keyboard = false, $resize_keyboard = true, $selective = true)
{


    $keyBoard = array();
    $keyBoardRow = array();
    $text = '';

    foreach ($keys as $key => $value) {

        // we need new row keyboard
        if ($value === '#newRow') {

            array_push($keyBoard, $keyBoardRow);
            $keyBoardRow = array();

        } else {

            // is that share phone button?
            if ($key === 'request_contact' && $value === true) {

                array_push($keyBoardRow, array('text' => $text, 'request_contact' => $value));

                //is that share location button?
            } elseif ($key === 'request_location' && $value === true) {

                array_push($keyBoardRow, array('text' => $text, 'request_location' => $value));

            } else {
                // is that the text of share phone number?
                if ($key === 'textShareNumber') {

                    $text = $value;
                    //is that the text of share location button?
                } elseif ($key === 'textShareLocation') {

                    $text = $value;

                } else {

                    // push key's in row
                    array_push($keyBoardRow, $value);

                }
            }
        }
    }
    array_push($keyBoard, $keyBoardRow);

    $replyMarkup = array(
        'keyboard' => $keyBoard,
        'one_time_keyboard' => $one_time_keyboard,
        'resize_keyboard' => $resize_keyboard,
        'selective' => $selective
    );

    return json_encode($replyMarkup, true);

}

این فانکشن ۴ ورودی دریافت می‌کند، keys یک آرایه است که نام دکمه‌های شما در آن قرار دارد، کاربرد lموارد دیگر را می‌توانید در قسمت مستندات تلگرام مطالعه کنید.

اما چگونه از این فانکشن استفاده کنیم!؟ برای مثال من صفحه کلیدی با ۳ سطر ایجاد خواهم کرد که در هر سطر ۳ کلید وجود خواهد داشت.

createButton(
 array(
 'How can i use ?',
 'How can i sendMessage ?',
 'How can i create Keyboard?',
 '#newRow',
 'How can i create inlineKeyboard?',
 'How can i Send File ?',
 'How can i get File ?',
 '#newRow',
 'show inline keyboard.',
 'how can i get chat id etc...',
 'about us'
 ))

همان طور که می‌بینید من فقط اولین پارامتر یعنی keys را وارد کردم که آرایه‌ای شامل نام کلیدهای من است، برای ایجاد سطر جدید کافی است از کلمه #newRow استفاده کنید، من دو بار از این کلمه استفاده کردم تا سطر جدیدی برای من ایجاد شود. نمونه کد:

 $value) {

        // we need new row keyboard
        if ($value === '#newRow') {

            array_push($keyBoard, $keyBoardRow);
            $keyBoardRow = array();

        } else {

            // is that share phone button?
            if ($key === 'request_contact' && $value === true) {

                array_push($keyBoardRow, array('text' => $text, 'request_contact' => $value));

                //is that share location button?
            } elseif ($key === 'request_location' && $value === true) {

                array_push($keyBoardRow, array('text' => $text, 'request_location' => $value));

            } else {
                // is that the text of share phone number?
                if ($key === 'textShareNumber') {

                    $text = $value;
                    //is that the text of share location button?
                } elseif ($key === 'textShareLocation') {

                    $text = $value;

                } else {

                    // push key's in row
                    array_push($keyBoardRow, $value);

                }
            }
        }
    }
    array_push($keyBoard, $keyBoardRow);

    $replyMarkup = array(
        'keyboard' => $keyBoard,
        'one_time_keyboard' => $one_time_keyboard,
        'resize_keyboard' => $resize_keyboard,
        'selective' => $selective
    );

    return json_encode($replyMarkup, true);

}

$myButtons = createButton(
    array(
        'How can i use ?',
        'How can i sendMessage ?',
        'How can i create Keyboard?',
        '#newRow',
        'How can i create inlineKeyboard?',
        'How can i Send File ?',
        'How can i get File ?',
        '#newRow',
        'show inline keyboard.',
        'how can i get chat id etc...',
        'about us'
    ));


function sendMessage($chatId, $message, $r)
{
    $url = $GLOBALS['webSite'] . "/sendMessage?chat_id=" . $chatId . "&text=" . urlencode($message) . "&reply_markup=" . $r;
    file_get_contents($url);
}

switch ($message) {

    case '/start':
        sendMessage($chatId, 'خوش آمدید', $myButtons);
        break;

    case 'How can i use ?':

        sendMessage($chatId, 'my new key board', $myButtons);

        break;

امیدوارم این آموزش کوتاه مورد استفاده قرار بگیرد.

پوریا پرهامی

پوریا پرهامی هستم، چند سالی هست که در مجموعه دارکوب وب فعالیت می‌کنم. عمده‌ی فعالیت من در زمینه برنامه نویسی هستش. همچنین به هوش مصنوعی و آموزش زبان‌های برنامه نویسی علاقه دارم.

مقالات پیشنهادی دارکوب وب

خبرنامه دارکوب وب

با عضویت در خبرنامه دارکوب وب، هر هفته یک ایمیل از آخرین مقالات و تخفیفات هیجان انگیز ما مطلع شوید.

4 پاسخ
  1. hassa
    hassa گفته:

    عالی بود فقط یه سوال؟
    من دارم یه ربات تلگرام می نویسم که این ربات یه سری سوال از کاربر می گیره و اونو تو بانک sql ذخیره میکنه الان تو قسمت ارسال سوال برای کاربر تلگرامی به این مشکل برخورد کردم که وقتی اولین سوال را برای کاربر میفرستم چیکار کنم تا کاربر که به این سوال جواب داد سوال بعدی براش ارسال بشه واسه من سوالات بلافاصله پشت سر هم اسال میشه

    پاسخ
    • پوریا
      پوریا گفته:

      سلام حسن عزیز
      اگر می‌خواهید به هروقت به سوال اول پاسخ داده شد به سوال دوم بره و به همین ترتیب ادامه پیدا کنه، می‌تونید شماره سوال و اینکه پاسخ داده شده یا نه دنبال کنید
      برای مثال می‌تونید دو فیلد در دیتابیس ایجاد کنید یکی برای اینکه بدونید الان کاربر باید به کدام سوال جواب بده و دیگری برای اینکه بدونید جواب داده یا نه
      البته می‌تونید دو جدول داشته باشید برای مثال جدول کاربران و جدول سوالات، در جدول سوالات ID کاربر شماره سوال ( مثلا ۱ به معنای سوال اول) و فیلد دیگری برای اینکه آیا سوال پاسخ داده شده یا نه ( ۰ و ۱) داشته باشید.
      در کد هم اگر کاربر برای اولین بار با ربات شما ارتباط برقرار کرد می تونید شماره سوال ۱ و پاسخ ۰ قرار دید به این معنا که کاربر سوال اول پاسخ نداده، و سپس چک کنید فیلد مربوط به سوال چه شماره ای داره مثلا شماره ۲ و فیلد پاسخ در چه وضعیتیه مثلا ۰ پس کاربر به سوال دوم پاسخ نداده، حالا اگر کاربر بر روی کلید سوال کلیک کرد می‌تونید این دوفیل چک کنید چه مقدار هایی دارند اگر ۲ و ۰ بود پس به سوال دوم پاسخ نداده و سوال دوم دوباره برای کاربر ارسال می کنید

      در توضیح بالا جداول بر اساس سناریو شما می‌توانه فیلدهای مختلفی داشته باشه، یک جدول باشه یا چندین جدول
      مثال بالا صرفا برای قرار دادن شما در مسیر بود.
      شاد و سلامت باشید.

  2. محمد
    محمد گفته:

    سلام ممنون از مطالب بسیار مفیدتون فقط یه مسئله ای هست من بااستفاده از اموزش ساخت ربات یک ربات ساختم حالا میخوام کیلید خارجی بسازم مطالبتون رو خوندم برای منی که تازه کار هستم سوال پیش اومد که کجا باید برنامه نویسیش رو انجام بدم؟

    پاسخ
    • هومن معین
      هومن معین گفته:

      با سلام. خوشحالیم که مطالب مفید واقع شده است. شما باید در هاستتون درون فایلی که ساخته اید برنامه نویسش رو انجام دهید. اگر متوجه نشدید به صورت کاملتر سوالتونو توضیح بدین تا بتونیم بهتر کمکتون کنیم.
      موفق باشید

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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

READ  آموزش JSON مقدماتی قسمت دوم
READ  آموزش php مقدماتی قسمت بیست یکم