ساخت ربات تلگرام با PHP - راهنمای گام به گام

106 بازدید 1 ماه قبل 0 دیدگاه

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

ساخت یک ربات در تلگرام

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

1. در تلگرام، BotFather (@BotFather) را جستجو کنید
2. دستور `/newbot` را ارسال کنید.
3. نام ربات و نام کاربری منحصر به فرد (username) برای آن انتخاب کنید. توجه داشته باشید که username حتما باید به کلمه bot ختم شود. مانند laraplusbot
4. پس از ایجاد ربات، BotFather یک توکن API به شما می‌دهد. این توکن را در جای امنی ذخیره کنید. چون در مراحل بعد به آن نیاز دارید

آماده‌سازی محیط PHP

برای توسعه ربات تلگرام با PHP، نیاز به موارد زیر دارید:

- نصب PHP (نسخه 7.0 یا بالاتر توصیه می‌شود)
- دسترسی به هاست یا سرور با قابلیت اجرای PHP
- فعال بودن تابع `file_get_contents` برای ارسال درخواست‌های HTTP

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

یک فایل PHP به نام `bot.php` ایجاد کرده و کد زیر را در آن قرار دهید:
 


<?php
$botToken = "YOUR_BOT_TOKEN_HERE";
$website = "https://api.telegram.org/bot".$botToken;

$update = file_get_contents("php://input");
$updateArray = json_decode($update, TRUE);

$chatId = $updateArray["message"]["chat"]["id"];
$message = $updateArray["message"]["text"];

if ($message == "/start") {
    sendMessage($chatId, "What Can We Do For You?");
}

function sendMessage($chatId, $message) {
    global $website;
    $url = $website."/sendMessage?chat_id=".$chatId."&text=".urlencode($message);
    file_get_contents($url);
}
?>

برای ارسال پیام به کاربران از طریق ربات، شما نیاز به chat id کاربر دارید که این chat id از طریق پیام ارسالی کاربر (که توسط تلگرام برای شما ارسال میشود) قابل دریافت است (خط 8)

هم چنین پیامی که کاربر ارسال نموئده است در خط 9 دریافت شده است. در نتیجه طبق کد فوق، در صورتی که کاربر پیام /start را در ربات ارسال کرده باشد، ما نیز برای او پیغامی با متن "What can We Do For You " را ارسال میکنیم

برای ارسال پیام به کاربر در sendMessage کافیست chat id و متن مورد نظر را از طریق آدرس مشخص شده به سرور تلگرام ارسال کنید. تلگرام با توجه به توکن ربات و chat id ارسالی، متوجه میشود که پیام را برای چه شخصی و در چه رباتی باید ارسال نماید

تنظیم وب‌هوک (Webhook) در ربات تلگرام

برای دریافت به‌روزرسانی‌ها از تلگرام، باید یک وب‌هوک تنظیم کنید. منظور از دریافت بروزرسانی ها این است که هر پیامی که توسط کاربران با ربات شما برقرار شود، به همان آدرسی که در webhook تنظیم میکنید، ارسال میشود.

1. فایل `bot.php` را روی سرور خود آپلود کنید.
2. URL زیر را در مرورگر خود باز کنید (به جای YOUR_BOT_TOKEN توکن ربات تلگرام و به جای your-server.com آدرس دامنه خود را قرار دهید):

https://api.telegram.org/botYOUR_BOT_TOKEN/setWebhook?url=https://your-server.com/bot.php

افزودن قابلیت‌های بیشتر

برای افزایش کارایی ربات، می‌توانیم قابلیت‌های بیشتری اضافه کنیم. مثلاً، اگر بخواهیم کاربر با ارسال دستور /time زمان فعلی را دریافت کنید میتوانیم از کد زیر استفاده کنیم:

if ($message == "/time") {
    $currentTime = date("H:i:s");
    sendMessage($chatId, "زمان فعلی: " . $currentTime);
}

ارسال زمان فعلی صرفا یکم مثال بوده و شما میتوانید با توجه به نیازهای خود برای ربات تلگرامی مدنظرتان، دستورهایی را تعریف کنید که کاربر با اراسل آنها، پاسخ متناسبی را از طرف شما دریافت نماید

ارسال عکس در ربات تلگرام

