آموزش ساخت ربات تلگرام با php
نویسنده : نازنین رحمانی | زمان انتشار : 20 آبان 1399 ساعت 14:10
سلام. توی این آموزش قصد دارم تجربیاتم در زمینه نوشتن رباتهای تلگرامی رو خیلی سریع و خلاصه باهاتون به اشتراک بگذارم. این پست رو به صورت سوال و جواب مینویسم و به سوالات پرتکراری که توی گروهها و انجمنهای مختلف ازم پرسیده شده جواب میدم و آخر کار هم یک کلاس PHP عالی برای نوشتن راحت هر نوع روبات تلگرامی بهتون معرفی میکنم و نحوه استفاده ازش رو آموزش میدم.
خوب بستگی داره به خودتون، به اینکه چقدر توی برنامه نویسی تسلط و مهارت داشته باشید؛ قطعا هرچه با تجربه تر باشید کار با Bot-API تلگرام هم راحت تر و درکش رو ساده تر میکنه.
خوب داشتن دانش برنامه نویسی در حد شناخت دستورهایی مثل if, for و مفهوم Api و تابعها و یه مقدار اینکه بدونید Class چی هست و چطوری یه شی بسازید ازش کفایت میکنه.
هاست با حداقل 5 مگابایت فضا (از بعد از فیلترینگ فقط با سرورهای خارج از کشور کار می کند)
دامنه ای که روش اس اس ال (SSL) باشه. چون تلگرام بدون اس اس ال کار نمیکنه APIش.
و یک ادیتور و یه مقدار دانش برنامه نویسی!
خوب منم اوایل همین عقیده رو داشتم تا اینکه یکی از دوستان این سرویس رو بهم معرفی کرد. سایت ngrok مشکل ssl روی لوکال رو حل میکنه و قطعا سرویسهای مشابه دیگه هم وجود داره اگه سرچ کنید.
(بروزرسانی: این روش از بعد از فیلترینگ دچار اختلال شده و مجبورید روی سرورهای واقعی کدها رو اجرا کنید)
این سوال سوالیه که آموزش من رو شروع میکنه؛ سوالات کلی جواب داده شدن و در صورت داشتن سوالات بیشتر کامنت بذارید؛ در اسرع وقت در صورت نیاز پاسخ میدم.
من اوایل که روبات تلگرام و apiش معرفی شد از خود مستندات تلگرام شروع کردم که کار باهاشون خیلی وقت گیر و اعصاب خورد کن بود. تا اینکه توی سرچهام به این کلاس عالی که به زبان php هم نوشته شده برخوردم و دیگه همیشه از اون به بعد ازش استفاده کردم و در حد توانم بهش در پاسخگویی سوالاتش توی گیتهاب هم کمک کردم و خوبیش هم اینه که هماهنگ با آخرین تغییرات تلگرامه و با هر آپدیت کلاس هم آپدیت میشه که ایشالا خدا بهش عوض بده :))
برای استفاده از این کلاس و api تلگرام اول باید یه حساب کاربری تو تلگرام باز کنید ینی عضو تلگرام باشید. بعدش باید از تو خود تلگرام وارد ربات بات فادر بشید @BotFather. این روبات قدم به قدم و با پرسیدن سوالاتی مثل اینکه اسم بات میخواین چی باشه، نام کاربریش چی باشه و ... راهنمایی میکنه و بعد از اینکه همه چی اوکی پیش رفت بهتون یه token میده. این توکن کدشناسایی بات شما توی api خواهد بود که میتونید از طریق اون با سرورهای تلگرام ارتباط برقرار کنید.
حتما قبلش کلاس معرفی شده رو از اینجا و روی گیتهاب دانلود کنید و بعد فایل زیر رو کنارش قرار بدید.
کار بعدی اینه که یک فایل درست کنید و این موارد رو داخلش بنویسید. من اسم فایل رو میذارم mybot.php.
include("Telegram.php");date_default_timezone_set("asia/tehran");// Set the bot TOKEN$bot_id = "YOUR-TOKEN";// Instances the class$telegram = new Telegram($bot_id);
تا اینجای کار ما بات روی توی بات فادر ساختیم، و توکن رو هم توی فایل تنظیم کردیم و یک شی هم ساختیم از کلاسش. فایل رو نبندید و بقیه آموزش رو بخونید :)
تلگرام از وبهوک برای کار با API استفاده میکنه؛ طرز تنظیمش برای بات هم این شکلیه. شما فقط کافیه مواردی که با حروف بزرگ نوشتم رو جایگزین کنید و آدرس رو توی مرورگر وارد کنید و اینتر بزنید!
https://api.telegram.org/botYOUR-TOKEN/setwebhook?url=YOUR-URL
- نکته ها:
قبل از این کار سه فایل Telegram.php. TelegramErrorLogger.php, mybot.php که مربوط به کلاس معرفی شده هستش رو باید توی یک پوشه و یک مسیر واحد روی سرورتون آپلود کنید.
کلمه bot قبل از توکن حتما باید وجود داشته باشه.
آدرس دامنه حتما باید https باشه یعنی روی دامنه ssl فعال شده باشه.
پسوند دامنه فرقی نمیکنه چی باشه. (آیآر یا ...).
همه متغیرها و توابع کلاس معرفی شده بالا طبق مستندات خود تلگرام نوشته شده، پس برای نوشتن رباتهای پیشرفته تر مستنداتش رو توی گیتهاب مطالعه کنید و یا همینجا سوال بپرسید. حالا موارد زیر رو اضافه کنید به فایل mybot.php
$text = $telegram->Text(); // متنی که کاربر ارسال میکنه$username = $telegram->Username(); // نام کاربری کاربر$name = $telegram->FirstName();$family = $telegram->LastName();$message_id = $telegram->MessageID(); // هر پیغام در تلگرام یک آیدی یکتا دارد$user_id = $telegram->UserID(); // آیدی یکتای کاربر$chat_id = $telegram->ChatID(); // آیدی مکانی که چت صورت میگیرد، مثل خود بات یا آیدی گروه
متغیرها با استفاده از توابع کلاس هر بار که دیتایی توی روبات رد و بدل میشه پر میشن و تغییر میکنن. پس تا اینجا و با کدهای بالا ما مسیج آیدی، نام، نام خانوادگی در صورتی که کاربر اون رو درست وارد کرده باشه و از همه مهمتر چت آیدی یکتای کاربر (user_id) که کل پیغامها و جوابهای روبات با استفاده از این برای مخاطب ارسال میشه رو داریم. برای تست اینکه ببینیم ربات درست کار میکنه این کدها رو هم در ادامه فایل اضافه کنید.
if(!is_null($text) && !is_null($chat_id)){ $content = array('chat_id' => $chat_id, 'text' => $user_id); $telegram->sendMessage($content); }
حالا محتوای فایل روی سرور رو ذخیره کنید و وارد باتتون بشید و بعد /start رو کلیک کنید و یا متنی رو وارد کنید. با هر بار وارد کردن و ارسال هر متنی توی بات، چت آیدی شما به عنوان پاسخ برگردونه میشه.
فکر میکنم کار تمام باشه. بوسیله این کلاس فوق العاده شما میتونید پیشرفته ترین رباتها رو بنویسید و هیچ کم و کسری خوشبختانه نداره و خیلی عالی همه چیز رو پوشش داده و خودتون هم میتونید در صورت تمایل توی توسعه این کلاس به نفر اصلی کمک کنید که خیلی فعالانه توی قسمکت issues به سوالها هم جواب میدن.
موفق باشید و سوالی داشتید حتما بپرسید. و اینکه کدهای نهایی شما باید با این شکل باشه. خطوط شماره 15 و خطهای 23 تا 26 رو میتونین نادیده بگیرید فعلا و کامنت کنید.