تا به حال به این فکر افتادهاید، که چگونه میتوان یک ربات برای تلگرام ساخت، یا اینکه رباتهای دیگر چگونه کار میکنند. ما در این مقاله قصد داریم، که یک ربات با همدیگر بسازیم، و با فرایند ساخت ربات تلگرام با PHP آشنا شویم، پس در ادامه همراه ما باشید.
اگر شما هم به برنامه نویسی php علاقه مند هستی و میخای در این زمینه کسب درآمد داشته باشی پیشنهاد میکنیم در دوره آموزش php شرکت کنی .
پیش نیازهای این مقالهی آموزشی داشتن دانش مقدماتی از PHP و داشتن یک هاست و دامنه است، تا بتوانیم با سرور تلگرام ارتباط برقرار کنیم، و همانطور که میدانید، باید حتما از یک VPN نیز استفاده کرد. اگر فکر میکنید که این پیش نیازها را دارید بریم تا آموزش ساخت ربات تلگرام با php را شروع کنیم.
شاید در دید اول ما برای ساخت یک ربات تلگرامی Bot father را به خاطر نیاوریم. Bot father همانطور که از نامش پیدا است، پدر تمامی رباتهای تلگرامی ساخته شده است، پس زمانی که ما تصمیم به ساخت یک ربات تلگرام داشته باشیم، ابتدا باید ربات خود را به Bot father معرفی کنیم، و Bot father ربات ما را جزو خانوادهی خود بداند.
همانطور که اشاره شد، اولین قدم در راه اندازی یک ربات تلگرامی مراجعه به Bot father است. دسترسی به Bot father خیلی آسان است، فقط کافی است، کلمهی botfather را در بخش جستجو نرم افزار تلگرام جستجو کنید.
زمانی که Botfather را جستجو میکنید، چندین گزینهی مختلف برای شما به نمایش میگذارد، که Bot father اصلی همانی است، که تیک آبی دارد، و مورد تایید تلگرام است، زمانی که روی گزینهی مورد نظر کلیک میکنید، با محیطی که مانند عکس پایین است رو به رو خواهید شد.
برای اینکه بتوانید شروع به کار کنید، باید دکمهی start را بزنید. بعد از زدن دکمهی start با صفحهای مانند صفحهی زیر رو به رو خواهید شد.
در پیغامی که Bot father به ما میدهد، به ما میگوید که در ساخت و مدیریت رباتهای تلگرامی میتواند کمک کند. اما همانطور که قابل مشاهده است، چندین گزینه یا دستور با رنگهای آبی وجود دارد، که شبیه به لینک هستند، که ما در آموزش ساخت ربات تلگرام با PHP ، با چند تا از آنها کار خواهیم کرد.
با زدن این دستور ما میتوانیم رباتهای دلخواه خود را بسازیم، ما برای شروع ابتدا با این دستور کار داریم پس با ما همراه باشید تا ربات خود را در تلگرام ایجاد کنیم.
بعد از اینکه دستور newbot را وارد کردیم Bot father این پیغام
.Alright, a new bot. How are we going to call it? Please choose a name for your bot
را به ما نشان میدهد، که میگوید: ” یک ربات جدید. قرار است که ما نام این ربات را چه بگذاریم؟ لطفا یک نام برای ربات خود انتخاب کنید. “
که ما طبق راهنمایی Bot father یک نامی را قرار میدهیم، برای مثال ما نام این ربات را ” ربات تلگرامی سون لرن ” میگذاریم، و شما هر نامی به دلخواه خود میتوانید، قرار دهید.
زمانی که نام ربات تلگرامی خود را انتخاب کردیم، در خواست بعدی Bot father این است، که برای ربات تلگرامی خود یک آیدی (Id) انتخاب کنیم، که پیغام به شکل زیر است.
Good. Now let’s choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or .tetris_bot
” حالا یک نام کاربری برای ربات خود انتخاب کنید که باید با کلمهی bot به پایان برسد. مثل TetrisBot یا tetris_bot. “
همانطور که در متن نیز اشاره شد، نام کاربری ربات ما باید با کلمهی bot به پایان برسد، تا بتوان به راحتی تشخیص داد، این یک ربات است، پس حتما این مورد را رعایت کنید. در اینجا ما آیدی (Id) ربات خود را SevenLearnTestBot قرار دادهایم.
در طول تنظیم کردن نام کاربری ربات خود ممکن است، با خطاهایی همچون Sorry, this username is invalid یا Sorry, this username is already taken. Please try something different برخورد کنید، که اشاره دارد، نام کاربری شما تکراری است، و قبلا توسط رباتی دیگر رزرو شده است. اما اگر نام کاربری را درست ثبت کنید، شما پیغام زیر را خواهید دید.
در پیغام بالا Bot father به شما تبریک میگوید، و به شما یک توکن (Token) میدهد، که منحصر به فرد برای ربات تلگرامی شما است، و به شما توصیه میکند، که این توکن را به صورت ایمن نگه دارید، و در یک جای امن ذخیره کنید. در قدمهای بعدی از این توکن استفاده خواهیم کرد.
برای اینکه اطمینان پیدا کنیم، از اینکه ربات ما ساخته شده است، میتوانیم نام کاربری ربات خود را در قسمت جستجو تلگرام جستجو کنیم.
زمانی که ربات تلگرامی را در کادر جستجو پیدا کردید، و بر روی آن کلیک کردید ربات خود را خواهید دید، که یک دکمهی start برای شروع دارد، و زمانی که روی دکمهی start بزنیم، ربات ما هیچ واکنشی نخواهد داشت، چون ما چیزی برای آن ننوشتیم.
برای اینکه بتوانیم ربات خود را تنظیم کنیم، برای قرار دادن توضیحات ربات که چه کارهایی میتواند بکند، و یا قرار دادن About و … باید از دستور myBots/ در Bot father استفاده کنیم، تا به رباتی که ساختهایم، دسترسی داشته باشیم.
زمانی که Bot father دستور myBots/ را وارد میکنیم، تمامی رباتهایی که تا الان ساختهایم، را به ما نشان میدهد، که طبق این آموزش ما تا الان تنها یک ربات ساختهایم.
از لیستی که به ما نشان میدهد ما رباتی که ساختهایم را انتخاب میکنیم.
زمانی که ما ربات خود را انتخاب میکنیم به ما چندین گزینه نشان میدهد، که ما برای تنظیمات ظاهری ربات تلگرامی خود به Edit Bot نیاز داریم، بر روی Edit Bot کلیک میکنیم.
زمانی که بر روی دکمهی Bot Edit کلیک میکنیم، با صفحهی بالا مواجه میشویم، گزینهی Edit Name باعث میشود، تا ما نام اصلی رباتمان را تغییر دهیم، همانی که در قسمت بالایی رباتمان نمایش داده میشود، و حتی یک بار نیز در زمان راهاندازی نام ربات را نیز Bot father از ما گرفت.
گزینهی Edit Description برای قرار دادن توضیحاتی مربوط به وظیفه یا وظایفی است، که این ربات انجام میدهد، و این توضیحات زمانی نمایش داده میشود، که یک فرد برای اولین بار وارد ربات ما میشود. بر روی گزینهی Edit Description میزنیم تا یک توضیحات کلی برای رباتمان قرار دهیم.
زمانی که روی دکمهی Edit Description بزنیم، از ما میخواهد، تا یک توضیح برایش بفرستیم. بعد از ارسال توضیحات به ما پیام موفق آمیز میدهد، و دو گزینه دیگر نیز نشان میدهد، گزینهی سمت چپ ما را به منوی اصلی ربات میبرد، که همان گزینههای Edit Name, Edit Description و … بود و گزینهی سمت راست ما را به لیست تمامی رباتهایمان میبرد.
گزینهی بعدی Edit About است، که باعث میشود ما برای رباتمان یک درباره قرار دهیم، که به طور پیش فرض خالی است.
بعد از انتخاب گزینهی Edit About از ما میخواهد که یک متن برایش ارسال کنیم، تا در قسمت پروفایل (Profile) ربات متن درباره (About) را نشان دهد. بعد از ارسال متن، دوباره متن موفق آمیز به ما نشان میدهد، و با زدن دکمهی Back to Bot به بخش تنظیمات ربات میرویم.
ما برای اینکه بتوانیم ربات خود را مدیریت کنیم، و بدانیم که چه کاربرانی چه نوع دستوراتی و یا چه پیام هایی وارد کردند، باید از API تلگرام استفاده کنیم، که خود تلگرام در اختیار ما گذاشته است، تا ما بتوانیم به راحتی از آنها استفاده کنیم. اگر میخواهید بدانید که API چیست میتوانید مقالهی API و Rest چیست؟ و آموزش Rest API در PHP به همراه ویدئوی آموزشی را بخوانید، تا در ادامهی مقالهی ساخت ربات تلگرام با php مشکلی نداشته باشید.
اول از همه میخواهیم، که اطلاعات ربات تلگرام خود را از طریق API دریافت کنیم، تا با API تلگرام آشنا شویم. برای بررسی این مورد مرورگر خود را باز کنید، و الگوی https://api.telegram.org/bot<token>/METHOD_NAME را رعایت کنید. در بخش <token> توکنی که Bot father برای ربات شما داد، را قرار میدهید، و در بخش METHOD_NAME نام متدهایی که تلگرام در اختیار شما قرار میدهد، را قرار میدهید. تمامی راهنماییها درون مستندات API ربات تلگرام وجود دارد و شما میتوانید از آن استفاده کنید.
حتما VPN خودتان را روشن داشته باشید و https://api.telegram.org/bot<token>/getme توکن خود را در قست token قرار دهید و تابع getme را صدا بزنیم، لازم به ذکر است که این آدرس را در مرورگر خود باز کنید.
زمانی که ما در مرورگر آدرس مورد نظر را وارد میکنیم با ساختار JSON بالا رو به رو خواهیم شد، اگر JSON نمایش داده شده به شکل عکس بالا نیست، میتوانید از افزونهی JSON Formatter برای مرورگر خودتان استفاده کنید.
در دادهای که به ما برگردانده میشود، اطلاعاتی که تمامی آن مربوط به ربات ما است، را به ما میگوید مثل، id ربات ما چیست، نام ربات، نام کاربری، اینکه این ربات میتواند، در گروههای تلگرامی عضو شود یا خیر و …
برای اینکه بتوانیم اطلاعاتی را دریافت کنیم، که درون پروژههای خود از آن استفاده کنیم، از متد getUpdates استفاده میکنیم، که اگر طبق الگو پیش برویم این متد در آخرین قسمت URL ما قرار میگیرد، https://api.telegram.org/bot<token>/getUpdates.
قبل از اینکه این آدرس را در آدرس بار مرورگر خود قرار دهیم لازم است، به رباتی که ساختهایم، چندین پیام تستی بدهیم، تا دقیقا متوجه کار تابع getUpdates شویم.
در رباتی که ساختهایم، ربات را start کردهایم، و دو پیام ساده برایش ارسال کردیم. حال باید https://api.telegram.org/bot<token>/getUpdates را در مرورگر خود باز کنیم.
بعد از وارد کردن آدرس در آدرس بار مرورگر ما با اطلاعاتی در قالب JSON رو به رو خواهیم شد، که تمامی اطلاعات مربوط به دو پیامی که به رباتمان دادهایم، را به ما میدهد.
اما اطلاعاتی که به ما میدهد چه هستند؟ هر پیام یا دستور که درون ربات ما وارد میشود، یک value از کلید result به حساب میآید، که هر value شامل اطلاعاتی است که کاربر درون ربات وارد میکند مثل پیامها یا دستورات (command).
به مقادیر اولین value کلید result دقت کنید، درون کلید from مشخصاتی از کسی که این پیام را فرستاده است، آمده است. نظیر آیدی، نام، نام کاربری، اینکه کسی که پیام را فرستاده است، ربات است یا خیر و …، در بلاک بعدی اطلاعاتی مربوط به چت و در خارج از بلاک chat کلیدهای date و text وجود دارد، که درون data زمان ارسال پیام به صورت timestamp ذخیره شده است، و درون text نیز متن پیام ارسال شده است.
این بار میخواهیم، به رباتی که ساختهایم، یک پیام بفرستیم، به این منظور که برای مثال کاربر یک پیام برای ربات ما ارسال کرده است، و ما نیز میخواهیم یک پاسخ به پیام کاربر بدهیم، در اینجا از متد sendMessage استفاده خواهیم کرد. پس به طور مستقیم از URL استفاده میکنیم. الگوی URL ما به این صورت خواهد بود:
https://api.telegram.org/bot<token>/sendMessage?chat_id=number&text=yourmessge
ما از طریق getUpdates توانستیم که به chat_id دست یابیم، پس از همان استفاده میکنیم، در URL بالا به جای number آیدی چت (chat_id) را قرار دهید و در yourmessage همان پیام دلخواه خود را وارد کنید.
زمانی که chat_id و text را قرار دادید، و آن را در مرورگر خود وارد کردید، شما یک پیام از خود ربات دریافت خواهید کرد، که حاوی متنی که شما وارد کردهاید است.
تا اینجای مقاله یاد گرفتیم، که چگونه با تلگرام ارتباط بر قرار کنیم، حال نوبت به آن رسیده که مقداری کد PHP بنویسیم تا با تلگرام ارتباط پویاتری داشته باشیم.
وارد پوشهی public_html در هاست خود شوید، بعد از وارد شدن به این پوشه یک پوشهی دلخواه برای خود ایجاد کنید، برای مثال نمایش را bot قرار دهید، و درون پوشهی ایجاد شده یک فایل PHP ایجاد کنید، تا بتوانید کدهای PHP را درون آن قرار دهید. سپس کد زیر را درون آن قرار دهید، تا در ادامه برای شما توضیح دهیم، که کد چه کاری انجام میدهد.
<?php
$token = "133141********************n2nUtqVcHXgbyGY99_pE";
$url = "https://api.telegram.org/bot" . $token;
$method = "/getupdates";
$update = file_get_contents($url . $method);
print_r($update);
در کد بالا ما ابتدا token خود را درون متغیر token ذخیره سازی کردهایم، در خط بعدی ما آدرس سایتی که با آن، با تلگرام ارتباط برقرار میکنیم، را وارد کردهایم، و توکن (token) خود را طبق الگو وارد میکنیم. درون متغیری به اسم method نیز آن کاری که ما با رباتمان میخواهیم انجام دهیم، را قرار میدهیم، مثل کاری که در قدمهای قبلی انجام دادهایم.
در ادامهی کد ما یک تابع به اسم file_get_contents را صدا زدهایم، شاید شما از متد قبل برای اینکه محتوای یک فایل را به دست بیاورید استفاده کردهاید، اما کاربرد دیگری نیز مثل اینجا دارد، که ما به عنوان ورودی به این تابع آدرس سایت و متد را دادهایم، و درون متغیر update قرار دادهایم، پس تمامی مقادیر دریافتی از آدرس مورد نظر از طریق متد file_get_contents درون متغیر update قرار دارد.
و در نهایت برای اینکه تست کنیم، که آیا به درستی کار کرده است، یا خیر متغیر update را print_r کردهایم.
حال از طریق URL فایلی که درون آن کدهای خود را دارید، اجرا کنید، برای مثال:
www.example.ir/bot/index.php
بعد از اجرا کردن کدهای درون هاست خود شما با خروجی زیر مواجه خواهید شد.
به طور کلی ساختاری که به ما برگردانده میشود طبق معمول یک ساختار json است، اما اگر با json راحت نیستید، میتوانید به راحتی آنها را به آرایه تبدیل کنید.
$updateArray = json_decode($update);
حال برای اینکه متوجه شویم کاربر چه پیامی را وارد کرده است، و ما نسبت به آن واکنش نشان دهیم، باید به پیام کاربر که درون آرایه بالا ذخیره کردهایم دسترسی داشته باشیم.
$userMessage = $updateArray['result'][0]['message']['text'];
بگذارید تا دربارهی کد بالا به شما توضیح دهم، درون آرایهای که ما تمامی اطلاعات بازگشتی از طریق سرور تلگرام را داریم، ایندکس اول آن که برای ما مهم است یعنی result را صدا زدهایم، تمامی پاسخهای بازگشتی از تلگرام از طریق این ایندکس قابل دسترس است. بعد از ایندکس result، ما به پیام اول که ایندکس ۰ دارد، دسترسی داریم، و پیامهای بعدی به ترتیب از ۰ به بالا ایندکسگذاری شدهاند، که میتوانید این را درون یک حلقه قرار دهید، و به تمامی پیامها دسترسی داشته باشید، و بعد از آن به کلید message و دیگری کلیدی درونی آن text که پیام است استخراج کردهایم.
$chat_id = $updateArray['result'][0]['message']['chat']['id'];
در کد بالا نیز ما به chat_id دسترسی داریم. حال برای اینکه بتوانیم، یک پیام به کاربر از طریق کد ارسال کنیم، کافی است، از همین اطلاعاتی که داریم، استفاده کنیم.
<?php
$token = "133141********************n2nUtqVcHXgbyGY99_pE";
$url = "https://api.telegram.org/bot" . $token;
$method = "/getupdates";
$update = file_get_contents($url . $method);
$userMessage = $updateArray['result'][0]['message']['text'];
$chat_id = $updateArray['result'][0]['message']['chat']['id'];
$method = "/sendmessage";
file_get_contents($url . $method . "?chat_id=" . $chat_id . "&text=" . $userMessage);
حال اگر مرورگر خود را refresh کنید خواهید دید که ربات به کاربر پیام خودش را خواهد داد.
به پایان آموزش مقدماتی ساخت ربات تلگرام با php رسیدهایم. اما تمرین، برای تمرین به شما عزیزان توصیه میکنیم با api گیتهاب کار کنید مثل api تلگرام. کاربر بتواند در ربات تلگرامی شما نام کاربری گیتهاب خودش را وارد کند، زمانی که کاربر نام کاربری خودش را وارد کرد، شما آن نام کاربری را دریافت کنید، و مشخصات گیتهاب آن کاربر را استخراج کنید، و به عنوان پاسخ به کاربر در ربات خود باز گردانید، میتوانید از مستندات خود گیتهاب برای راهنمایی استفاده کنید.
جمعبندی
در این مقالهی آموزشی یاد گرفتیم که چگونه بتوانیم با رباتهای تلگرامی ارتباط برقرار کنیم و از آنها بهرهی مناسبی ببریم، آموزش این مقاله، مقدمهای بر ساخت ربات تلگرام با php است، اما شما میتوانید، آن را توسعه دهید. اگر در این زمینه سوال یا نظری داشتید خوشحال میشویم که با ما و کاربران سون لرن به اشتراک بگذارید.
اگر به یادگیری بیشتر در زمینهی PHP علاقه داری، با شرکت در دورهی آموزشی متخصص PHP در کمتر از یک سال به یک متخصص PHP تبدیل میشوی که آمادهی استخدام، دریافت پروژه، کسب درآمد و یادگیری مباحثی مثل لاراول هستی.
از این تاپیک کمک بگیرید.