ساخت ربات تلگرام با فریمورک TelegramBotPHP

آموزش 

PHP

توسط reza-irdev در 1 سال پیش
3 913 4 9 ماه پیش
reza-irdevtelebotdigisys
4

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

یکی از ساده ترین و کم حجم ترین فریمورک ها برای ساخت ربات تلگرام TelegramBotPhp هست که امروز توی github پیدا کردم. نحوه کار خیلی سادست توی صفحه readme پروژه هم توضیح داده شده.

قدم ۰ - ایجاد ربات و اخذ token از تلگرام

قبل از اینکه شروع کنید اول باید ربات رو ایجاد کنید و Bot token رو داشته باشید. برای این کار از  Botfather استفاده کنید.

قدم ۱ - ایجاد پروژه و نصب فریمورک

یه دایرکتوری با اسم دلخواهتون مثلا bot ایجاد کنید و واردش بشین و بوسیله composer فریمورک رو نصب کنید:composer require eleirbag89/telegrambotphp

قدم ۲ - ایجاد فایل، اضافه کردن فریمورک به پروژه

حالا باید فایل اصلی ربات رو ایجاد کنید تا update ها به اون فایل ارسال بشن برای این کار فایلی به نام update.php بسازید و این کد رو به ابتدای اون اضافه کنید.

include (__DIR__ . '/vendor/autoload.php');

$telegram = new Telegram('YOUR TELEGRAM TOKEN HERE');

بجای YOUR TELEGRAM TOKEN HERE هم bot token که از botfather گرفتید رو قرار بدید. **حالا همه چیز آمادست!  **

مثال ها

ارسال پیام به کاربر

$telegram = new Telegram('YOUR TELEGRAM TOKEN HERE');

$chat_id = $telegram->ChatID();
$content = array('chat_id' => $chat_id, 'text' => 'Test');
$telegram->sendMessage($content);

ارسال تصویر به کاربر

// Load a local file to upload. If is already on Telegram's Servers just pass the resource id
$img = curl_file_create('test.png','image/png'); 
$content = array('chat_id' => $chat_id, 'photo' => $img );
$telegram->sendPhoto($content);

دانلود فایل مشخص

$file = $telegram->getFile($file_id);
$telegram->downloadFile($file['result']['file_path'], './my_downloaded_file_on_local_server.png');

ساخت کیبورد

$option = array( 
    //First row
    array($telegram->buildKeyboardButton("Button 1"), $telegram->buildKeyboardButton("Button 2")), 
    //Second row 
    array($telegram->buildKeyboardButton("Button 3"), $telegram->buildKeyboardButton("Button 4"), $telegram->buildKeyboardButton("Button 5")), 
    //Third row
    array($telegram->buildKeyboardButton("Button 6")) );
$keyb = $telegram->buildKeyBoard($option, $onetime=false);
$content = array('chat_id' => $chat_id, 'reply_markup' => $keyb, 'text' => "This is a Keyboard Test");
$telegram->sendMessage($content);

برای نمایش تمام متدهای این فریموک به صفحه رسمی اون مراجعه کنید.

یادتون نره!

یادتون نره که  webhook رو ست کنید! برای ست کردن webhook از این روش استفاده کنید:https://api.telegram.org/bot[yourbotkey]/setwebhook?url=[sslwebhookurl]بجای [yourbotkey] همون کدی که از botfather گرفتید رو قرار بدید و بجای [sslwebhookurl] هم آدرس فایل اصلی ربات که https هست رو قرار بدید. در صورتی که مشکلی وجود نداشته باشه تلگرام پیام "Webhook was set" رو نمایش میده.

هر سوالی دارید لطفا بپرسید!

شما هم برنامه نویسی ربات تلگرام میدونید؟ چرا یه آموزش نمیذارین؟

0

