سلام دوستان
این روزها یکی از پر جست و جو ترین واژههای کاربرهای ایرانی “تلگرام” هست. با توجه به محبوبیت چشمگیر این نرم افزار پیام رسان نیاز به نوشتن ربات برای تلگرام هم بیشتر میشه و بازار کار خوبی رو هم فراهم کرده. خوب در این مقاله من میخوام نحوه نوشتن یه ربات ساده رو برای شما توضیح بدم که با نحوه کلی کار ربات ها آشنا بشید و شروع کنید به نوشتن ربات ها.
خوب آماده اید؟
اولین کاری که برای ساخت یه ربات لازمه اینه که یک توکن دریافت کنید. هر ربات برای شناسایی نیاز به یک توکن داره که برای کارای مختلف که در آینده میگم به اون نیاز هست. برای دریافت توکن میتونید از Bot father کمک بگیرید. Bot father یک ربات رسمی از طرف تلگرام هست که برای مدیریت ربات های شما فراهم شده.
دریافت توکن ربات
برای این کار آیدی BotFather@
رو در قسمت جست و جوی تلگرام وارد کنید و botfather رو انتخاب کنید.
در ادامه دستور newbot/
رو وارد کنید و یک نام برای ربات انتخاب کنید و در مرحله بعد نام کاربری ربات رو انتخاب کنید توجه کنید که نام ربات باید با Bot یا bot_ ختم بشه. حالا bot father کد 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
استفاده کنید. برای مشاهده لیست متدها به داکیومنت رسمی تلگرام رجوع کنید.
ساخت یک ربات ساده
خوب ما میخوایم اینجا به ساده ترین روش ممکن یه مثال از دریافت و ارسال پیام ها بیاریم.
<?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 ها
دیدید که ما تو کد بالا یک تابع برای ارسال پیام درست کردیم اما شما میتونید این توابع آماده و کلی متدها و امکانات دیگه مثل ساختن کیبوردها و کل متدهای تلگرام رو با استفاده از فریمورک ها بدون اینکه خودتون همشو بنویسید داشته باشید و این کار باعث میشه کلی در وقت صرفه جویی بشه. برای اطلاعات بیشتر میتونید به این لینک مراجه کنید.
تو این آموزش هم یه فریمورک خوب معرفی شده میتونید امتحان کنید.
هر سوالی در این باره رو میتونید در انجمن مطرح کنید.
نظردهی شما باعث میشه در این باره بیشتر بنویسیم!
واقعا ممنونم خیلی عالی بود
سلام ربات اینستا هم اموزشی دارید من خیلی دنبالشم
سلام و عرض ادب
من ngrok رو راه انداختم و مشکلی باهاش ندارم
الان مشکلم با تلگرامه
http://s8.picofile.com/file/8339111684/Capture.PNG
لطفا به این لینک نگاه بندازین
سلام. لطفا سوالتون رو در سایت بپرسید. https://irdevs.com