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

کیبورد اختصاصی تلگرام

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

$keyboard = array(
		'keyboard' => array(
				array("سرور مجازی", "سرور اختصاصی"),
				array("درباره ما", "تماس با ما","تبلیغات"),
		),'one_time_keyboard'=>true,'resize_keyboard'=>true);
$keyboard = json_encode($keyboard);

با استفاده از تابع keyboard در کد بالا کیبورد اختصاصی ربات رو میسازیم . و در اخر json_encode اطلاعات رو به صورت json ارسال میکنیم .
در پایین کد کامل ربات + کیبورد اختصاصی رو میزارم براتون :

<?php

$string = json_decode(file_get_contents('php://input'));


function objectToArray( $object )
{
    if( !is_object( $object ) && !is_array( $object ) )
    {
        return $object;
    }
    if( is_object( $object ) )
    {
        $object = get_object_vars( $object );
    }
    return array_map( 'objectToArray', $object );
}


$result = objectToArray($string);
$user_id = $result['message']['from']['id'];
$text = $result['message']['text'];
$token = 'توکن ربات';


$keyboard = array(
		'keyboard' => array(
				array("سرور مجازی", "سرور اختصاصی"),
				array("درباره ما", "تماس با ما","تبلیغات"),
		),'one_time_keyboard'=>true,'resize_keyboard'=>true);
$keyboard = json_encode($keyboard);


switch ($text) {
	case 'سرور مجازی':
		$text_reply = "http://my.tooba.co/cart.php?gid=3";
		break;
	case 'سرور اختصاصی':
		$text_reply = "http://my.tooba.co/cart.php?gid=4";
		break;	
	default:
		$text_reply = json_encode($result);
		break;
}



$url = 'https://api.telegram.org/bot'.$token .'/sendMessage?text='.$text_reply.'&chat_id='.$user_id.'&reply_markup='.$keyboard;
$res = file_get_contents($url);