برای ارسال عکس در ربات تلگرام، از متد `sendPhoto` استفاده می‌کنیم:


function sendPhoto($chatId, $photoUrl, $caption = "") {
    global $website;
    $url = $website."/sendPhoto?chat_id=".$chatId."&photo=".$photoUrl."&caption=".urlencode($caption);
    file_get_contents($url);
}

// استفاده از تابع
if ($message == "/picture") {
    sendPhoto($chatId, "https://example.com/image.jpg", "این یک تصویر نمونه است.");
}

کافی است که آدرس تصویر و متن کپشن مورد نظر را همانند کد بالا برای سرور تلگرام ارسال نمایید

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

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


function sendKeyboard($chatId, $message, $keyboard) {
    global $website;
    $encodedKeyboard = json_encode(["keyboard" => $keyboard, "resize_keyboard" => true]);
    $url = $website."/sendMessage?chat_id=".$chatId."&text=".urlencode($message)."&reply_markup=".$encodedKeyboard;
    file_get_contents($url);
}

// استفاده از تابع
if ($message == "/menu") {
    $keyboard = [
        ["Button 1", "Button 2"],
        ["Click Me", "/profile"],
    ];
    sendKeyboard($chatId, "لطفاً یک گزینه را انتخاب کنید:", $keyboard);
}

با اجرای کد فوق، دو ردیف کیبورد برای کاربر نمایش داده میشود (در هر ردیف دو دکمه) که در ردیف اول دکمه های button 1 و button 2 و در ردیف دوم دکمه های Click Me و /profile به کاربر نمایش داده میشود. وقتی کاربر روی هر یک از این دکمه ها کلیک کند، متن دکمه به عنوان دستور برای ربات تلگرامی ارسال میشود و شما میتوانید به این دستور پاسخ دهید. بعنوان مثال اگر کاربر روی دکمه /profile کلیک کنید، دستور /profile ارسال میشود که شما میتوانید در فایل bot.php به صورت زیر به آن پاسخ دهید:

if ($message === '/profile') {
   sendMessage($chatId, "Please Enter Your Name");
}

بهبود ساختار کدها

برای مدیریت بهتر دستورات ارسالی از سوی کاربر، میتوانید از ساختار switch نیز استفاده کنید


switch($message) {
    case "/start":
        sendMessage($chatId, "What Can We Do For You?");
        break;
    case "/help":
        sendMessage($chatId, "Help:\n/menu - Current Time:\n/time - Example Picture\n/pricture");
        break;
    case "/time":
        $currentTime = date("H:i:s");
        sendMessage($chatId, "زمان فعلی: " . $currentTime);
        break;
    case "/picture":
        sendPhoto($chatId, "https://example.com/image.jpg", "این یک تصویر نمونه است.");
        break;
    case "/menu":
        $keyboard = [
            ["گزینه ۱", "گزینه ۲"],
            ["گزینه ۳", "گزینه ۴"]
        ];
        sendKeyboard($chatId, "لطفاً یک گزینه را انتخاب کنید:", $keyboard);
        break;
    default:
        sendMessage($chatId, "Invalid Command. please use /menu to access bot menu");
        break;
}

البته در نظر داشته باشید که ساختار switch صرفا مناسب ربات های کوچک با تعداد دستورات کم است و در صورت گسترش امکانات ربات، باید از ساختار اسکیل پذیر تری شامل route ها و ... استفاده کنید

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

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

در صورتی که میخواهید اطلاعات خود در خصوص ساخت رباتهای تلگرامی با PHP را افزایش دهید و دنیایی از فرصت های شغلی مرتبط با ساخت ربات های تلگرامی را بدست آورید، پیشنهاد میکنیم سرفصل های دوره ساخت ربات های تلگرامی پیشرفته با PHP را مطالعه نمایید که شامل ساخت چندین پروژه کاربردی ربات تلگرامی با PHP همراه با آموزش ابزارهای جانبی نظیر NgRok و Expose و ... میشود. همچنین در این دوره یک مینی فریمورک مختص ساخت ربات های پیشرفته تلگرامی ساخته خواهد شد که میتوانید از آن برای ساخت ربات های تلگرامی اسکیل پذیر استفاده نمایید 

0 دیدگاه   (ارسال دیدگاه)