تبلیغات

برنامه نویسی ربات تلگرام – ساخت اولین ربات با PHP

برنامه نویسی ربات تلگرام - ساخت اولین ربات با PHP

برنامه نویسی ربات تلگرام
ساخت اولین ربات با PHP


در دو پست قبل یعنی آنچه قبل از شروع باید بدانیم و آشنایی با API ربات تلگرام به صورت کلیشه ای ، درباره‌ی ماهیت ربات‌ها و موارد پیش نیازی که لازم بود بدانید، اطلاعات کافی و کلیشه ای را کسب کردید. اما به احتمال خیلی زیاد، اگر برنامه نویس ماهری نباشید، سردرگم شده‌اید که البته مشکلی نیست؛ چون برای همه پیش می‌آید.

امروز بالاخره وارد کار عملی می‌شویم و از موارد کلیشه‌ای دور شده و همه چیز را در عمل یاد می‌گیرم. پس در ادامه با فول کده همراه باشید.

مقدمه‌ای بر زبان برنامه نویسی مورد نیاز

ما فعلا هدفمان در ابتدای آموزش، توسعه‌ی ربات با استفاده از روش Webhook می‌باشد! پس قاعدتا باید از زبان‌هایی استفاده کنیم که در سمت سرور پشتیبانی می‌شوند. هیچ فرقی ندارد و شما هر زبانی را انتخاب کنید، به تمام امکانات ربات می‌توانید دسترسی داشته باشید؛ چرا که زبان مهم نیست!

من هیچ ملاکی برای انتخاب زبان برنامه نویسی و تحمیل یک زبان به دوش شما قرار نمی‌دهم و شما آزاد هستید و می‌توانید از هر زبانی استفاده کنید؛ اما در هرصورت من تنها می‌توانم با استفاده از یک زبان آموزش را شروع و ادامه دهم.

زبانی که من برای آموزش ساخت ربات تلگرام با استفاده از روش Webhook انتخاب کرده‌ام، زبان PHP بوده و این دلیل خاصی ندارد و می‌توانم دلیل اصلی آن را در فراگیر بودن این زبان خلاصه کنم و البته ناگفته نماند که دلیل‌هایی همچون بلد بودن یک زبان و سادگی استفاده از آن نیز ملاک من بوده است 😀

موارد و ابزارهای مورد نیاز

شما به موارد زیر حتما نیاز دارید:

  • هاست (فضای میزبانی)
    اگر نمی‌دانید هاست چیست، این‌جا کلیک کنید.
  • گواهی SSL
  • اگر نمی‌دانید گواهی SSL چیست، این‌جا کلیک کنید.
  • دامنه (مثل fullkade.com یا fullkade.ir یا …)
    یا یک IP متصل به هاست شما که دیگران بتوانند از طریق آن محتوای هاست شما را اجرا کنند!

نکته: ما در مورد نحوه‌ی تهیه‌ی موارد بالا، راهی به شما پیشنهاد نمی‌دهیم و این سه مرحله بر عهده‌ی خودتان می‌باشد.


شما برای توسعه و نوشتن کد حداقل به یکی از ابزارهای زیر نیاز دارید:

  • حداقل یک ویرایشگر قدرتمند مثل Notepad++
    برای دانلود Notepad++ این‌جا کلیک کنید.
  • محیط توسعه (IDE) ای مثل Intellij IDEA (فعلا در این مرحله نیازی نداریم و البته هرچیزی را می‌توان با همان نوت پد ساده هم نوشت)
    تذکر: محیط توسعه، تنها به روند توسعه کمک می‌کند و اجباری به استفاده از آن‌ها نیست. برای مثال در محیط Notepad++ می‌توانیم بخش‌های مختلف کد را در رنگهای مختلفی ببینیم که باعث می‌شود سردرگم نشویم و همچنین طبیعی است که در محیط Intellij IDEA ، امکانات بیشتری مثل پنجره‌ی راهنمای نوشتن کد در اختیار خواهیم داشت که باعث می‌شوند سریع‌تر کدمان را نوشته و موارد مورد نیاز را روی پروژه‌ی خود اعمال کنیم. ولی دوباره می‌گویم که فعلا در مرحله‌ی نخست، نیازی نیست؛ گرچه در مراحل بعدی هم نیازی نخواهیم داشت؛ اما چه بهتر در یک محیط مناسب کار کنیم.