سلام.میخوام یه کیبورد درست کنم ولی نمونه کد شما رو استفاده کردم ولی هیچ کیبوردی داخل کانالم ایجاد نمیکنه.راهنمایی میکنید اینم کدم:قسمت اول یه پیام به روبات ارسال میشه و قسمت دوم کد که ایجاد کیبورد هست بدون خطا اجرا میشه ولی کیبوردی ایجاد نمیشه داخل روبات.جالبه تابع buildInlineKeyBoard کار میکنه ولی تابع buildKeyBoard برام کیبورد ایجاد نمیکنه

include("Telegram.php");
date_default_timezone_set("asia/tehran");
 
// Set the bot TOKEN
$bot_id = "";
// Instances the class
$telegram = new Telegram($bot_id);

// Take text and chat_id from the message
$text 			  = $telegram->Text();
$chat_id 		  = '@mybot';


$content = array('chat_id' => $chat_id, 'text' => 'Test');
$telegram->sendMessage($content);
 
$option = array( 
    //First row
    array($telegram->buildKeyboardButton("Button 1"), $telegram->buildKeyboardButton("Button 2")), 
    //Second row 
    array($telegram->buildKeyboardButton("Button 3"), $telegram->buildKeyboardButton("Button 4"), $telegram->buildKeyboardButton("Button 5")), 
    //Third row
    array($telegram->buildKeyboardButton("Button 6")) );
$keyb = $telegram->buildKeyBoard($option, $onetime=false);
$content = array('chat_id' => $chat_id, 'reply_markup' => $keyb, 'text' => "This is a Keyboard Test");
$telegram->sendMessage($content);
آخرین ویرایش: 17-03-2018 ساعت 13:52، توسط Reza دلیل: کدها رو لطفا در تگ code قرار بدید
0

> سلام.میخوام یه کیبورد درست کنم ولی نمونه کد شما رو استفاده کردم ولی هیچ کیبوردی داخل کانالم ایجاد نمیکنه.راهنمایی میکنید اینم کدم:قسمت اول یه پیام به روبات ارسال میشه و قسمت دوم کد که ایجاد کیبورد هست بدون خطا اجرا میشه ولی کیبوردی ایجاد نمیشه داخل روبات.جالبه تابع buildInlineKeyBoard کار میکنه ولی تابع buildKeyBoard برام کیبورد ایجاد نمیکنه ``` include("Telegram.php"); date_default_timezone_set("asia/tehran"); // Set the bot TOKEN $bot_id = ""; // Instances the class $telegram = new Telegram($bot_id); // Take text and chat_id from the message $text = $telegram->Text(); $chat_id = '@mybot'; $content = array('chat_id' => $chat_id, 'text' => 'Test'); $telegram->sendMessage($content); $option = array( //First row array($telegram->buildKeyboardButton("Button 1"), $telegram->buildKeyboardButton("Button 2")), //Second row array($telegram->buildKeyboardButton("Button 3"), $telegram->buildKeyboardButton("Button 4"), $telegram->buildKeyboardButton("Button 5")), //Third row array($telegram->buildKeyboardButton("Button 6")) ); $keyb = $telegram->buildKeyBoard($option, $onetime=false); $content = array('chat_id' => $chat_id, 'reply_markup' => $keyb, 'text' => "This is a Keyboard Test"); $telegram->sendMessage($content); ```

سلام. میتونستید بجای ارسال پاسخ به این بحث، سوال رو در یک بحث مجزا مطرح کنید. اینطوری زودتر نتیجه میگیرید.

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

$chat_id = $telegram->ChatID();
آخرین ویرایش: 17-03-2018 ساعت 13:56، توسط Reza
0

$telegram->ChatID(); رو اضافه کردم ولی نباید مشابه بقیه کانال ها وقتی وارد کانال شدم کیبورد نمایش داده بشه؟الان داخل کانال من کیبوردی نمیبینم

آخرین ویرایش: 18-03-2018 ساعت 19:04، توسط telebot
0

تو کانال مگه کیبورد هست؟ تو بات کیبورد میاد.

خوش آمدید

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

لطفا ابتدا لاگین کنید