به سومین جلسه از آموزش ساخت ربات تلگرام خوش آمدید. این جلسه به راه اندازی ربات تلگرام اختصاص خواهد داشت.
در جلسه قبل، ما رباتی را از طریق ربات بات فادر (BotFather) ساختیم، ولی این ربات هنوز عملیاتی نیست و کار نمی کند. به این معنی که چنانچه پیامی را دریافت کند، هیچ عکس العملی را از خود نشان نمی دهد. دلیل آن هم این است که هنوز هیچ کدی در سمت سرور برای این ربات نوشته نشده است. در این جلسه ما کدهای سمت سرور ربات را به زبان PHP نوشته و عمل راه اندازی ربات تلگرام را انجام خواهیم داد.
پیش از شروع کدنویسی به نحوه عملکرد ربات تلگرام می پردازیم…
نحوه عملکرد ربات تلگرام
کاربری که در محیط تلگرام با ربات کار می کند، نمی تواند درخواست خود را مستقیما به سرور ما (جایی که کدهای PHP قرار گرفته است) ارسال کند. همه چیز با واسطه سرور تلگرام انجام می شود. بدین صورت که کاربر درخواست خود را به سرور تلگرام ارسال کرده (مرحله ۱) و سرور تلگرام آن را برای سرور ما ارسال می کند (مرحله ۲).
پس از دریافت و پردازش درخواست ورودی، پاسخ به سمت سرور تلگرام ارسال شده (مرحله ۳) و سرور تلگرام آن را برای کاربر ارسال می کند (مرحله ۴). پس همه ارتباطات با واسطه سرور تلگرام انجام شده و هیچ راه ارتباطی مستقیمی بین کاربر ربات و سرور ما وجود ندارد.
نحوه عملکرد ربات تلگرام
کدنویسی PHP از طریق کنترل پنل هاست
در جلسه اول از آموزش طراحی ربات تلگرام، تعدادی از ویرایشگرها و IDE های موجود جهت کدنویسی به زبان PHP را خدمت شما عزیزان معرفی کردیم. اشاره ای هم داشتیم به اینکه بدون ویرایشگر و IDE هم می توان کدنویسی PHP را انجام داد (از طریق کنترل پنل هاست و بخش File Manager). مزیت اینکار راحتی و سرعت بالای کدنویسی است. بدون اینکه نیاز و وابستگی به محیط برنامه نویسی داشته باشیم، در لحظه کدها را نوشته، ذخیره کرده و نتیجه را در درون ربات مشاهده می نماییم (راه اندازی ربات تلگرام).
نمایی از کنترل پنل هاست و بخش File Manager
پس از کلیک و ورود به بخش File Manager ساختاری شبیه به ویندوز (حاوی تعدادی فایل و فولدر) را مشاهده خواهیم کرد. پس از ورود به بخش public_html یک فایل PHP جدید در مسیر public_html/telegram-bot/bot.php ایجاد میکنیم (نام فولدر و فایل ایجاد شده دلخواه است). این فایلی است که کدهای مربوط به ربات را درون آن خواهیم نوشت. بر روی این فایل کلیک راست کرده و با اننخاب گزینه Edit آن را جهت ویرایش باز می کنیم.
باز کردن فایل PHP جهت ویرایش (کدنویسی)
شروع کدنویسی (دریافت و پردازش درخواست ورودی)
پس از باز شدن فایل php ، کدهای مورد نظر خود را در آن می نویسیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $update = file_get_contents("php://input"); $update_array = json_decode($update, true); // JSON if( isset($update_array["message"]) ) { $text = $update_array["message"]["text"]; $chat_id = $update_array["message"]["chat"]["id"]; } ?> |
قطعه کد بالا اولین بخش از کدی است که می بایست به زبان PHP بنویسیم. خطوط ۱ و ۱۳ ، ابتدا و انتهای یک برنامه PHP را نشان می دهد. تمامی کدهای برنامه می بایست بین این دو بخش قرار گیرند.
در خط ۳ درخواست ورودی به ربات را دربافت کرده و درون متغیر update$ می ریزیم. درخواست ورودی به ربات از جنس JSON (جیسون) بوده و می بایست با تابع json_decode آنرا به آرایه تبدیل کنیم (خط ۵). JSON یک فرمت استاندارد و شناخته شده جهت انتقال اطلاعات بین سرورها و کلاینت هاست (جهت توضیحات بیشتر به ویدئوی ضمیمه آموزش مراجعه کنید).
در خطوط ۷ تا ۱۱ اطلاعات مربوط به پیام ارسالی و همچنین شناسه (id) کاربر ارسال کننده پیام را استخراج می کنیم. در انتهای کد بالا، متغیر text$ حاوی پیام ارسالی به ربات و متغیر chat_id$ حاوی شناسه کاربر ارسال کننده پیام است (کاربری که می بایست پاسخ برای وی ارسال شود).
آماده کردن پاسخ جهت ارسال به کاربر ربات
1 2 3 4 5 6 7 8 |
<?php $reply = "پیام شما: ". $GLOBALS['text']; $url = "https://api.telegram.org/bot" . "[bot-token]" . "/sendMessage"; $post_params = [ 'chat_id' => $GLOBALS['chat_id'] , 'text' => $reply ]; send_reply($url, $post_params); ?> |
در ادامه، پاسخ ارسالی به کاربر ربات را آماده خواهیم کرد. در این سناریوی آزمایشی ما همان پیامی را که کاربر برای ربات ارسال کرده است، به خود وی بر می گردانیم (در خط ۳). در خط ۴ آدرس (url) ی که می بایست پاسخ به آن ارسال شود را مشخص میکنیم. مقصد سرور تلگرام است و متد sendMessage مشخص می کند که ما قصد ارسال پیام را داریم. در بخش [bot-token] نیز می بایست توکن دریافتی از بات فادر (در زمان ساخت ربات) را قرار دهیم.
در خط ۵ پارامترهای ارسالی را مشخص میکنیم. پارامتر اول (chat_id) کاربر دریافت کننده پیام و پارامتر دوم (text) متن پیام ارسالی است. در خط ۶ نیز توسط تابع send_reply (که در ادامه خواهیم نوشت) پاسخ را برای کاربر ارسال می کنیم.
نوشتن کدهای تابع ()send_reply
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php function send_reply($url, $post_params) { $cu = curl_init(); curl_setopt($cu, CURLOPT_URL, $url); curl_setopt($cu, CURLOPT_POSTFIELDS, $post_params); curl_setopt($cu, CURLOPT_RETURNTRANSFER, true); // get result $result = curl_exec($cu); curl_close($cu); return $result; } ?> |
در انتها نیز کدهای مربوط به تابع send_reply را می نویسیم. برای ارسال درخواست از روش curl استفاده می کنیم. در خطوط ۶ تا ۸ تنظیمات مربوط به ارسال درخواست توسط curl انجام شده است. در خط ۹ آن را اجرا کرده و در خط ۱۰ ارتباط را می بندیم. در انتها نیز پاسخ را بر می گردانیم (خط ۱۱).
برنامه کامل (راه اندازی ربات تلگرام)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php $update = file_get_contents("php://input"); $update_array = json_decode($update, true); // JSON if( isset($update_array["message"]) ) { $text = $update_array["message"]["text"]; $chat_id = $update_array["message"]["chat"]["id"]; } //------------------------------------- $reply = "پیام شما: ". $GLOBALS['text']; $url = "https://api.telegram.org/bot" . "[bot-token]" . "/sendMessage"; $post_params = [ 'chat_id' => $GLOBALS['chat_id'] , 'text' => $reply ]; send_reply($url, $post_params); //------------------------------------- function send_reply($url, $post_params) { $cu = curl_init(); curl_setopt($cu, CURLOPT_URL, $url); curl_setopt($cu, CURLOPT_POSTFIELDS, $post_params); curl_setopt($cu, CURLOPT_RETURNTRANSFER, true); // get result $result = curl_exec($cu); curl_close($cu); return $result; } ?> |
برنامه کامل را در بالا مشاهده می کنید. چنانچه آنرا ذخیره کرده و به ربات مراجعه کنیم، باز هم می بینیم که ربات عکس العملی به پیامی های ارسالی از سوی ما نشان نمی دهد. دلیل آن هم یک مرحله کار دیگر است که ما هنوز انجام نداده ایم و آن setwebhook است. با استفاده از این متد به سرور تلگرام مسیر و موقعیت فایل php و کدهای سمت سرور خود را اطلاع می دهیم. به این معنی که تلگرام بداند چنانچه پیامی از سوی کاربر ربات برای وی ارسال شد، آن را باید به کجا (کدام فایل PHP – سرور ما) ارجاع دهد.
الگوی متد setwebhook به این صورت است:
1 |
https://api.telegram.org/bot[bot-token]/setwebhook?url=[php-file-path] |
در این الگو دو بخش باید با مقادیر واقعی جایگزین شوند. بخش [bot-token] باید با توکن دریافتی از ربات بات فادر جایگزین شود. و بخش [php-file-path] با مسیر فایل php قرار گرفته بر روی سرور ما. پس از جایگزینی، url ساخته شده را در مرورگر وارد کرده و چنانچه با پاسخ زیر مواجه شویم، یعنی webhook با موفقیت برقرار شده و ربات آماده پاسخگویی است.
برقراری ارتباط با سرور تلگرام با استفاده از متد setwebhook
پس از برقراری ارتباط با سرور تلگرام (با استفاده از متد setwebhook) ربات را مجددا تست میکنیم و این بار می بینیم که به پیام ارسالی واکنش نشان داده و به آن پاسخ می دهد.
راه اندازی ربات تلگرام – پاسخگویی به پیام ارسالی
این جلسه آموزشی نیز به پایان رسید. دیدیم که چگونه می توانیم عمل راه اندازی ربات تلگرام را انجام داده و ربات را عملیاتی کنیم. در آینده با بخش های جذاب و کاربردی تر ربات تلگرام آشنا خواهیم شد. با ما همراه باشید…
113 دیدگاه. ارسال دیدگاه جدید
درود
سوال بنده این هست که چطور میتونیم وقتی کاربر ربات رو استارت کرد، بجز chat_id ش، نام و نام خانوادگیش رو هم بگیریم که مثلا توی پیام خوشامدگویی بتونیم ازش استفاده کنیم. مثلا: سلام پیمان عزیز.
در ضمن سپاسگزارم از آموزشهای عالی تون
دوست عزیز در ویدئوی آموزشی همین جلسه در این مورد صحبت شده. اون بخشی که در مورد بیرون کشیدن اطلاعات از JSON ورودی به ربات صحبت میشه.
برای مثال شما میتونید از پارامتر “first_name” برای بیرون کشیدن نام کاربر استفاده کنید.
سلام
من تمامی موارد پیش گفته رو رعایت کردم کد ها رو کپی کردم توکن رو چک کردم هاستم هم هلندیه از سایتی که در صفحه موجود هست گرفتم ورژن php هم بالاتر از ۷ هست ولی همچنان بات اجرا نمیشه
دوست عزیز موارد مشکل ساز در عدم پاسخگویی ربات، چندین بار در کامنتها شرح داده شده. اگه همه موارد درست باشه مشکلی در پاسخگویی ربات نیست.
اگر مایل بودین میتونید از طریق بخش «تماس با من» با بنده در ارتباط باشید تا در قالب یک «جلسه آموزش خصوصی آنلاین» موارد رو یک یه یک بررسی کنیم تا مشکلتون حل بشه.
موفق باشید.
سلام برای اینکه به فایل منیجر دسترسی داشته باشیم باید هاست بخریم ؟؟
بله دوست عزیز.
ضمنا لینک یکی از بهترین شرکتهای ارائه دهنده هاست ربات تلگرام در نوار سمت راست آموزشها موجود هست.
سلام ممنون از آموزش کامل و جامع شما. یک سوال داشتم. برای ربات میشه از دامنه ir. استفاده کنم؟
بله دوست عزیز مشکلی نیست.
سلام، سپاس از آموزش خوبتون، صدای مدرس رسا و واضح، کیفیت فیلم آموزشی بسیار مناسب، مدرس مسلط به مفاهیم و مطالب آموزش داده شده
لطفا آموزشهای بیشتری ارائه کنید درباره ربات های تلگرام و مباحث دیگر
{“ok”:false,”error_code”:400,”description”:”Bad Request: bad webhook: HTTPS url must be provided for webhook”}
حتما باید ssl زده شده باشه روی دامنه ؟
بله دوست عزیز SSL نیاز هست.
سلام
خسته نباشید
من یه سوالی دارم اینه که می خوام بدونم آیا امکان داره که ربات بدون اینکه پیامی بهش ارسال بشه دستوری رو انجام بده مثلا در یک زمانی که در پی اچ پی تعریف کردیم ربات کارهایی رو که گفته شده انجام بده؟
اگر منظورتون اجرای یک سری از دستورات در زمانی خاص و بصورت اتوماتیک هست، بله امکانپذیره
برای این کار باید از قابلیت Cron Jobs موجود در کنترل پنل هاست استفاده کنید.
سلام ممنون از آموزش خوبتون.. من هاستم خارجیه اما دامنه سایتم ir هست و برای ایرانه. مشکلی پیش نمیاد؟ یا باید هم هاست و هم دامنه برای خارج باشه
خیر دوست عزیز نوع دامنه مهم نیست. همین که هاستتون خارجی باشه کافیه.
سلام جناب زعفری
من هاستی که قبلا خریداری کرده بودم واسه سایت خودم ایرانی بود آیا حتما نیازه غیرایرانی باشه هاست؟
ممنون میشم توضیح بفرمائید
بله دوست عزیز، برای ربات تلگرام باید هاست خارجی تهیه کنید.
سلام
میشه کدهایی که نوشتید رو بفرستید تا ما کپی کنیم چون هرچی زدم ارور میده
دوست عزیز سورس کد مربوطه در انتهای همین آموزش (بالای بخش نظرات) برای دانلود قرار داده شده.
با سلام
ببخشید یک سوال برام پیش اومده اونم اینکه چجوری ربات پیام رو داخل یک کانال بفرسته؟
دوست عزیز روال کار دقیقا مشابه ارسال پیام عادی در ربات هست (توسط متد sendMessage).
تنها تفاوت این هست که در پارامتر chat_id باید یوزرنیم کانال موردنظر قرار بگیره (به فرمت ChannelUsername@)
سلام مهندس وقت بخیر خسته نباشید ممنون از مطالب آموزنده تون.
استاد چطور برای تهیه هاست اقدام کنم؟ هاستی که تهیه میشه تا چند وقته و تا چند بار میشه استفاده کرد؟
دوست عزیز هاست موردنیاز خودتون رو میتونید از شرکت «پارس وب هاست» تهیه کنید:
https://my.parswebhost.net/aff.php?aff=352
دقت کنید که هاست ربات تلگرام تهیه کنید.
ضمنا هاستی که خریداری میکنید هیچ محدودیتی به لحاظ تعداد دفعات تمدید و استفاده نداره. کافیه سر موعد تمدیدش کنید.
عرض ادب و احترام خدمت استاد زعفری عزیز
آموزشتون عالی بود ولی من یک بخش را متوجه نشدم ، کد های json را باید در کجا قرار دهیم؟
دوست عزیز کدهای JSON رو لازم نیست در جایی قرار بدید.
من توی این آموزش فقط میخواستم نشون بدم که درخواست ورودی به ربات از جنس JSON (جیسون) هست که ما با استفاده از تابع json_decode اون رو به آرایه تبدیل می کنیم.
JSON یک فرمت استاندارد و شناخته شده جهت انتقال اطلاعات بین سرورها و کلاینت هاست.
سلام مهندس
این آموزشتونو با هاست رایگان مثل ۰۰۰webhost میشه اجرا کرد؟ من هرچی سعی میکنم ربات کار نمیکنه
یه هاست رایگانم از یه سرویس ایرانی دارم yashosting.ir و یه دامنه که ssl ش رو فعال کردم رو اونم فایلای رباتو آپلود میکنم ولی باز ربات اجرا نمیشه
دوست عزیز من هیچ وقت دنبال هاستهای رایگان نبودم و به شما هم توصیه نمیکنم، چون بدلیل رایگان بودن عموما پشتیبانی خوبی رو ارائه نمیکنن.
برای عملکرد صحیح ربات دو رکن اصلی، هاست (غیر ایرانی) و گواهی ssl هستن.
سلام آقای زعفری
مشکل دیشبم حل شد و امروز متوجه شدم چطور هاست و دامین خریداری کنم و وارد cpanel شم و مرحله به مرحله با آموزش خوبتون جلو اومدم ولی در آخر با این پیغام مواجه میشم همه رو مو به مو چک کردم اما نمیدونم مشکل از کجاست!!!
“Bad Request: bad webhook: Failed to resolve host: Temporary failure in name resolution”
دوست عزیز همونجوری که از پیغام مشخصه، مشکلی در نحوه آدرس دهی وب هوکتون هست. حالا یا نحوه آدرس دهی تون اشتباهه و یا مشکلی در گواهی SSL تون هست.
سلام و مرسی بابت توضیحاتتون
ببخشید من رفتم برنامه file manager رو دانلود کردم از گوگل پلی ولی تو لیست پوشه ها چیزی به اسم public_html نبود متاسفانه باید چه کار کنم
یا آیا برنامه مخصوصی است؟!
دوست عزیز file manager اسم یک نرم افزار و یا اپلیکیشن خاصی نیست. بخشی از کنترل پنل هاست هست. شما باید هاست خریداری کنید.
از کجا میتونم خریداری کنم؟!
و آیا من میتونم تمام این مراحل ویدیو های شما رو با گوشی انجام بدم؟!
دوست عزیز هاست موردنیاز خودتون رو میتونید از شرکت «پارس وب هاست» تهیه کنید:
https://my.parswebhost.net/aff.php?aff=352
دقت کنید که هاست ربات تلگرام تهیه کنید.
در مورد سوال دوم: با گوشي هم ميشه ولي من توصيه نميكنم. كلا برنامه نويسي روي موبايل (بدليل محدوديتهايي كه داره) كار صحيحي نيست.
سلام آموزشتون بسیار خوب و مفهومیه اما فقط مشکل این قسمت اینه که برای لینوکس توضیح دادین نه ویندوز ! کسایی مثل من کاملا سردرگم میشن!
دوست عزیز لینوکسی که بنده گفتم سیستم عامل سروری هست که باید تهیه کنید. سیستم عامل خودتون هر چیزی میتونه باشه، اعم از ویندوز و …
سلام استاد
خوشبختانه مشکل عدم پاسخگویی ربات منم حل شد. مشکل از ssl ام بود که فعال نشده بود و طبق فرمایش شما پس از مکاتبه با پشتیبانی سایت اقدام به فعالسازی کردند.
و اینکه الان خیلی خوشحالم و حس خیلی خوبی دارم و این حس زیبا رو مدیون سخاوت بی منت شما هستم.
برای شما استاد عزیز و خانواده محترمتان آرزوی سلامتی و بهترین ها رو دارم.
دوست عزیز بسیار خوشحالم که مشکلتون حل شده و میتونید مابقی آموزشها رو هم کار کنید و ادامه بدید.
موفق و سربلند باشید.
سلام
ممنون بابت توضیحات کامل و دقیقتون
من هاست و دامین از آدرسی که فرمودین خریداری کردم. ssl رایگان هم دارد.
دستورات انجام میدم ولی در مرحله اخر ok نمیشود و پیغام
{“ok”:false,”error_code”:400,”description”:”Bad Request: bad webhook: Failed to resolve host: Name or service not known”}
یا
{“ok”:false,”error_code”:400,”description”:”Bad Request: bad webhook: HTTPS url must be provided for webhook”}
میده (وقتی آدرس رو بدون s وارد میکنم)
میشه بفرمائید برای رفع مشکل باید چیکار کنم؟
دوست عزیز پیغام دوم که مشخصه، وقتی شما s رو از ابتدای آدرستون برمیدارید، این یعنی که آدرستون از نوع رمزگذاری شده (SSL) نیست (که این از ضروریات کار با سرور تلگرامه).
در مورد پیغام اول هم احتمالا یه جایی در آدرس دهی فایل رباتتون اشتباه کردین، چون متن پیام اینه که: نتونسته host تون رو پیدا کنه.
سلام ببخشید من اون قسمت curl رو متوجه نمیشم. آیا اگر فقط همونو کپی کنیم کافیه یا جلوتر بهش نیاز میشه؟
خیر دوست عزیز، درآینده باهاش کاری نداریم و نیازه که فقط توی کدهایی که مینویسیم حضور داشته باشه. کپی کردنش کفایت میکنه.
سلام وقت بخیر
مطالب سایتتون و آموزش ها خیلی خوبه، ممنون بابت زحماتتون
ممنونم دوست عزیز
سلام
من از میهنوبهاست هاست ایرانی دارم
آیا بخاطر همین است که رباتم کار نمیکند؟
بله دوست عزیز
برای کارکرد صحیح ربات باید هاست غیر ایرانی تهیه کنید.
سلام استاد وقتتون بخیر. با توجه به اینکه من علاقه زیادی به یادگیری کدنویسی تحت وب دارم اما هزینههای گواهی ssl و هاست برای اشتراک سالیانه برایم بعنوان یک دانشجو کمی سنگین است حالا نمیدانم بخاطر هزینهها و مشکلات پا روی علاقهام بگذارم؟ میخاستم کمکم کنید که بتونم ادامه بدم و بخاطر صرفا هزینهها ناامید نشم.
دوست عزیز اگر واقعا به برنامهنویسی علاقه دارین، اجازه ندید هیچ مسئلهای جلوی این اشتیاق رو بگیره. مسائل مالی که چیزی نیست، ازین بزرگترهاش رو هم باید نادیده بگیرین و پیش برین.
هاست و دامین موردنیاز خودتون رو هم میتونید از شرکت «پارس وب هاست» تهیه کنید:
https://my.parswebhost.net/aff.php?aff=352
این شرکت گواهی SSL رو بصورت رایگان ارائه میکنه.
سلام مهندس
الان که تلگرام فیلتر است و من سی پنل هاست رو از سرور ایرانی استفاده کردم، آیا این قضیه باعث عدم اجراشدن کدها میشه؟؟
بله دوست عزیز
دقیقا به همین دلیلی که گفتین باید هاست خارجی تهیه کنید. ربات تلگرام بر روی هاستهای ایرانی جوابگو نیست.
سلام استاد
من همه کارهایی که گفتید به درستی انجام دادم، webhook هم موفق بود ولی باز روبات کار نکرد که متوجه شدم من دامین و هاست دارم ولی ssl ندارم و هزینه بالایی داره. آیا بدون ssl نمیتونم راه بندازم؟
دوست عزیز SSL موردنیاز خودتون رو میتونید از شرکت «پارس وب هاست» بصورت رایگان تهیه کنید:
https://my.parswebhost.net/aff.php?aff=352
با سلام. من کد های php رو دارم ولی اصلا نمی دونم کجا باید قرارشون بدم.
لطفا راهنمایی کنید. ممنون
دوست عزیز این مورد دقیقا در همین جلسه آموزشی توضیح داده شده.
یکبار ویدئوی آموزشی رو ببینید متوجه میشید.
شما باید کدهای خودتون رو در بخش File Manager کنترل پنل هاستتون قرار بدید.
سلام مهندس جان
این پیام چه معنی میده؟
{“ok”:true,”result”:true,”description”:”Webhook is already deleted”}
دوست عزیز این پیام به این معنیه که وبهوک شما حذف و ارتباط هاست شما با سرور تلگرام قطع شده.
برای برقراری ارتباط باید مجددا setWebhook کنید.
سلام من زبان php رو از کجا میتونم مبتدی یاد بگیرم برای ربات تلگرام
دوست عزیز آموزش php هم در سایت موجوده که از طریق لینک زیر میتونید استفاده کنید:
https://mzsoftware.ir/category/php-programming/
سلام من میرم توی کنترل پنل می خوام فولدر درست کنم ارور میده
دوست عزیز تصویر خطای موردنظر رو توی تلگرام (به آیدی mzsoftware) برای بنده بفرستید تا راهنماییتون کنم.
سلام من هاستم دایرکت ادمین هست همهی کارها رو انجام دادم وب هوک هم وصل کردم اما به هیچ وجه پیام از طرف ربات به دستم نمیرسه
دوست عزیز موارد مهم و لازم جهت راهاندازی ربات تلگرام در بخش دیدگاههای همین جلسه مطرح شده. تک تک موارد باید بدرستی تنظیم و برقرار شده باشن تا ربات پاسخ بده.
از بین این موارد هاست لینوکس خارج از ایران، گواهی SSL و نسخه php حداقل ۵٫۶ برای هاست از مهمترین موارد هستن.
اگر از همه موارد مطمئن هستید با پشتیبانی هاستتون هم مکاتبه کنید و مطمئن بشید هاستی که تهیه کردین مناسب راهاندازی ربات هست.
وقتی سورس شامل ۱۰ – ۲۰ تا فایل یا چنتا فولدر میشه چجوری آدرس بدیم؟ آخرش اسم سورسو میزاریم دیگه حالا که شده چنتا چیکار کنیم؟
دوست عزیز اگر منظورتون نحوه آدرسدهی برای ستوبهوک هست باید خدمتتون عرض کنم که تعداد فایلها هر چقدر هم که زیاد بشه، بازم فایل اصلی ربات یکی از این تعداد فایل میشه و باید آدرس اون رو توی ستوبهوک استفاده کرد. بقیه فایلها حالت ضمیمه پیدا میکنن و به فایل اصلی الحاق میشن.
ضمن اینکه اگر حتی اسم فایل اصلی ربات تغییر کنه، میشه مجددا فرآیند ستوبهوک رو انجام داده و مسیر فایل جدید رو به تلگرام اطلاع داد. اینکار محدودیتی نداره.
سلام آقای زعفری
مرسی بابت سایت خوبتون
و دمتون گرم برای آموزشهای خوبتون در زمینه ساخت ربات تلگرام
من سوالم صرفا بابت معرفی سایتی برای گرفتن هاست رایگان و ssl رایگان برای ربات تلگرام هستش.
ممنون میشم که معرفی کنید خیلی ممنون
دوست عزیز توصیه میکنم که به دنبال سرویسهای رایگان نباشید، چون معمولا کیفیت و پشتیبانی خوبی رو عرضه نمیکنن.
در صورت تمایل هاست موردنیاز خودتون رو میتونید از شرکت «پارس وب هاست» تهیه کنید:
https://my.parswebhost.net/aff.php?aff=352
البته این شرکت در کنار هاستی که میخرید، گواهی SSL رو بصورت رایگان ارائه میده.
دقت کنید که هاست ربات تلگرام تهیه کنید.
سلام
در رابطه با مشکلی که یک سری از دوستان در راه اندازی ربات داشتن
باید بگم که کدها کاملا درست عمل میکنن
عزیزان شما وقتی هاست خریداری میکنید، گاهی وقتا گواهی ssl روی اون هاست فعال نیست.
برای فهمیدن این مطلب کافیه از همون httpS استفاده بکنید.
اگر متوجه شدید که فعال نیست حتما آموزش فعالسازی اون رو از پشتیبانی بگیرید یا در گوگل سرچ کنید.
نکته بعدی اینکه اگر شما در حال استفاده از این آموزشها هستید، یعنی میخواید این کار رو ادامه بدید، پس بهتره ابزار کارتون رو کامل بکنید
پیشنهاد بنده نصب برنامه phpstorm هستش که کدنویسی رو براتون ساده میکنه (وقت برای توضیح بیشتر نیست، نصب بکنید متوجه میشید…!)
پس میشه تهیه هاست خارجی
فعال سازی و تست ssl
نصب phpstorm
کدنویسی
آپلود کد روی هاست
ست کردن وب هوک
و در نهایت تست و دریافت خروجی 👌
نکته آخر اینکه برنامه نویسی همیشه سختیای خودش رو داره
باید ساعتها براش وقت بزارید و زحمت بکشید
وجود مشکل در برنامهنویسی چیز عجیبی نیست و برنامه نویسا همیشه درحال پیدا کردن مشکل و رفع اون هستن
پس با دیدن چندتا ارور پا پس نکشید چون قراره با ارورها زندگی بکنید 😜
پیشنهاد میکنم کدها رو خودتون از روی دست استاد بزنید، بجای اینکه کپی پیست بکنید.
استاد عزیز از شما هم بخاطر زحماتتون مچکرم
💕 یا علی 💕
ممنونم دوست عزیز
توضیحات بسیار خوب و کاملی بود 👏
یکبار دیگه من بصورت تیتروار مواردی که میبایست برای راهاندازی و دریافت خروجی از ربات، لحاظ بشه رو ذکر میکنم:
– تهیه هاست لینوکس خارج از ایران (حتما قبل از خرید، با تماس با پشتیبانی شرکت ارائه دهنده، مطمئن بشین که هاستی که میخرین برای ربات تلگرام قابل استفاده هست)
– تهیه گواهی SSL (بعد از تهیه و نصب اون مطمئن بشین که درست و صحیح فعال شده و قابل استفاده هست – میتونین از پشتیبانی هاست سوال کنید تا مطمئن بشید)
– ساخت ربات از طریق BotFather و دریافت توکن (توی جلسه دوم آموزش داده شده)
– جایگذاری صحیح توکن در کدهای ربات (به جای بخش [bot-token] باید قرار بدین)
– ست کردن وبهوک (الگوی صحیحش توی فیلم آموزشی و همینطور بالای بخش دیدگاهها ذکر شده)
– عدم خطای نوشتاری در کدهای php – کدها رو عینا کپی پیست کنید تا احتمال خطا کمتر بشه (اگر خطایی در کدتون باشه در کنار فایل php رباتتون در فایل منیجر هاست، فایلی ایجاد میشه به نام error_log که منبع خطا در اون ذکر شده)
– قراردادن نسخه php هاست بر روی حداقل ۵٫۶ (این گزینه معمولا در گزینههای ابتدایی و بالای cpanel هاست قرار داره)
دوستان عزیز اگر باز هم موردی به ذهنم رسید و یا باهاش برخورد کردم، در آینده این دیدگاه رو آپدیت میکنم.
سلام
استاد میشه مشخصات هاست مورد نیاز ربات را بگین؟!
دوست عزیز برای کارکرد صحیح ربات، شما میبایست «هاست لینوکس خارج از ایران» تهیه کنید.
در صورت تمایل هاست موردنیاز خودتون رو میتونید از شرکت «پارس وب هاست» تهیه کنید:
https://my.parswebhost.net/aff.php?aff=352
سلام
من همه کدها رو کپی کردم و نوشتم ولی هیچ جوابی داده نمی شد
این رو هم بگم که از هاست استفاده نکردم و بوسیله نرم افزار ngrok گواهینامه SSL رو برای wamp فعال کردم. این کار مشکلی داره برای کدهای شما؟
دوست عزیز متاسفانه من با این نرمافزاری که میگین کار نکردم و اطلاعی از نحوه عملکرد اون ندارم. نمیتونم بگم مشکل از اون هست یا نه.
توصیه من استفاده از هاست و دامین هست.
سلام وقت بخیر
من تمام کارها رو درست انجام دادم و تایید ارتباط رو هم گرفتم
ولی ربات جوابم رو نمیده
ممنون میشم راهنمایی بفرمایید
دوست عزیز عدم پاسخ ربات دلایل مختلفی می تونه داشته باشه، غیر از هاست لینوکسی خارج از ایران و گواهی SSL ، خطای نوشتاری در کدها ، عدم ست کردن وب هوک ، وجود اشتباه نوشتاری در توکن و … از جمله موارد مشکل زا می تونه باشه.
ضمن اینکه توی فایل منیجر هاست چک کنید ببینید فایلی به نام error_log در کنار فایل ربات وجود داره یا خیر؟
اگر وجود داره بازش کنید و ببینید خطایی درش ثبت شده یا نه؟
Pسلام آقای مهندس. برای منم همین مشکل پیش اومده رفتم توی فایل error_log دیدم این ارور رو داده
۳۰-May-2019 11:27:15 [Asia/Tehran] PHP Parse error: syntax error, unexpected ‘[‘ in /home/iranmakh/public_html/iranmakhzan_bot/bot.php on line 15
رفتم توی کد خط ۱۵ رو چک می کنم این هستش
[post_params = [‘chat_id’ => $GLOBALS[‘chat_id’] , ‘text’ => $reply;
نمیدونم واقعا کجاش اشتباه هست. میشه لطفا راهنمایی کنید؟
دوست عزیز برین توی صفحه اصلی سی پنل ، بالای گزینه فایل منیجر، یه گزینهای هست برای تغییر نسخه php
اگر دیدین نسخه php هاستتون پایینتر از ۵٫۶ هست اون رو به ۵٫۶ ارتقا بدید
احتمالا این کار مشکلتون رو حل میکنه
سلام استاد
من همزمان آموزش ربات و پی اچ پی رو شروع کردم، البته پی اچ پی را ۵ جلسه جلوتر هستم.
در این قسمت آموزش ربات تعریف تابع اصلا برام مفهوم نبود و فقط کپی پیست کردم. مشکلی پیش نمیاد؟
دوست عزیز اگر منظورتون تابع ()send_reply هست، نه مشکلی نیست.
این تابع رو ما در تمام آموزشها داریم ولی از الان به بعد کاری با کدهای درونش نداریم.
سلام، مرسی از آموزشتون که برای مبتدیهایی مثل من که هیچی از پی اچ پی و هاست نمیدونیم هم قابل فهم بود.
سوالم اینه که خواستم شروع کنم مثل اینکه هاست رو باید خرید. حالا شما کجا رو پیشنهاد میدین؟
منتظر جوابتون هستم، چون برای شروع هاست باید باشه
با سلام
هاست مورد نیازتون رو می تونین از این لینک تهیه کنین
https://my.parswebhost.net/aff.php?aff=352
خدمات و پشتیبانی شون خوبه و من تو این مدت راضی بودم
ممنون چرا خرید یک ماهه فعال نیست، فقط یک ساله میده؟
دوست عزیز این مورد رو باید از پشتیبانی شرکت سوال کنید
سلام سال نو شما مبارک باشه
من پس از ساخت فایل bot.php برای فعال کردن webhook اقدام می کنم اما هر دفعه با اررور
{“ok”:false,”error_code”:400,”description”:”Bad Request: bad webhook: Failed to resolve host: Name or service not known”}
مواجه میشوم. آدرس دامنه هم https://fumtelegrambot.ir/telgram-bot/bot.php می باشد.
اگر امکانش هست بفرمایید مشکل کار در کجاست؟
سال نو شما هم مبارک
دوست عزیز به نظر میرسه که شما برای دامین خودتون گواهی SSL تهیه نکردین.
برای ارتباط با سرور تلگرام میبایست گواهی SSL داشته باشید.
با عرض سلام و تبریک سال نو به شما
من کدهای شما رو کپی کردم و طبق آموزش کار رو پیش بردم، وب هوک هم اوکی شد ولی بات تلگرام جواب نمیده
نمی تونم بفهمم مشکل از کجاس، هاستم هم سی پنله و آلمانیه و ssl هم داره ظاهرا همه چی درسته ولی جواب نمیده!
به نظر شما مشکل چیه؟
دوست عزیز اگر تمام مواردی که گفتین برقرار باشه، دلیلی برای عدم پاسخگویی ربات وجود نداره.
احتمال میدم خطایی در کدتون وجود داشته باشه. توی فایل منیجر هاست چک کنید ببینید فایلی به نام error_log در کنار فایل ربات وجود داره یا خیر؟
اگر وجود داره بازش کنید و ببینید خطایی درش ثبت شده یا نه؟
والا کلا حذف کردم و از نو ساختم
کد رو که کامل کپی می کنم میزارم فقط توکن رو جاگذاری می کنم
و تغییر دیگه ای نمی دم جواب نمیده روی دو تا سرور هم تست کردم
بازم کار نکرد ، هیچ خطایی هم نمیده
دوست عزیز در یکی از دیدگاه ها یکی از دوستان بحث ارتقا نسخه php هاست رو مطرح کردن و گویا مشکلشون حل شده
می تونین این راهکار رو هم تست کنید، ببینید جواب میده یا خیر
خیلی ممنون از راهنمایی هاتون
مشکل از شرکت ارائه دهنده هاست بود. گویا بعضی از شرکت ها دسترسی به تلگرام و اینستاگرام رو قطع کردن، به همین خاطر کار نمی کرد.
با هاست یه شرکت دیگه تست کردم جواب داد
گفتم برای دوستانی که همه قسمت های کارشون درسته، ممکنه ایراد کار از اینجا باشه، از خود شرکت هاست بپرسن برای این مورد.
با تشکر
ممنون از شما دوست عزیز
سلام و خسته نباشید استاد
بنده تمام کارهایی که گفتید رو با موفقیت انجام دادم ولی توی cpanel از کد خط دوازدهم ایراد میگیره
;[ post_params = [ ‘chat_id’ => $GLOBALS[‘chat_id’] , ‘text’ => $reply$
لطفا بررسی کنید
دوست عزیز مشکلتون چیه؟ چه خطایی رو دریافت می کنید؟
اگر دقیقا از سورس کد قرار گرفته استفاده کنید، مشکلی نیست و ربات به درستی کار میکنه
باسلام و خسته نباشید و تشکر از سایت خوبتون
آقا تو این سورس بالا که گذاشتید برامون هر جا چت آیدی دیدیم چت آیدیمون رو وارد کنیم و هر جا تکست دیدیم یه کلمه وارد کنیم؟ یا فقط چت آیدی و تکست رو باید یک دفعه واردکنیم؟ چون همه چیز ربات من درسته، ست وب هوک و توکن و همه رو وارد کرده بودم قبلا، ربات من جواب نداده بود، پرسیدم گفتن باید به صورته پست انجامش بدم چون گت بود. این کار رو هم به وسیله ی سورس شما انجام دادم نشد و ربات پیام نداد
نمیدونم مشکل کجاست، یک ماه بیشتره درگیر جواب رباتم، بی زحمت کمک کنید
با تشکر
خیر دوست عزیز
chat_id آیدی کاربری هست که در حال کار با ربات هست و text هم متن پیام ارسالی از طرف کاربر هستش (این پارامترها اتوماتیک مقداردهی میشن و نیازی به مقداردهی دستی ندارن)
توی آموزش ویدئویی این موارد با جزئیات تمام شرح داده شده. می تونید از ویدئوی آموزشی استفاده کنید
سلام استاد
وقت بخیر
برای من هم وقتی کدهای این آموزش رو استفاده کردم و تمامی کارها رو مطابق برنامه پیش رفتم، ارتباط برقرار نشد. تو مشخصات PHP در Cpanel هاستم متوجه شدم نسخه PHP روی ۵٫۳ ست شده بود و به همین دلیل افزونه curl دچار مشکل بود. با آپدیت PHP به نسخه ۵٫۶ مشکل حل شد و ارتباط برقرار شد. گفتم شاید برای دوستان هم مشکل رو بشه اینطوری حل کرد.
با تشکر از آموزشهای فوق العادتون
ممنونم دوست عزیز
شاید برای دیگر دوستان هم راهگشا باشه
سلام خسته نباشین
موقع اجرا این ارور رو میده :
Notice: Undefined index: text in /storage/ssd5/907/8398907/public_html/123.php on line 15
Notice: Undefined index: chat_id in /storage/ssd5/907/8398907/public_html/123.php on line 17
دوست عزیز چنانچه از نمونه سورس موجود در آموزش استفاده کرده باشین، دلیلی برای وقوع خطا وجود نداره.
اگر ربات واکنش نشون نمیده، مشکل از جای دیگه است که منابع خطا در بخش دیدگاه های همین جلسه ذکر شده
درست شد خیلی ممنونم
واقعا دستتون درد نکنه 🙂
خوشحالم که مشکلتون حل شد
موفق باشید دوست من
بسيار عالی، حرفه ای و مفید بود.
من در اتصال به وب هوک مشکل دارم و خطای زير رو ميده ؟
“ok”: false,”error_code”: 400,”description”: “Bad Request: bad webhook: HTTPS: url must be provided for webhook”
ممنون ميشم راهنمايی کنيد.
ممنونم دوست عزیز
بله همونطور که در پیغام مشخصه آدرس url ی که باید برای ست کردن وب هوک در نظر گرفته بشه، باید با https شروع بشه، به این معنی که شما برای هاستتون باید گواهی SSL تهیه کنید.
اگر دارید، تنها کافیه که به ابتدای آدرس موردنظر عبارت https رو اضافه کنید، در غیر اینصورت با مکاتبه با پشتیبانی هاستتون باید گواهی SSL تهیه کنید
درود
خسته نباشید آقای زعفری
شما طلایی واقعا. بخدا جدی میگم. بدون منت پاسخ میدین و وقت میزارین برای دوستان حتی خود من.
امیدوارم هیچ وقت خسته نشین و همیشه موفق باشید و پیروز در پناه علم.
ممنونم دوست عزیز، لطف دارید
انشاا.. با قدرت ادامه خواهم داد
سلام
در اجرای متد send_reply در خط ;(result = curl_exec($cu$ مقدار خالی دریافت میکنم
من اومدم این کدها رو برای تشخیص خطا نوشتم
} ((if (curl_errno($cu
;(print curl_error($cu
{
زیر خط curl_exec
وقتی در url بروزر آدرسی که متدهای بالا رو ست کردم میزارم و فراخوانی میشه از سرور خطای زیر رو میده:
مقداری که چاپ میشه اینه: malformed
به نظر شما مشکل از چیه؟
نمی دونم دوست عزیز، تا بحال با چنین موردی برخورد نکردم
ولی در یکی از دیدگاه ها دلایل عدم پاسخ ربات رو ذکر کردم
من تمام مراحل رو انجام دادم ولی ربات جوابی ارسال نمیکنه؟
دوست عزیز مشکلتون دقیقا چیه و توی کدوم مرحله است؟ اینجوری نمیتونم کمکتون کنم
مشکل من تو ارتباط هست . وب هوک هم درست ست شد ولی ربات عمل نمیکنه .امکانش هست از هاستم باشه ؟ssl هم داره
دوست عزیز یه کاری بکنید اون جایی که قراره پیام ارسال بشه از کد زیر استفاده کنید و نتیجه رو ببینید چیه؟
یادتون نره که توکن رباتتون رو بجای [bot-token] قرار بدین (مشابه فیلم آموزشی)
;[‘GLOBALS[‘text . ” :پیام شما” = reply$
;”url = “https://api.telegram.org/bot” . “[bot-token]” . “/sendMessage$
;[ post_params = [ ‘chat_id’ => $GLOBALS[‘chat_id’] , ‘text’ => $reply$
;(result = send_reply($url, $post_params$
;[ post_params = [ ‘chat_id’ => $GLOBALS[‘chat_id’] , ‘text’ => $result$
;(send_reply($url, $post_params
سلام. منم مشکل دارم و بات کار نمیکنه. حتی همین متن رو هم وارد کردم. ssl هم داره هاستم. مشکل چیه بنظرتون ؟
دوست عزیز عدم پاسخ ربات دلایل مختلفی می تونه داشته باشه، غیر از هاست لینوکسی خارج از ایران و گواهی SSL ، خطای نوشتاری در کدها ، عدم ست کردن وب هوک ، وجود اشتباه نوشتاری در توکن و … از جمله موارد مشکل زا می تونه باشه.
من تمامی مراحل شما رو انجام دادم میگه باید سایت ssl داشته باشه
بله دوست عزیز، در جلسه اول از آموزش های ساخت ربات تلگرام این مورد ذکر شده که برای ساخت ربات و ارتباط با سرور تلگرام، حتما می بایست گواهی SSL داشته باشیم.
این موارد در جلسه اول (لینک زیر) موجوده که می تونین مراجعه کنین و اطلاعات لازم رو بدست بیارین
جلسه اول : آشنایی با ربات های تلگرام