ربات تلگرام به صورت خلاصه کاری که انجام میده این هست، پیام رو از کاربر دریافت میکنه و به آدرسی که تعریف کردید ارسال میکنید و از اینجا به بعد این شما هستید که با برنامه نویسی باید مراحل بعدی رو تعیین کنید. سعی کردم به زبان خیلی ساده و خودمونی توضیح بدم تا اگر تازه آشنا شدین مشکلی نداشته باشید. در پایان هم لینک دانلود سورس آموزش قرار گرفته بتونید استفاده کنید.
پیش نیاز ها
کمی آشنایی با زبان PHP
داشتن هاست با سرور خارج از ایران
داشتن دامنه با ssl
داشتن علاقه به طراحی ربات تلگرام
البته اگر قصد دارید روی لوکال هم کارتون رو انجام بدید دو تا مورد دیگه هم هست
نرم افزار ngrok
نرم افزار تغییر آی پی
کار اولی این هست localhost رو به اینترنت وصل کنه تا بتونید اطلاعات ارسالی از api تلگرام رو روی لوکال دریافت کنید.
دومی هم به دلیل فیلتر بودن تلگرام با آی پی ایران ضروری هست. برای هرکدوم از این موارد مثلا ssl اگر آشنا نیستید کافیه سرچ کنید توی گوگل "آموزش ssl رایگان هاست دایرکت ادمین" کلی آموزش هست که میتونید استفاده کنید. پس با در نظر گرفتن این که شما با پیش نیاز ها آشنا هستید کار رو شروع میکنیم.
اول از همه این آدرس رسمی داکیومنت های تلگرام برای استفاده api است که میتونید به صورت مفصل و جامع اون رو بعدا بررسی کنید.
Webhook
وقتی ربات خودتون رو ساختید و به api تلگرام اعلام کردید هروقت کاربری داخل ربات پیام یا فایل ارسال کرد اون اطلاعات رو با متد POST به این URLبفرست تا من بتونم بقیه کار رو انجام بدم. به صورت ساده این کار میشه Webhook یعنی نیازی نیست شما مداوم بررسی کنید که آیا پیامی ارسال شده یا نه بلکه باید گوش به زنگ باشید هر پیامی که ارسال شد و با برنامه نویسی پاسخ بدید.
برای این کار ابتدا باید طبق عکس زیر آدرس و توکن خودتون رو قرار بدید و در مرورگر اجرا کنید.
بعد از اون باید چنین جوابی رو دریافت کنید، اگر جواب غیر از این بود یعنی یه جار کار مشکل داره. در ضمن فراموش نکنید url وارد شده باید دارای ssl باشد یعنی به صورت https://mydomain.com/webhook.php باشه تا مورد تایید باشه.
خب تا اینجا به تلگرام فهموندیم که باید هر پیام و فایلی که کاربرا روی روبات ارسال میکنن رو با متد POST به این urlبفرسته. از اینجا به بعد کار ما شروع میشه.
دریافت متن پیام و شناسه ارسال کننده پیام. تلگرام تمام اطلاعات رو به فرمت json ارسال میکنه که باید به شیوه زیر اون رو دریافت کنیم.
در خط دوم که ورودی ها رو به آرایه تبدیل کردیم، این کار زمانی درست و بدون خطا هست که ورودی به فرمت json باشه. چون داریم فقط برای apiتلگرام به صورت اولیه کار میکنی کارمون راه می افته اما فراموش نکنید که هر شخص دیگری هم میتونه هر دیتا دیگه ای رو روی اون آدرس ارسال کنه پس بهتره از این پارامتر به صورت مستقیم استفاده نکنیم. متغییر اصلی ما در خط اول باید به این شکل باشه:
این همون ورودی ما از طرف api تلگرام هست، بلافاصله بعد از این که یک کاربر در ربات ما پیام hello رو ارسال چنین ورودی برای url ما POST میشه.
با استفاده از تابع json_decode() اون رو به یک آرایه تبدیل کردیم تا بتونیم از اطلاعاتش استفاده کنیم و بقیه مراحل رو انجام بدیم.
ما به 2 تا اطلاعات ضروری نیاز داریم اولی chat_idهست و دومی text هست.
chat_id شناسه یکتا برای هر چت هست تا بتونیم به اون چت پیام ارسال کنیم.
Text همون پیامی هست که کاربر داخل ربات ارسال کرده.
حالا با استفاده از متد sendMessage هر پاسخی که بخوایم برای کاربر مورد نظر ارسال میکنیم به همین سادگی! خب الان این متد رو به یک functionتبدیل می کنیم تا دیگه نیاز نباشه مدام اون رو کپی کنیم و کارمون هم تمیز تر باشه.
کار این تابع این هست که شناسه چت یا همون chat_id و متن مورد نظر شما یا همون text رو دریافت می کنه و در ربات شما برای کاربر پیام رو ارسال می کنه به همین سادگی. البته حتما توکن خودتون رو قرار بدید.
در این آموزش سعی شد بدون هیچ Class آماده ای این کار انجام بشه تا صرفا با apiخود تلگرام آشنا بشید و اگر هم قصد استفاده از Class های مرتبط رو داشتید (که در پروژه های بزرگ حتما لازمه از یکی استفاده کنید تا سرعت کارتون رو ببرید جلو) بتونید در صورت نیاز برای خودتون تغییراتی ایجاد کنید.
حالا واسه قشنگ تر شدن کار یک کیبورد ساده هم به ربات اضافه میکنیم تا علاوه بر پاسخ کاربر یک کیبورد رو هم ببینه. برای این کار یکم راجب کیبورد ها توضیح میدم.درحال حاضر ما فقط داریم از دو پارامتر (text,chat_id) استفاده میکنیم. یک پارام به نام reply_markup برای متد های تلگرام وجود داره که همون کیبورد خومون هست! ما دو نوع کیبورد داریم یکی ساده و یکی شیشه ای یا همون inline الان فقط از کیبورد ساده استفاده میکنیم. برای ساخت کیبورد ساده باید:
کیبورد ما آماده شد کافیه بهش نگاه کنید تا متوجه ساختار اون بشید. الان کاری که باید انجام بدیم اون رو در function خودمون قرار بدیم تا علاوه بر پیام کیبر هم ارسال کنه. پس تابع جدید ما میشه این:
دلیل استفاده از json_encode این هست که تلگرام رو به فرمت json از ما دریافت میکنه. ما هم آرایه خودمون رو به این فرمت تبدیل کردیم.
خب حالا وقتش رسید که کدهایی که زدیم رو تست کنیم و ببینیم چه نتیجه ای میده. کدهای بالا به تنهایی پیامی ارسال نمیکنه چون ما متد ارسال پیام رو تبدل به function کردیم حالا کافیه از اونها استفاده کنیم.
الان مشخص کردیم که بابت پیام هایی که کاربر ارسال میکنه چه جوابی باید دریافت کنه. اگه پیامش جزو مواردی که مشخص شده نباشه هیچ پیامی هم دریافت نمیکنه.
این آموزش صرفا جهت آشنایی با api تلگرام هست تا با استفاده از اون بتونید واسه خودتون ربات های تلگرامی بسازید و یا حتی در کانال ها و گروه های خودتون پست ارسال کنید و اون ها رو مدیریت کنید.
هرچند راه های زیادی برای ساختن ربات وجود داره، این که خودتون اون رو برنامه نویسی کنید هم یکی از همون راه ها هست! برای مسلط شدن بهش بهتره بدون هیچ واسطه ای و صرفا مستقیم با خود متد های api تلگرام کار کنیم.
یک روش که برای افراد تازه کار و افرادی که نمیخان کدنویسی کنند، ساخت ربات با بات فادر هست. همونطور که میدونید با این روش ربات های ساده ای میشه ساخت و بنظرم دوستانی که در شروع کار هستند این روش رو امتحان کنند.
اما هنگام استفاده در یک پروژه بهتره از یک کتابخانه معتبر که برای این کار نوشته شده استفاده کنیم. با یک سرچ ساده به کلی کتابخانه دسترسی خواهید داشت مثلا اگر از فریمورک لاراول هم در کارتون بخواید استفاده کنید پکیج های خوبی وجود داره. البته ممکنه همه کامل نباشن برای اون چیزی که شما نیاز دارید اما در عوض سرعت کارتون رو بالا میبره و میتونید خودتون اونها رو شخصی سازی کنید.
اگه سوالی داشتید خوشحال میشم بپرسید!
این هم سورس کامل کار که میتونید استفاده کنید.