دانش لازم:

  • آشنایی با نحوه‌ی راه اندازی یک سایت روی یک هاست و اتصال دامنه به آن و نصب گواهی SSL
  • آشنایی با زبان برنامه نویسی PHP (می‌توانید دوره H آموزش PHP را نیز از سایت دنبال کنید. این دوره فشرده بوده و هنوز در زمان نوشتن این مطلب، به اتمام نرسیده است.)

کتابخانه‌های ساخت ربات تلگرام

هدف ما، ساخت ربات تلگرام با کمک کتابخانه‌های آماده نیست. یعنی از کتابخانه‌هایی که برنامه نویسان دیگر برای ساخت ربات تلگرام توسعه داده‌اند نمی‌خواهیم استفاده کنیم؛ گرچه در آینده برخی از آن‌ها را معرفی خواهیم کرد.

از جمله این کتابخانه‌ها، می‌توان به موار زیر اشاره کرد: (مخصوص PHP)

دست به کد شویم، ربات Hello World بنویسیم

مطمئن اگر برنامه نویسی بلد باشید، به احتمال زیاد می‌دانید که برای یادگیری هر زبان برنامه نویسی، از ‌ساخت پروژه‌ای به نام “Hello World” استفاده می‌کنند (رسم شده است).
این پروژه به این صورت است که با اجرای برنامه، این عبارت را در خروجی به کاربر نمایش می‌دهد.

در این‌جا اگرچه ما زبان برنامه نویسی آموزش نمی‌دهیم، ولی ماهم با همین پروژه کارخود را شروع می‌کنیم و می‌خواهیم کاربر با ارسال یک پیام به ربات، در جواب، پیام متنی “Hello World” را از ربات دریافت کند.


مراحل انجام کار:

1- یک اکانت ربات بسازید. (راهنما)

2- نرم فازار Notepad++ را باز کنید.

3- از منوی Language، گزینه‌ی P و سپس PHP را انتخاب کنید. با این کار نوت‌پدپلاس‌پلاس می‌فهمد که ما می‌خواهیم یک فایل PHP توسعه دهیم و موارد لازم را برایمان آماده می‌کند. (مثلا کد را خوشکل نمایش می‌دهد)

4- کد زیر را به صورت کلیشه‌ای درون آن کپی کنید.
نکته: به جای <token> ، توکن ربات خود را قرار دهید.

5- سپس فایل را مثلا با نام ‘hello-world.php’ ذخیره کنید.

6- فایل را به محلی در هاست خود انتقال دهید، برای مثال من آن را در ریشه هاست خود یعنی public_html قرار میدهم.

7- حالا باید Webhook را تنظیم کنیم.
لینک موجود در کادر زیر را کپی و به جای <token>، توکن اکانت ربات خود را قرار دهید.
به جای <url> نیز، آدرس فایل hello-world.php در هاست خود را قرار دهید که باید با https شروع شود. مثلا:
https://fullkade.com/hello-world.php

8- حالا این لینک را در مرورگر خود باز کنید.
اگر نتیجه زیر به شما نمایش داده شد یعنی وب هوک به درستی تنظیم شده است.

9- حالا به ربات خود پیامی ارسال کنید و خواهید دید در جواب به شما Hello World ارسال میشود.

توضیح کد

سه خط بیشتر کد ننوشتیم و البته قرار هم نیست که کدهای آینده‌ی ما به این شکل نوشته شوند!

  1. در ابتدا توکن خود را داخل متغیر token نگه می‌داریم تا هرجا که خواستیم از آن استفاده کنیم.
  2. سپس اطلاعات ارسال شده به این صفحه را توسط تابع file_get_contents خوانده و مستقیم آن را درون تابع json_decode ارسال می‌کنیم.
    همانطور که میدانید این اطلاعات جیسون هستند و بایستی آن را به چیزی تبدیل کنیم که بتوانیم بخوانیم.
    پس متد json_decode، رشته‌ی جیسون را به آرایه تبدیل می‌کند و ما در اینجا این آرایه را درون متغیر update می‌ریزیم.
  3. و در آخر با متد file_get_contents لینک را همانند چیزی که در بخش دوم گفتیم اجرا می‌کنیم.
    در اینجا از روش GET برای ارسال اطلاعات استفاده کرده‌ایم و با sendMessage هم که در بخش قبلی آشنا شدید.

