ربات تلگرام

آموزش طراحی ربات تلگرام با php

folderسایر مقالات آموزشی
comments3 دیدگاه
php

در این مطلب نحوه ساخت ساده ترین ربات تلگرام وب هوک (webhook) با زبان برنامه نویسی پی اچ پی (PHP) را به شما آموزش می دهیم. یک آموزش گام به گام به زبان ساده و بیان همه نکات کاربردی مورد نیاز شما کاربران عزیز.

شرایط مورد نیاز:

برای ساخت این ربات شما به نسخه php 7.2+، افزونه cUrl، دامنه با گواهی SSL نیاز دارید. برای این کار می توانید از گواهینامه رایگان سایت Let’s Encrypt در آدرس https://letsencrypt.org/getting-started استفاده کنید.

 


پی اچ پی

توی این پک فوق العاده، PHP رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با PHP وبسایت بساز، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

مرحله 1- فرمول بندی مساله

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

/start: با زدن گزینه start ربات می گوید “Hello” یا “سلام” و عملکردهای خودش را شرح می دهد.

/save: نام و نام خانوادگی کاربر را ذخیره می کند.

/me: فقط در صورتی که داده های کاربر ذخیره شده باشند آنها را به او برمی گرداند. در غیر این صورت، پیامی مبنی بر اینکه کاربر را نمی شناسد ارسال می کند.

قصد ما این است که از طریق فیلد ورودی با ربات تعامل داشته باشیم. به این ویژگی “حالت درون خطی” (Inline mode) گفته می شود؛ یعنی تعامل از طریق پرس و جوهای درون خطی از فیلد ورودی متن در تمام چتها صورت می گیرد. تلگرام ویژگیهای مختلفی برای رباتها در اختیار شما می گذارد، مثل حالت درون خطی، پلتفرم پرداخت، پلتفرم بازی، صفحه کلید، دستورات و غیره.

۱۰ تا از بهترین زبان های برنامه نویسی برای وب و طراحی سایت

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

مرحله 2- تئوری ساخت

ربات تلگرام یک اکانت کاربری ویژه بدون شماره تلفن است. کاربران از دو طریق می توانند با این ربات ارتباط برقرار کنند:

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

ما برای ارتباط با سرورهای API تلگرام از رابط HTTPS ساده استفاده می کنیم. این رابط از HTTP GET و POST پشتیبانی می کند. پاسخ شامل یک شی جیسون (JSON) است که همیشه یک فیلد Boolean با گزینه «ok» دارد و ممکن است یک فیلد String اختیاری « description» به همراه توضیحی درباره نتیجه که برای انسان قابل خواندن است هم داشته باشد.

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

  • /getUpdate به روز رسانی ها را درست در لحظه فراخوانی شده، برمیگرداند.
  • webhook هر نوع درخواست از ربات را به برنامه ما ارسال می کند.

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

در کنار این مطلب دانلود کنید: آموزش طراحی سایت از صفر تا صد (16 درس رایگان)

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

[2-1] کاربر دستور را به ربات ما ارسال می کند.

[3-2] اپلیکیشن تلگرام درخواست را به API ارسال می کند.

[4-3] دو راه ارتباط بین برنامه و API تلگرام وجود دارد:

[مورد الف]: استفاده از getUpdate: با این روش نمی توانیم که بلافاصله بعد از ارسال فرمان به کاربر پاسخ بدهیم، بنابراین فقط می توانیم به روزرسانیها را تنها در صورتی دریافت کنیم که برخی از اقدامات در سمت اپلیکیشن را انجام بدهیم.

[مورد ب]: استفاده از webhook: با استفاده از این روش می‌توانیم با کاربر در زمان واقعی ارتباط برقرار کنیم و هر نوع به روزرسانی ربات به ما درخواست ارسال می کند.

مرحله 3- ساخت ربات

حالا آماده ساخت ربات هستیم! برای ساخت ربات مراحل زیر را طی کنید:

1- به BotFather بروید و توکن ربات خودتان را دریافت کنید. یادتان باشد که این توکن را نباید در اختیار کسی بگذارید.

2- همانطور که قبلا هم گفتیم، برای کار با API تلگرام فقط می توانیم از رابط HTTS استفاده کنیم، پس در برنامه مان به cUrl نیاز داریم. با این درخواست ساده از مرورگر می توانید cUrl را آزمایش کنید. فقط کافیست آدرس زیر را در مرورگرتان جایگذاری کنید:

https://api.telegram.org/bot<SecretBotToken>/getMe

