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

نوشته‌شده در در آموزش های عمومی
Loading Likes...

سلام دوستان

این روزها یکی از پر جست و جو ترین واژه‌های کاربرهای ایرانی “تلگرام” هست.  با توجه به محبوبیت چشمگیر این نرم افزار پیام رسان نیاز به نوشتن ربات برای تلگرام هم بیشتر میشه و بازار کار خوبی رو هم فراهم کرده. خوب در این مقاله من میخوام نحوه نوشتن یه ربات ساده رو برای شما توضیح بدم که با نحوه کلی کار ربات ها آشنا بشید و شروع کنید به نوشتن ربات ها.

خوب آماده اید؟

اولین کاری که برای ساخت یه ربات لازمه اینه که یک توکن دریافت کنید. هر ربات برای شناسایی نیاز به یک توکن داره که برای کارای مختلف که در آینده میگم به اون نیاز هست. برای دریافت توکن میتونید از Bot father کمک بگیرید. Bot father یک ربات رسمی از طرف تلگرام هست که برای مدیریت ربات های شما فراهم شده.

دریافت توکن ربات

برای این کار آیدی BotFather@ رو در قسمت جست و جوی تلگرام وارد کنید و botfather رو انتخاب کنید.

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

در ادامه دستور newbot/ رو وارد کنید و یک نام برای ربات انتخاب کنید و در مرحله بعد نام کاربری ربات رو انتخاب کنید توجه کنید که نام ربات باید با Bot یا bot_ ختم بشه. حالا bot father کد Token رو به شما میده.

Token یه کد مهم هست و بجز شما نباید کسی بهش دسترسی داشته باشه.

 

آموزش نوشتن ربات تلگرام

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

ست کردن وب هوک

خب! برای اینکه ربات شما بتونه برای کاربر پیام مشخصی بفرسته باید یه فایل واسط که کنترل کننده ربات هست ست بشه! مثلا وقتی شما برای بات پیام “سلام” رو میفرستید این سلام بعد از طی کردن یکسری مراحل به همراه اطلاعات فرستنده و نوع پیام  ارسال میشه به اون فایل واسط و اونجا شما میتونید تعریف کنید اگر کاربر پیام سلام رو فرستاد در جوابش ربات باید بگه “و علیکم السلام!” (رباته عربه ×ـ× )

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

https://api.telegram.org/bot[token]/setwebhook?url=https://site.com/update.php

تو آدرس بالا باید بجای [token] همون کد توکن خودتون رو وارد کنید و در آخر هم آدرس فایل هوک رو وارد کنید. توجه کنید که حتما باید سرور مقصد گواهی نامه SSL داشته باشه. اگر SSL نخریدید میتونید از سرورهای واسط یا استفاده کنید یا گواهی نامه خودتون رو بسازید(self-signed certificates)با اگر تو لوکال دارید تست میکنید میتونید از سرویس هایی که آدرس آنلاین بهتون میدن(به عبارت دیگه لوکال هاست شما رو از طریق اینترنت قابل دسترس میکنن) مثل localhost.run ، pagekit یا ngrok و… استفاده کنید.

بعد از اجرای آدرس بالا باید پیغام Webhook was set رو دریافت کنید

نوشتن ربات تلگرام

تبریک شما تنظیمات اولیه رو انجام دادید! بریم بعدی؟

کد نویسی

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

برای اینکه شما بتونید برای کاربر پیام بفرستید باید از متدهایی که تلگرام در نظر گرفته استفاده کنید. مثلا اگر میخواید پیغام متنی بفرستید از متد sendMessage  باید کمک بگیرید یا برای ارسال تصویر باید از متد sendPhoto استفاده کنید. برای مشاهده لیست متدها به داکیومنت رسمی تلگرام رجوع کنید.

تمامی متدهای تلگرام Case-sensitive هستند یعنی به حروف بزرگ و کوچک حساس هستند.

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

خوب ما میخوایم اینجا به ساده ترین روش ممکن یه مثال از دریافت و ارسال پیام ها بیاریم.

<?php/*
* PHP basic telegram bot
* http://irdevs.com
*/

ini_set('error_reporting', 'E_ALL');

$botToken = "543342655:AAGrsDkgccX-Y6ruKGnYTRLsTM_lICy31X0";
$telegram_http  = "https://api.telegram.org/bot" . $botToken;

// get info from php input
$update = file_get_contents("php://input");

// decode json data
$update = json_decode($update, true);

// custom function for sending messsages
function sendMessage($chatId, $message)
{
   $url = $GLOBALS['telegram_http'] . "/sendMessage?chat_id=" . $chatId . "&text=" . urlencode($message);
   file_get_contents($url);
}

// get the chat id to able to reply  
$chatId  = $update["message"]["chat"]["id"];

// get user message
$message = $update["message"]["text"];


switch ($message) {
   case "/start":
       sendMessage($chatId, "خوش آمدید");
       break;
   case "سلام":
       sendMessage($chatId, "و علیکم السلام برادر!");
       break;
   default:
       sendMessage($chatId, "متوجه نشدم!");
}

همونطور که میبینید کد بسیار سادست! و روش کار هم به همین راحتیه! ما تو کد بالا اومدیم ابتدا توکن بات رو توی یه متغیر گذاشتیم که برای هر ارسال بتونیم ازش استفاده کنیم. و در لاین های بعد ما میایم از طریق php//input مقدار و اطلاعات ورودی رو دریافت میکنیم که شامل کل اطلاعات مورد نیاز ماست که شبیه فرمت زیره:

{
    "update_id": 53205662,
    "message": {
        "message_id": 1,
        "from": {
            "id": 523825xxx,
            "is_bot": false,
            "first_name": "Reza",
            "last_name": "Ramezanpour",
            "username": "reza_irdev",
            "language_code": "en-US"
        },
        "chat": {
            "id": 5238251xx,
            "first_name": "Reza",
            "last_name": "Ramezanpour",
            "username": "reza_irdev",
            "type": "private"
        },
        "date": 1518x,
        "text": "/start",
        "entities": [
            {
                "offset": 0,
                "length": 6,
                "type": "bot_command"
            }
        ]
    }
}

همونطور که میبینید اطلاعاتی مثل نام کاربر، آیدی کاربر، متن وارد شده و … رو اینجا داریم.
در لاین های بعدی ما اومدیم همین اطلاعات رو گرفتیم و تو متغیرهای chatId$ و message$ ذخیره کردیم و در ادامه با توجه به پیام وارد شده جوابمون رو ارسال کردیم. به همین راحتی!

طراحی ربات تلگرام

 

استفاده از Framework ها

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

 

هر سوالی در این باره رو میتونید در انجمن مطرح کنید.

 

 



سوالی دارید؟

بدون گرفتن نتیجه اینجا رو ترک نکنید! هر سوالی دارید میتونید در عرض ۱۵ ثانیه ثبت نام و خیلی زود جواب بگیرید.

5 دیدگاه برای «آموزش آسان ساخت ربات تلگرام با PHP»

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

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

2 × = 20