توضیح ندادن زیاد ما صرفا برای گیج نشدن شما است! همین که این کد را تست کنید و نتیجه آن را ببینید فعلا کافی است تا بعد…!!!

مشکل یکی از دوستان

مشکل یکی از دوستان با اضافه کردن دو خط زیر به php.ini هاست رفع گردید:

 

درس بعدیدرس قبلی
تبلیغات
کانال تلگرام فول کده
تبلیغات

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک گذاری اطلاعات در هر زمینه‌ای / برنامه‌نویس و دانشجوی ارشد رشته شبیه‌ساز هوشمند / همچنین در حال نوشتن یه رمان فانتزی (اگه خدا بخواد و تموم شه 😂)

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده 52 دیدگاه

    1. حمید رضا گفت:

      سلام . مرسی از شروع خوبتون.
      ولی ادامه آموزش رو چرا نمیزارین!
      اگه نمیخواین ادامه بدین بگین منتظر نباشیم لطفا

      1. هادی اکبرزاده گفت:

        سلام، تاخیر تو قرار گرفتن پست های بعدی به معنی متوقف شدن پست ها نیست!
        پست های آموزشی پیوسته با توجه به استقبال کاربران، حداقل زیر دوسه روز و حداکثر تا چند هفته بعد آپدیت می‌شن

        1. محمد گفت:

          سلام خسته نباشید
          اقابه جایه url ادرسه سایتی که هاست داخلش هست روبزنیم یاادرسه دامنه رو؟

          1. هادی اکبرزاده گفت:

            سلام؛ آدرس سایتی که هاست داخلش هست؟! این جمله غلطیه! بهتره ابتدا با مفاهیم هاست و سرور آشنا بشین.
            (اون آدرسی که از طریقش، فایل اصلی کد از طرف کلاینت اجرا میشه رو بزنید)

    2. بهروز گفت:

      سلام
      من نیاز به یک ربات تلگرام دارم ولی نمیدونم چجوری میتونم هاست و ssl داشته باشم . البته توضیحاتتون در مورد هاست و SSl رو خوندم ولی کامل متوجه نشدم . راهنمایی برای گرفتن SSl , ایجاد هاست میخواستم . لطفا بنده رو راهنمایی بفرمایید .
      با تشکر
      بهروز

      1. هادی اکبرزاده گفت:

        سلام، همونطور که توی توضیحات هم گفتم، در مورد نحوه تهیه این موارد راهی رو پیشنهاد نمیدیم و میتونید تو اینترنت “خرید هاست” رو سرچ کنین.

        1. بهروز گفت:

          ممنون . آموزشاتون عالیه و پشتیبانی خوبی هم دارید . خیلی ممنون

          1. سعید یوسفی گفت:

            سلام و تشکر از مطالب و آموزشهای خوبتون
            خواستم ببینم چطور میتونم از مطالب آموزشی شما pdf بگیرم؟
            با سپاس

    3. . گفت:

      سلام ممنون که با حوصله و کامل توضیح دادید
      ربات من جواب داد لطفا ادامه بدید

      1. هادی اکبرزاده گفت:

        سپاس از شما
        طی هفته‌ی آینده درس چهارم قرار میگیره

    4. ممدرضا گفت:

      سلام خسته نباشید
      تشکرازسایت خوبتون
      یه سوال داشتم
      آقامن میخام این hello world.phpروانتقال بدم ازنوتِ پدبه هاست نتونستم،چون دسترسی به pcندارم ازفرمتِ اندرویدنوتِ پداستفاده میکنم میخاستم یه راهنمایی کنیدچطوراین فایل روبه هاست انتقال بدم
      ممنون

      1. هادی اکبرزاده گفت:

        سلام؛ داخل هاست میتونین فرمت فایل رو به php تغییر بدین
        همچنین لینکای زیر رو هم ببینین مفیده
        دانلود نرم افزار Droid Edit Pro
        دانود ES File Explorer File Manager
        آموزش ساخت و ویرایش فایل txt در اندروید

    5. mamadmamad گفت:

      سلام.خسته نباشی و ممنون بابت آموزش ها. وب هوک من ست شده. ولی هرچی تو ربات مسیج میدم جواب نمیده 😐

      1. هادی اکبرزاده گفت:

        سلام؛ احتمالن اشکال از کدای رباته یا SSL هاست؛ موفق باشین

        1. mamadmamad گفت:

          ممنون. با یه ربات جدید تست کردم. باز هم جواب نگرفتم.
          مشکل اگر از ssl باشه چطوری میتونم متوجه بشم ؟

          1. هادی اکبرزاده گفت:

            توجه داشته باشین که اگه هاستتون تو ایرانه به دلیل فیلتر بودنه که کار نمیکنه
            اس اس ال رو از ارائه دهنده هاستتون بپرسین که درست تنظیم شده یا نه!

            1. mamadmamad گفت:

              ممنون.
              ssl رو از میزبان خواستم و تنظیم کرد.
              ولی همچنان جوابی از ربات دریافت نمیکنم.بخاطره اینه که هاست تو ایرانه ؟ اگه اینجوری باشه راهی برای درست کردنش نیست یعنی ؟

              1. هادی اکبرزاده گفت:

                همون طور که با گوشی و .. وصل میشین سمت سرور هم باید چنین اتفاقی بیفته

    6. mamadmamad گفت:

      ممنون. امکان پاسخ دادن به پیام قبلی نبود دیگه.
      من هاستم لینوکسه و در فرانسه. پس از بابت هاست هم نباید مشکل داشته باشم. یه مسئله دیگه اینکه دامین من .ir هست. ممکنه به خاطر url و دامین .ir باشه که ربات جواب نمیده ؟ هرچند وبهوک به درستی داره ست میشه

      1. هادی اکبرزاده گفت:

        به دامین و … وابسته نیست
        1- درصوتی که SSL درسته
        2- درصورتی که هاست تو ایران نیست
        3- در صورتی که وب هوک به درستی تنظیم شده (یعنی آدرس تنظیم شده هم درسته)
        4- در صورتی که ماژول‌های مورد نیاز کدتون فعاله (که ابتدایی ترین ماژول مورد نیاز هر رباتی Curl هستش که طبیعتا تو هر هاستی به صورت پیشفرض فعاله)
        5- در صورتی که از دیتابیس استفاده میکنین و مشکلی در ارتباط باهاش وجود نداره

        تنها دلیل عادی ای که باقی میمونه اشکال تو کد شماست.
        همین کدی که اینجا قرار دادیم رو برای ربات تست کردین؟! اگه از همین هم نتیجه نگرفتین یا اشکال از درست تنظیم نکردن مسیر وب هوکه و یا اشکال از Curl هستش که این مورد بعیده!

        1. mamadmamad گفت:

          ماژول ها نصب نبودن. از میزبان خواستم نصب کرد. هاست در فرانسه و ssl هم تنظیمه. https://bsbook.ir
          ولی هنوز پاسخی نمیده ربات 😐 🙁
          برای چک کردن کد ها هم چون ربات تمرینیه من کد رو با توکن اینجا میذارم که چک کنید.

          مسیر فایل php هم تو ریشه هاست public_html هست که مسیر نهاییش میشه https://bsbook.ir/hello-world.php
          وب هوک رو هم خودتون چک کنید میگه که ست شده. دیگه نمیدونم مشکل از چی میتونه باشه واقعا 😐
          چیز دیگه ای واسه چک کردن مونده ؟
          (شرمنده که طولانی شد این پرسش و پاسخ !)

          1. mamadmamad گفت:

            مثل اینکه کد رو نمیشه اینجا ارسال کرد. کد فایل php همون کدیه که خودتون گذاشتید. عینا کپی کردم تو note++ ،فقط خط اولش به جای توکن ربات رو گذاشتم، سیو php و آپلود تو هاست و ادامه داستان.

          2. هادی اکبرزاده گفت:

            متاسفانه من چیزی در اختیار ندارم که بتونم چک کنم!
            اگه میتونین از قسمت تماس با ما، اطلاعات ورود هاستتون رو برامون ارسال کنین تا چک کنم.
            تماس با ما

            1. mamadmamad گفت:

              ممنون
              فرستادم.
              آیدی ربات تلگرام هم اینه در حال حاضر (کد با توکن این ربات نوشته شده) :
              @codexercisebot

              1. هادی اکبرزاده گفت:

                مشکلتون رو حل کردم و روش حلش رو به انتهای همین پست اضافه کردم؛ موفق و پیروز باشین

              2. محمد گفت:

                سلام خسته نباشید
                اقامنم همین مشکل رودارم،خیلی وقته درگیرشم،یه زحمت بکش برامنم نگاه کن ببین این چه مشکلی داری،هرکاری میکنم پیام نمیده،اون ماژولی که نوشتی دوهم زدم نشد
                رباته اینه ***
                ایمیلم
                *****
                رمزم اینه
                *****
                آقادمت گرم زحمته اینوبکش
                توکنه داخله هاست هست
                ممنون

                1. هادی اکبرزاده گفت:

                  سلام؛ با این اطلاعات کاری نمیتونیم انجام بدیم

              3. محمد گفت:

                سلام
                نام کاربریم اینهqwertyu1
                رمزbT90rxi7J5
                مشخصات هاست اینه
                دیگه نمیدونم چه چیزهایی روبفرستم که چک کنید
                اگه میبینیدچیزه دیگه ای لازم داره بفرماییدتامن ارسال کنم واسه ی چک کردن،شرمنده مزاحم شدم
                تشکر

                1. هادی اکبرزاده گفت:

                  شما یک بار تمامی اطلاعات رو از بخش تماس با ما برامون ارسال کنین اینطور که هربار تو یه بخشی جواب میدین چیزی ملوم نیس!

    7. ممدرضا گفت:

      سلام خسته نباشیدوتشکرازسایتِ خوبتون
      یه سوال داشتم
      من توقسمت سِت وبهوک هستم وبرایcreate webhook
      api landingرومیخاد،میخاستم ببینم برای این قستمت چه چیزی بایدپرکنمapi landingچه قسمتی ازربات میشه تابفرستم براش

      1. هادی اکبرزاده گفت:

        سلام؛ متوحه منظورتون نشدم!
        چیو به کی بفرستین؟! api landing کجاست؟!

        1. ممدرضا گفت:

          ببینیدمن وبهوکم روست کردم یه جایی که قبلاخودم میدونستم حالااینوازمن میخاد

          https//:yoursite.com/api-landing
          یورسایت که ادرس دامینم میشه apilandingنمیدونم چیه کمک کنیدممنون میشم

          1. هادی اکبرزاده گفت:

            هنوز که نگفتین کی این چیزارو ازتون میخواد! اما احتمال میدم که دارین از یه سرویسی جهت ساخت ربات تلگرام استفاده می‌کنین!
            با توجه به معنی و مفهوم api-landing، ازتون می‌خواد که همون لینک وب هوک رو بهش بدین. در واقع این api-landing ادامه مسیره که باید به آدرس فایل اجرایی سورس رباتتون ختم شه (همون لینک وب هوک). مثلا:
            https://fullkade.com/bot/test.php

    8. parsa گفت:

      سلام اموزش زبان سی شارپ هم دارید؟

      1. هادی اکبرزاده گفت:

        سلام؛ فلن من درگیر پروژه پایان‌نامه هستم و آموزش‌ها اواسط شهریور به بعد اصلاح و ادامه پیدا میکنن
        در حال حاظر دوره آموزشی H رو کلید زدیم که از طریق لینک زیر میتونین به تمام عناوینش تو سایت دسترسی داشته باشین
        لینک
        منتظر اصلاح آموزش‌ها و ادامشون باشین

    9. علی کوشکی گفت:

      سلام من از هاست گیگفا استفاده کردم، web hook درست تنظیم شد و پیامش کاملا شبیه پیامی بود که شما گذاشتید،اما من به ربات پیام میدم هیچ پیامی نمیاد.حتی یه فایل به اسم php.ini داخل هاست ایجاد کردم و کدی که شما گذاشتید رو داخلش نوشتم،تغییری ایجاد نشد.
      ممنون از زحمتت بابت آموزش

      1. هادی اکبرزاده گفت:

        سلام؛ میتونه به خاطر SSL باشه چون دوسال پیش از این سایت استفاده کرده بودم و جواب نداد
        یه هاست ارزون تهیه کنید و اس اس ال رایگان Lets Encrypt روش نصب کنین

    10. علی گفت:

      GIGU .IR دامنه دارم اما انگار فیکه

      1. par8kban0 گفت:

        نه چون رایگانه و گواهینامه ssl نداره بنظرم نمیشه

    11. par8kban0 گفت:

      من هم میخوام شروع کنم برنامه نویسیو یچی هم نمیدونم

    12. par8kban0 گفت:

      چرا پست نمیشه گذاشت؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

    13. محمد گفت:

      سلام خسته نباشید
      آقامن توست وبهوک گیرکردم،به نظرم مشکل توurlهست میخواستم بپرسم چطورمیتونم ادرسه دقیقه urlکه فایلphpداخلش هست روبدست بیارم
      تشکرازراهنمایی هاتون

      1. هادی اکبرزاده گفت:

        سلام دوست عزیز
        مسیر پوشه‌هارو از public_html به بعد در نظر گرفته و طی کنین تا در نهایت به فایل برسین
        متاسفانه اینا جزء موارد پایه هستن و نمیشه اینجا به سادگی توضیح داد

    14. محمد گفت:

      آقاشرمنده دوباره مزاحم میشم
      من شایدیه یه ماهیه درگیره این ست وبهوکم،نمیشه که نمیشه،یعنی رباتم بعده ست وبهوک پیام نمیده،این توکن رباتم هست
      461293273:AAF9tctcGD8dAF809A54HFosKAXj2jUlf7w
      واین سایتی هست هاستم داخلشه
      Webtook.com
      واین دامینم هستش
      qwertyuiop.gigfa.com
      واینم ادرسه فایلهphpهست که داخله هاستم هست
      home/qwertyu1/public_html/robat
      اینوشمابی زحمت بگوچطوری بچینمشون کناره هم وبهوکم ست شه ربات پیام بده دمه شماگرم

      1. هادی اکبرزاده گفت:

        ببینید home/qwertyu1/public_html/robat مسیر فایل نیست!
        همونطور که بهتون گفتم مسیر فایل از public_html به بعد رو شامل میشه! یعنی این قسمت home/qwertyu1/public_html جزء مسیر فایل نیست!
        بنابراین اگه فایلی داخل پوشه‌ی robat به نام test.php داشته باشین، لینکش برای دامنه‌ی fullkade.com به صورت زیر در میاد:
        https://fullkade.com/robat/test.php

    15. Esmael گفت:

      سلام ممنون از اموزش خوبتون
      ربات برام پیام نمیفرسته همه کارایی که گفته بودینو انجام دادم. لطفا خودتون کدها و تنظیمات سرورمو یه چک بفرمایید. اینجا اطلاعات سرورمو بفرستم؟

      1. هادی اکبرزاده گفت:

        سلام. ما در اینجا مقدمات برنامه‌نویسی ربات تلگرامو برای کسانی که با برنامه‌نویسی آشنایی دارن توضیح دادیم و متاسفانه فعلا تو کار نصب و راه اندازی اسکریپت‌های آماده نیستیم.

        1. Esmael گفت:

          سلام امروز تقریبا بعداز یه هفته خودش پیامای hello world رو با هم فرستاده بود بنظرتون دلیلش چی میتونه باشه که اینهمه تاخیر داره؟

          1. هادی اکبرزاده گفت:

            قطعی سرور و انباشته شدن پیام‌ها

            1. Esmael گفت:

              یعنی باید هاستمو عوض کنم؟

              1. هادی اکبرزاده گفت:

                درصورتی که این مشکل مکررا تکرا شه با پشتیبانی هاستتون در تماس باشین

                1. Esmael گفت:

                  ممنون مشکلم حل شد دوستان اگه ربات براتون پیام نمیفرسته ورژنهای مختلف php سرورتونو امتحان کنید.