ربات مورد نظر آماده میباشد : https://t.me/tooba_testBot
اگر سوالی بود ،کامنت ارسال کنید.
موفق باشید

 


  1. meysam - ۳ آذر ۱۳۹۶

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

  2. ali - ۴ آذر ۱۳۹۶

    سلام
    هنگامی که منوی سرور اختصاصی رو کلیک میکنه، بعد از دریافت متن “سرور اختصاصی” میتونید منو های کیبورد رو به روز کنید و مجدد ارسال کنید .

    case 'سرور اختصاصی':
    $text_reply = "http://my.tooba.co/cart.php?gid=4";
    $keyboard = array(
    'keyboard' => array(
    array("سرور اختصاصی آلمان", "سرور اختصاصی فرانسه")
    ),'one_time_keyboard'=>true,'resize_keyboard'=>true);
    $keyboard = json_encode($keyboard);
    break;

    در مثال بالا میبنید که در حلقه “سرور اختصاصی” هم متن جدیدی برای کاربر ارسال میکنیم و هم اینکه کیبورد اختصاصی رو نیز ارسال میکنم .

  3. meysam - ۴ آذر ۱۳۹۶

    سلام ببخشید این کد ربات من هستش
    از تله تر هم برای اینکه ssl ندارم استفاده میکنم
    ولی هر کاری میکنم اونی که شما گفتین نمیشه جواب نمیده ولی بدون اون میشه
    ممنون میشم یه نگاهی بندازین
    میخوایم یه کیبورد دیگه اضافه کنم بهش موقع زدن یکی از دگمه ها

    message;
    $text = $message->text;
    $chat = $message->chat;
    $user_id = $chat->id;
    $first_name = $message->from->first_name;

    $action = ‘typing’;
    sendChatAction ($user_id,$action,$token);

    $keyboard = array(
    //array( “Bitfinex Btc \xF0\x9F\x98\x8B”,”Bitfinex Eth \xF0\x9F\x98\x8B”),
    //array( “Percoin \xF0\x9F\x98\x8B”),
    array( “Bitfinex \xF0\x9F\x98\x8B”),
    array( “Bitfinex Btc \xF0\x9F\x98\x8B”),
    array( “Bitfinex Eth \xF0\x9F\x98\x8B”),
    array( “Bitfinex OMG \xF0\x9F\x98\x8B”),
    array( “Bitfinex DAT \xF0\x9F\x98\x8B”),
    );

    $url = “https://api.bitfinex.com/v1/ticker/ethusd”;
    $json = json_decode(file_get_contents($url), true);
    $price_eth = $json[“last_price”];

    $url = “https://api.bitfinex.com/v1/ticker/btcusd”;
    $json = json_decode(file_get_contents($url), true);
    $price_btc = $json[“last_price”];

    $url = “https://api.bitfinex.com/v1/ticker/omgusd”;
    $json = json_decode(file_get_contents($url), true);
    $price_omg = $json[“last_price”];

    $url = “https://api.bitfinex.com/v1/ticker/datusd”;
    $json = json_decode(file_get_contents($url), true);
    $price_dat = $json[“last_price”];

    // http://apps.timwhitlock.info/emoji/tables/unicode

    if ($text == “/start”) {
    $message = urlencode(“welcome”.$first_name.” to bot CoinAlarm \n For Bitcoin, Ethereum, Percoin”);
    } else if ($text == “Bitfinex Eth \xF0\x9F\x98\x8B”) {
    $message = urlencode($price_eth.” USD/Eth”.”\n\n”.”@coin_alarmbot \xF0\x9F\x98\x8B”);
    } else if ($text == “Bitfinex Btc \xF0\x9F\x98\x8B”) {
    $message = urlencode($price_btc.” “.” USD/BTC”.”\n\n”.”@coin_alarmbot \xF0\x9F\x98\x8B”);
    } else if ($text == “Bitfinex OMG \xF0\x9F\x98\x8B”) {
    $message = urlencode($price_omg.” “.” USD/OMG”.”\n\n”.”@coin_alarmbot \xF0\x9F\x98\x8B”);
    } else if ($text == “Bitfinex DAT \xF0\x9F\x98\x8B”) {
    $message = urlencode($price_dat.” “.” USD/DAT”.”\n\n”.”@coin_alarmbot \xF0\x9F\x98\x8B”);
    } else if ($text == “1”) {
    $message = (“5684”);
    } else {
    $message = urlencode(“نمیدونم”.”\n\n”.”@coin_alarmbot \xF0\x9F\x98\x8B”);
    }

    //sendChatAction
    function sendChatAction ($user_id,$chataction,$token) {
    $url = ‘https://api.telegram.org/bot’.$token.’/sendChatAction?chat_id=’.$user_id.’&action=’.$chataction;
    $update = file_get_contents($url);
    }

    coinalarm_keyboardmessage ($user_id,$message,$token,$keyboard);
    // //Send Text Message With Inline Keyboard
    function coinalarm_keyboardmessage ($user_id,$message,$token,$keyboard) {
    $url = “https://api.telegram.org/bot”.$token.”/sendMessage”;
    $replyMarkup = array(
    “keyboard” => $keyboard,
    “resize_keyboard” => true
    );
    $encodedMarkup = json_encode($replyMarkup);
    $url = “https://api.telegram.org/bot”.$token.”/sendMessage?chat_id=”.$user_id.”&text=”.$message.”&reply_markup=”.$encodedMarkup;
    $update = file_get_contents($url);
    }

    ?>

  4. meysam - ۴ آذر ۱۳۹۶


    $token = "383220550:AAFcaMZ4P5qjiWHTbHTQE2_d1_HMHrtLTbs";
    // read incoming info and grab the chatID
    $json = file_get_contents("php://input");
    $telegram = urldecode ($json);
    $telegram = str_replace ("jason=","",$telegram); //Just for Teletter.net
    $results = json_decode($telegram);

    $message = $results->message;
    $text = $message->text;
    $chat = $message->chat;
    $user_id = $chat->id;
    $first_name = $message->from->first_name;

    $action = 'typing';
    sendChatAction ($user_id,$action,$token);

    $keyboard = array(
    //array( "Bitfinex Btc \xF0\x9F\x98\x8B","Bitfinex Eth \xF0\x9F\x98\x8B"),
    //array( "Percoin \xF0\x9F\x98\x8B"),
    array( "Bitfinex \xF0\x9F\x98\x8B"),
    array( "Bitfinex Btc \xF0\x9F\x98\x8B"),
    array( "Bitfinex Eth \xF0\x9F\x98\x8B"),
    array( "Bitfinex OMG \xF0\x9F\x98\x8B"),
    array( "Bitfinex DAT \xF0\x9F\x98\x8B"),
    );

    $url = "https://api.bitfinex.com/v1/ticker/ethusd";
    $json = json_decode(file_get_contents($url), true);
    $price_eth = $json["last_price"];

    $url = "https://api.bitfinex.com/v1/ticker/btcusd";
    $json = json_decode(file_get_contents($url), true);
    $price_btc = $json["last_price"];

    $url = "https://api.bitfinex.com/v1/ticker/omgusd";
    $json = json_decode(file_get_contents($url), true);
    $price_omg = $json["last_price"];

    $url = "https://api.bitfinex.com/v1/ticker/datusd";
    $json = json_decode(file_get_contents($url), true);
    $price_dat = $json["last_price"];

    // http://apps.timwhitlock.info/emoji/tables/unicode

    if ($text == "/start") {
    $message = urlencode("welcome".$first_name." to bot CoinAlarm \n For Bitcoin, Ethereum, Percoin");
    } else if ($text == "Bitfinex Eth \xF0\x9F\x98\x8B") {
    $message = urlencode($price_eth." USD/Eth"."\n\n"."@coin_alarmbot \xF0\x9F\x98\x8B");
    } else if ($text == "Bitfinex Btc \xF0\x9F\x98\x8B") {
    $message = urlencode($price_btc." "." USD/BTC"."\n\n"."@coin_alarmbot \xF0\x9F\x98\x8B");
    } else if ($text == "Bitfinex OMG \xF0\x9F\x98\x8B") {
    $message = urlencode($price_omg." "." USD/OMG"."\n\n"."@coin_alarmbot \xF0\x9F\x98\x8B");
    } else if ($text == "Bitfinex DAT \xF0\x9F\x98\x8B") {
    $message = urlencode($price_dat." "." USD/DAT"."\n\n"."@coin_alarmbot \xF0\x9F\x98\x8B");
    } else if ($text == "1") {
    $message = ("5684");
    } else {
    $message = urlencode("نمیدونم"."\n\n"."@coin_alarmbot \xF0\x9F\x98\x8B");
    }

    //sendChatAction
    function sendChatAction ($user_id,$chataction,$token) {
    $url = 'https://api.telegram.org/bot'.$token.'/sendChatAction?chat_id='.$user_id.'&action='.$chataction;
    $update = file_get_contents($url);
    }

    coinalarm_keyboardmessage ($user_id,$message,$token,$keyboard);
    // //Send Text Message With Inline Keyboard
    function coinalarm_keyboardmessage ($user_id,$message,$token,$keyboard) {
    $url = "https://api.telegram.org/bot".$token."/sendMessage";
    $replyMarkup = array(
    "keyboard" => $keyboard,
    "resize_keyboard" => true
    );
    $encodedMarkup = json_encode($replyMarkup);
    $url = "https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$user_id."&text=".$message."&reply_markup=".$encodedMarkup;
    $update = file_get_contents($url);
    }

  5. ali - ۴ آذر ۱۳۹۶

    سلام
    خیلی کدهاتون نامفهومه داخل یه فایل php ارسال کنید (جایی آپلود کنید و لینکش رو ارسال کنید).

  6. meysam - ۴ آذر ۱۳۹۶

    اپلود کردم اینجا ممنون میشم نگاه کنید و تشکر از شما که عالی هستین و کمک میکنید واقعا تشکر
    http://otom.ir/t.txt

  7. احمد - ۲ بهمن ۱۳۹۶

    سلام.خسته نباشین. من کیبورد ربات رو آپدیت کردم. برای اینکه کاربرا بتونن دکمه های جدید رو ببینن باید یه همه کاربرا پیام بدم که ربات رو ری استارت کنن؟ راه بهتری وجود داره؟

  8. جواد - ۱۰ بهمن ۱۳۹۶

    بسیار عالی و قابل فهم. استفاده بردم.
    سپاس از زحماتتون

  9. احمد - ۱۱ بهمن ۱۳۹۶

    مثلا اگه بخوایم
    ۱- یه نوشته BOld بشه
    ۲-یا یه متنی که ارسال میکنه به صورت hyperlink در بیاد ؟
    ۳- اگه بخوایم از طریق آیدی فایل یا ویدئو ، عکس و استیکر یا هر چی اونو بفهمونیم که بفرسته یا از طریق یه Url عکس بفرسته نه اینکه ما بهش مسیر عکس تو هاست بدیم ! از طریق url اون عکس با کپشن نشون بده اینارو هم بگین ممنون

  10. احمد - ۱۱ بهمن ۱۳۹۶

    این قسمت کدتون یه ایراد داره موقع استارت ربات به این صورت نمایش میده :
    http://s8.picofile.com/file/8318142292/eror.PNG


همینک دیدگاه خود را برای ما بنویسید!