3- حالا باید یک سرویس اتصال ایجاد کنیم، ما همیشه از اتصال cUrl استفاده می کنیم. به عنوان مثال:

define(‘BASIC_API_URL’, ‘https://api.telegram.org/bot<BOT_TOKEN>/’);public function make(string $action): array
{
$curlInit = curl_init();
curl_setopt($curlInit, CURLOPT_URL, BASIC_API_URL . $action);
$curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($curlInit); return json_decode($output, true);
}

ما اینجا از CurlConnectionService استفاده می کنیم که رابط ConnectionService را پیاده سازی می کند.

4- برای هر عملی به یک رمز مخفی نیاز دارید که از آن در url استفاده می شود؛ مثل /getMe. پس فرض می کنیم که ما قبلا راهی با استفاده از CURL ایجاد کرده ایم که برای درخواست یک URL می گیرد. این عمل ساده به صورت زیر خواهد بود:

$aboutMe = (new ConnectionService())->make(‘getMe’);

و بله، نتیجه aboutMe$ با فرمت json خواهد بود:

{
“ok”: true,
“result”: {
“id”: <bot_id>,
“is_bot”: true,
“first_name”: “bot_name”,
“username”: “bot_username”
}
}

خب، حالا باید چه کار کرد؟ الان باید وب هوک را تنظیم کنیم و برای این کار به میزبانی با URL HTTPS نیاز داریم. در در URL مذکور، به مسیر یا نام فایل (.php.) منحصر به فردی نیاز داریم. این مسیر یا فایل به عنوان کنترل کننده CORE برای ربات ما کار می کند. یادتان باشد که این مسیر یا نام به دلایل امنیتی باید مخفی باشد.

در ادامه بخوانید: آموزش HTML CSS‌ (به صورت پروژه محور)

به راحتی می توانید وب هوک را از ورودی جستجوی مرورگر راه اندازی کنید.

https://api.telegram.org/bot<SecretBotToken>/setWebhook?url=<webhookPageUrl>

5- از این مرحله به بعد می توانیم بدون بارگیری مجدد صفحات، به روزرسانیها را از ربات دریافت کنیم. بیایید این کار را انجام بدهیم:

// getting all data from incoming POST requestfile_get_contents(“php://input”);/*
* handle update as Associative array
* (or you can use object for this task)
*/$update = json_decode($update, true);

قصد ما این است که به دستورات کاربر واکنش نشان بدهیم؛ بنابراین باید داده های پیام را با پارامترهای فرعی «chat» و «text» زیر پارامتر مورد نیازمان دریافت کنیم:

switch ($update[‘text’]) {
case ‘/start’:
//some action
exit;
}

خب، حالا ما به دستور /start کاربر واکنش نشان می دهیم. بیایید پیامی برایش ارسال کنیم:

/*
* if user send /start command
* we answer hi!
*/$connectionService->make(
‘sendMessage?chat_id=’ . $update[‘chat’][‘id’] . ‘&text=hi!’
);

بعد می توانید این کار را روی رباتتان تست کنید. فقط کافیست پیام /start را برایش بفرستید.

6- حالا می توانیم دستورات را همانطور که میخواستیم دریافت کنیم. بعد باید سرویس ذخیره داده بسازیم که این کار را خودتان به راحتی می توانید انجام بدهید.

مرحله 4- ربات آماده است!

تبریک! ما توانستیم ربات تلگرام را در PHP بسازیم که می تواند نام و نام خانوادگی کاربر را از طریق چت او ذخیره کند. دیدید ساخت ربات تلگرام چقدر راحت است؟

ساخت ربات تلگرام در php

از همراهی شما سپاسگزاریم. موفق باشید.

در کنار این مطلب حتما دانلود کنید: آموزش صفر تا صد برنامه نویسی PHP (فیلم + pdf)

ویدیوی آموزش ساخت ربات تلگرام با کمک پی اچ پی

 

 

حتما دانلود کنید: روش ساخت سایت با PHP با یک مثال ساده 

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in,

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

3 دیدگاه. ارسال دیدگاه جدید

  • خدایی دمتون گرم

    پاسخ
  • سلام کد
    file_get_contents(‘php://input’)
    برای من کار نمیکنه درواقع انگار چیزی دریافت نمیکنم
    میشه لطفا راهنمایی کنین چون webhook رو هم ست کردم ولی وقتی پیام میفرستم برای ربات چیزی دریافت نمیکنم روی هاست

    پاسخ

دیدگاهتان را بنویسید

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

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست