Skip to main content

ساخت ربات تلگرام با PHP ، گام به گام

همانطور که قبلاً گفتیم ساختن یک ربات به چند طریق قابل انجام است: از طریق رباتساز تلگرام، از طریق آموزش ساخت ربات تلگرام که در یک مقاله جداگانه کاملاً درمورد آن توضیح دادیم و در نهایت ساخت و ایجاد ربات تلگرام با php.


روش ساخت ربات با زبان برنامه نویسی php، روشی است که در آن می توانید هر رباتی با هر امکاناتی که بخواهید، طراحی کرده و بسازید؛ و محدودیت های روش های دیگر را ندارد.

ساخت ربات تلگرام با PHP

اگر آشنایی مقدماتی با برنامه نویسی و مخصوصا زبان PHP داشته باشید و بخواید خودتون دست به کار بشید و شروع به کدنویسی یک ربات تلگرام کنید می توانید همین الان آستین ها رو بالا بزنید و با این تمرین کار رو شروع کنید. این چند خط کد یک ربات می سازه که در جواب دستور /start یک پیام خوش آمد گویی به کاربر نشون بده. اگه با php آشنا باشید می توانید خیلی ساده تعداد دستورات ربات رو افزایش بدید.

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

https://api.telegram.org/bot[TOKEN]/setWebhook?url=https://mydomain.com/bot.php

بجای mydomain.com باید دامنه خودتون رو وارد کنید bot.php مسیر فایل کدهای ما هست. ضمنا یادتون نره باید حتما یک SSL روی هاستتون فعال کرده باشید و آدرس رو با https وارد کنید. همچنین به جای [TOKEN] باید توکن ربات خود را وارد کنید.

قدم اول باید اطلاعات دریافتی از سمت تلگرام رو به یک آرایه تبدیل کنیم تا بتونیم پیام کاربر رو بخونیم و بهش پاسخ بدیم:

//دریافت تمامی ورودی ها
$var = file_get_contents("php://input");

//تبدیل ورودی ها به آرایه
$var = json_decode($var,true);

//دریافت شناسه چت
$chat_id = $var['message']['chat']['id'];

//دریافت پیام ارسال شده توسط کاربر
$text = $var['message']['text'];

//تعریف توکن ربات
$token = "TOKEN";

حالا چک میکنیم اگه پاسخ دریافت ربات /start بود بهش یک پیام خوش آمد گویی ارسال کنیم به همین سادگی:

 //این تابع یک پیام ساده ارسال میکنه
function sendMessage($chat_id,$text)
{
 global $token;
    $api    = "https://api.telegram.org/bot$token/";
    $method = "sendMessage";
    $params = "?chat_id=$chat_id&text=" . urlencode($text);
  
   $url    = $api . $method . $params;
    $result = file_get_contents($url);
   return $result;
}

/**
 * اگه پیام دریافتی برابر 
 * "/start" 
 * باشه این جواب رو ارسال میکنه
 */


if ( $text == '/start' ) 
{
 $message = "Hi welcome to my telegram bot";
 echo sendMessage($chat_id,$message);
} 

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

در ادامه میخواهیم چند بخش به ربات تلگرامی که با PHP ساخته ایم اضافه کنیم.

اضافه کردن جوین اجباری به کانال با PHP

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

برای افزودن جوین اجباری به ربات ساخته شده ما از متد getChatMember استفاده می کنیم. این متد به ما اجازه می دهد تا ببینیم کاربر با شناسه x در کانال y عضو می باشد یا خیر.

یک تابع جدید ایجاد می کنیم مانند:


function getChatMember($chat_id, $member_id)
{
    global $token;
    $api    = "https://api.telegram.org/bot$token/";
    $method = "getChatMember";
    $params = "?chat_id=$chat_id&member_id=$member_id";

    $url    = $api . $method . $params;
    $result = file_get_contents($url);
   return $result;
}

تابع بالا دو ورودی دارد، $chat_id که همان username کانال خواهد بود مانند channel_7bot@ و ورودی $member_id که شناسه کاربر خواهد بود.

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

$check = getChatMember("@channel_7bot", $chat_id)

در این متد متغییر $chat_id برای شناسه کانال و $member_id برای شناسه کاربر استفاده کننده از ربات می باشد. نتیجه برگشتی از api تلگرام در صورتی که کاربر عضو کانال باشد مشخصات کاربر می باشد و پاسخ برگشتی پارامتر status باید وجود داشته باشد تا وضعیت کاربر مشخص باشد در غیر این صورت یعنی عضو نیست و در نتیجه پارامتر status وجود ندارد.

در مرحله بعد چک میکنیم که کاربر از کانال لفت نداده باشد در این حالت مقدار statusبرابر leftخواهد بود.

حال نتیجه را بررسی میکنیم تا اگر عضو نبود پیام مورد نظر به کاربر نمایش داده شود.

if( !isset($check['status']) || $check['status'] == 'left' )
{
    $message = "لطفا در کانال @channel_7bot عضو شوید.";
    echo sendMessage($chat_id,$message);
}

با اجرا شدن کد بالا در مرحله اول برای تمام کاربران با متد getChatMember بررسی می شود که کاربر عضو کانال ما هست یا نه و اگر عضو نباشد یک پیام به کاربر ارسال می شود.

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

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

پاسخی بگذارید

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