آموزش ساخت ربات تلگرام با PHP

آموزش ساخت ربات تلگرام با PHP

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

معرفی Telegram Bot
پس از سال ۲۰۱۶، ربات‌ها به یک تِرِند در دنیای فناوری تبدیل شدند و به نظر هم می‌رسد که روز به روز به میزان محبوبیت آنها افزوده خواهد شد. آنچه مسلم است اینکه ربات‌ها صرفاً در صنعت هوش مصنوعی کاربرد ندارند بلکه به سادگی از ربات‌ها می‌توان به منظور توسعه دادن قابلیت‌های وب‌سایت خود استفاده نموده و یا به عنوان یک اپلیکیشن مجزا بدون هزینه کردن برای سرور و دیگر مسائل مربوطه، استفاده کرد.

به طور خلاصه، Telegram Bot یک اپلیکیشن به اصطلاح Third-party است که بر بستر سرویس تلگرام اجرا می‌شود (برای کسب اطلاعات بیشتر، به مستندات رسمی Telegram Bot مراجعه نمایید). از جمله مزایای ربات‌ها می‌توان به هزینه‌های پایین توسعه و نگهداری آنها از یک سو و همچنین کاربرد آنها روی هر نوع دیوایسی -از لپ‌تاپ گرفته تا موبایل و تبلت- از سوی دیگر اشاره کرد. به طور کلی از جمله‌ قابلیت‌های ربات‌ها می‌توان به موارد زیر اشاره کرد:
- ارسال اخبار و نوتیفیکیشن: ربات‌ها می‌توانند به عنوان یک خبرسان هوشمند عمل کرده و کاربران وب‌سایت شما را به محض پابلیش شدن یک خبر، مقاله یا پست جدید مطلع سازند (به عنوان مثال می‌توان به ربات خبرنامهٔ TechCrunch اشاره کرد).

- امکان تعامل با دیگر سرویس‌ها: ربات‌های تلگرام این امکان را در اختیار دولوپرها قرار می‌دهند تا با دیگر بات‌ها مثل Gmail Bot ،Github Bot و غیره ارتباط برقرار سازند.

- فروشگاه آنلاین: یک ربات تلگرام می‌تواند به عنوان یک سرویس تجارت الکترونیک برای فروش خدمات و محصولات به کار گرفته شود (API تلگرام از سرویس‌های پرداخت Android Pay و Apple Pay پشتیبانی می‌کند).

- ساخت اپلیکیشن: تلگرام با بات‌های خود این امکان را در اختیار دولوپرها می‌گذارد تا بدون هزینه کردن برای اجارهٔ سرور و غیره، اقدام به طراحی و عرضهٔ اپلیکیشن‌های مختلفی همچون سرویس ترجمه، نظرسنجی، تست آنلاین و غیره کنند.

- طراحی گیم: با استفاده از ربات‌های تلگرام، می‌توان با بهره‌گیری از قابلیت‌های HTML5 اقدام به طراحی بازی‌های آنلاین کرد.

- ساخت شبکه‌های اجتماعی: یک ربات تلگرام را می‌توان به عنوان یک شبکهٔ اجتماعی که کاربران بر بستر آن می‌توانند به تعامل با یکدیگر بپردازند نیز مورد استفاده قرار داد.

تفاوت ربات‌های تلگرام با کاربران عادی
به طور کلی، ربات‌های تلگرام دارای یکسری تفاوت‌های عمده و محدودیت‌هایی نسبت به کاربران عادی تلگرام هستند. به طور مثال، ربات‌های تلگرامی از فضای ابری محدودتری نسبت به کاربران عادی برخوردارند. علاوه بر این، یک ربات نمی‌تواند با یک کاربر عادی شروع به چت کند بلکه این کاربران عادی هستند که مکالمه با یک ربات را می‌توانند شروع کرده و ربات هم پاسخ ایشان را خواهد داد. همچنین به خاطر داشته باشید که نام‌کاربری ربات‌های تلگرام همواره به کلمهٔ bot ختم می‌شود (مثل Github_bot@)

آشنایی با BotFather
BotFather خود رباتی است که توسط تلگرام توسعه داده شده تا با استفاده از آن بتوان اقدام به ایجاد و مدیریت دیگر ربات‌ها کرد. برای شروع، عبارت BotFather را در قسمت جست‌وجوی اپلیکیشن تلگرام خود وارد کرده و روی آن کلیک کنید (برای اینکه مطمئن شوید که BotFather اصلی را انتخاب کرده‌اید، می‌توانید به علامت تیک آبی رنگ که در کنار لوگوی BotFather است توجه کنید که نشان از معتبر بودن این ربات دارد. همچنین برای سهولت کار، می‌توانید روی لینک t.me/botfather کلیک نمایید که شما را به این ربات هدایت می‌کند). پس از کلیک کردن، وارد این ربات شده و با پیامی همچون پیام زیر مواجه خواهید شد:

What can this bot do?
BotFather is the one bot to rule them all. Use it to create new bot accounts and manage your existing bots.
About Telegram bots:
https://core.telegram.org/bots
Bot API manual:
https://core.telegram.org/bots/api
Contact @BotSupport if you have questions about Bot API.

در این مرحله‌ از کار برای شروع ساخت یک ربات تلگرامی، می‌بایست روی دکمهٔ START کلیک نمایید و به محض کلیک کردن روی این دکمه، با پیام زیر مواجه خواهید شد:

I can help you create and manage Telegram bots. If you're new to the Bot API, please see the manual (https://core.telegram.org/bots).

You can control me by sending these commands:

/newbot - create a new bot
/mybots - edit your bots [beta]
/mygames - edit your games (https://core.telegram.org/bots/games) [beta]

Edit Bots
/setname - change a bot's name
/setdescription - change bot description
/setabouttext - change bot about info
/setuserpic - change bot profile photo
/setcommands - change the list of commands
/deletebot - delete a bot

Bot Settings
/token - generate authorization token
/revoke - revoke bot access token
/setinline - toggle inline mode (https://core.telegram.org/bots/inline)
/setinlinegeo - toggle inline location requests (https://core.telegram.org/bots/inline#location-based-results)
/setinlinefeedback - change inline feedback (https://core.telegram.org/bots/inline#collecting-feedback) settings
/setjoingroups - can your bot be added to groups?
/setprivacy - toggle privacy mode (https://core.telegram.org/bots#privacy-mode) in groups

Games
/newgame - create a new game (https://core.telegram.org/bots/games)
/listgames - get a list of your games
/editgame - edit a game
/deletegame - delete an existing game

همان‌طور که ملاحظه می‌شود، کلیهٔ دستوراتی که برای ساخت یک ربات جدید و یا مدیریت ربات‌های قبلی مورد نیاز هستند در معرض دیدمان قرار گرفته‌اند (برای دسترسی به کامندهای فوق، به سادگی در صورت لزوم می‌توان کامند help/ را وارد کرد). به طور مثال، برای ساخت یک ربات جدید تلگرام می‌بایست روی دستور newbot/ کلیک کرده و یا این دستور را در فیلد پیام اپلیکیشن تلگرام وارد کرده و اینتر کنیم (به علامت / توجه کنید که حتماً باید وارد شود):

/newbot

به محض اجرای کامند فوق، با پیام زیر مواجه خواهیم شد:

Alright, a new bot. How are we going to call it? Please choose a name for your bot.

در واقع، در این مرحله از کار باید نامی برای ربات خود در نظر بگیریم که به طور مثال، در این آموزش نامی همچون My Tmp Telegram Bot را در نظر می‌گیریم. اگر انتخاب نام بدون هیچ مشکلی صورت گیرد، پیام زیر را دریافت خواهیم کرد:

Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.

همان‌طور که مشاهده می‌شود، حال می‌بایست یک یوزرنیم برای ربات خود انتخاب کنیم. نکتهٔ مهمی که در انتخاب نام‌کاربری برای ربات‌های تلگرام وجود دارد این است که نام‌کاربری مد نظر ما حتماً می‌بایست به کلمهٔ bot یا Bot ختم شود؛ همچنین مجاز به استفاده از اسپیس (فاصله) یا علائم خاص در نام‌کاربری ربات خود نیستیم و در نهایت، این نام‌کاربری باید منحصر به فرد باشد (یعنی کاربر دیگری قبلاً آن را استفاده نکرده باشد).

به عبارت دیگر، نامی همچون My Tmp Telegram Bot که به عنوان نام ربات خود انتخاب کردیم را نمی‌توانیم به عنوان یورزنیم استفاده کنیم. برای این منظور، نام انتخابی را کمی تغییر داده، کلیهٔ اسپیس‌ها را با _ جایگزین می‌کنیم و نامی همچون My_Tmp_Telegram_Bot را وارد کرده و اینتر می‌کنیم و چنانچه نام ما بدون مشکل باشد و یا قبلاً کسی آن را استفاده نکرده باشد، پیام زیر را دریافت خواهیم کرد:

Done! Congratulations on your new bot. You will find it at t.me/My_Tmp_Telegram_Bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
489256710:AAEVCOOZOZ7ZGW5M25whB60vlWugmYp_jKE

For a description of the Bot API, see this page: https://core.telegram.org/bots/api

می‌بینیم که باموفقیت توانستیم ربات تلگرامی خود را بسازیم و این در حالی است که پیام فوق، حاوی اطلاعات مهمی همچون Token و URL اختصاصی ربات ما است. در واقع، این توکن چیزی است که از آن طریق می‌توانیم به ربات با استفاده از RESTful API تلگرام دستور دهیم (لذا محرمانه نگاه داشتن این توکن ضروری است).

همان‌طور که پیش از این دیدیم، یکی از کامند‌های BotFather کامندی است تحت عنوان mybots/ که در صورت اجرای آن، به لیست کلیهٔ ربات‌هایی که تاکنون با اکانت کاربری خود ساخته‌ایم دست خواهیم یافت. سپس با انتخاب ربات مد نظر، قادر خواهیم بود تا آن را ویرایش کرده، حذف کرده و یا دیگر تنظیمات آن را آپدیت کنیم.

درآمدی بر Webhook
در تلگرام به دو روش مختلف می‌توان به تعامل با ربات‌ها پرداخت که اصطلاحاً عبارتند از Long Polling و Webhook. اگر بخواهیم خیلی ساده تفاوت این دو رویکرد را توضیح دهیم، بایستی بگوییم که در Long Polling ما به طور مستقیم با API تلگرام تعامل برقرار می‌سازیم اما این در حالی است که در Webhook ما به یک اصطلاحاً Callback نیاز داریم که API تلگرام در صورتی که پیام جدیدی از سمت کاربران ایجاد شود، آن را فراخوانی (Call) خواهد کرد.

در استفاده از Webhook همواره به خاطر داشته باشیم که نیاز به گواهینامهٔ SSL داریم (به عبارت دیگر، URL ما حتماً می‌بایست با https شروع شود). از آنجا که ممکن است برخی دانشجویان این آموزش وب‌سایتی که حاوی سرتیفیکیت SSL باشد نداشته باشند، در ادامه رویکرد اول را مورد استفاده قرار خواهیم داد).

ارسال ریکوئست (درخواست) برای API تلگرام
با مراجعه به لینک مستندات Telegram API، به مستندات جامعی در مورد API تلگرام دست خواهید یافت. به طور کلی، به منظور ارسال هرگونه ریکوئستی (درخواستی) برای API تلگرام، می‌بایست از URL زیر استفاده کنیم:

https://api.telegram.org/bot<token>/METHOD_NAME

همان‌طور که ملاحظه می‌شود، در URL فوق <token> و METHOD_NAME می‌بایست جایگزین شوند تا یک ریکوئست به اصطلاح Valid (صحیح) داشته باشیم. به عنوان مثال، URL زیر را در مرورگر وارد می‌کنیم (البته به خاطر داشته باشید که توکن اختصاصی خود را جایگزین نمایید):

https://api.telegram.org/bot489256710:AAEVCOOZOZ7ZGW5M25whB60vlWugmYp_jKE/

پیش از اجرای URL فوق، به خاطر داشته باشید توکنی که پس از ساخت ربات در اختیار ما قرار داده شد را باید به کلمهٔ bot ضمیمه کرده سپس بعد از آدرس https://api.telegram.org قرار دهیم. چنانچه URL فوق را در مرورگر اجرا کنیم، با یک پیام JSON به صورت زیر مواجه خواهیم شد:

{  
   "ok":false,
   "error_code":404,
   "description":"Not Found: method not found"
}

همان‌طور که ملاحظه می‌شود، پیام خطایی در معرض دیدمان قرار می‌گیرد با این مضمون که «هیچ متدی یافت نشد». برای رفع این مشکل، می‌توان برای تست از یکی از متدهای رایج API تلگرام تحت عنوان getme استفاده نموده و URL فوق را به صورت زیر تکمیل کنیم:

https://api.telegram.org/bot489256710:AAEVCOOZOZ7ZGW5M25whB60vlWugmYp_jKE/getme

حال با اجرای URL فوق در مرورگر، با پیام موفقیت‌آمیز جیسون زیر مواجه خواهیم شد:

{  
   "ok":true,
   "result":{  
      "id":489256710,
      "is_bot":true,
      "first_name":"My Tmp Telegram Bot",
      "username":"My_Tmp_Telegram_Bot"
   }
}

در واقع، کاری که متد getme انجام می‌دهد این است که اطلاعات ربات مد نظر را از سرورهای تلگرام دریافت می‌کند که حاوی نام، نام‌کاربری و شناسهٔ ربات است. تا اینجای کار، ربات تلگرامی ما هیچ کار خاص را نمی‌تواند انجام دهد بلکه صرفاً به منزلهٔ اکانتی است که در آینده می‌توانیم آن را برنامه‌ریزی کنیم تا کار خاصی را انجام دهد.

آشنایی با متد getupdates
برای اینکه بتوانیم از آخرین وضعیت ربات خود مطلع شویم، هم‌ می‌توانیم از متد getupdates استفاده نماییم و هم وب‌هوک ست کنیم که پیش از این به معرفی آن پرداختیم (به خاطر داشته باشید که آخرین آپدیت‌ها نهایتاً ۲۴ ساعت در سرورهای تلگرام ذخیره می‌شوند). از هر روشی که استفاده کنیم، نتیجه یک آبجکت جیسون است. به عنوان مثال داریم:

https://api.telegram.org/bot489256710:AAEVCOOZOZ7ZGW5M25whB60vlWugmYp_jKE/getupdates

اگر URL فوق را در مرورگر اجرا کنیم، با خروجی زیر مواجه خواهیم شد:

{  
   "ok":true,
   "result":[  

   ]
}

می‌بینیم که پاسخ جیسون کاملاً درست است اما حاوی آبجکتی خالی است چرا که ما به تازگی ربات خود را ساخته‌ایم و حاوی هیچ‌گونه آپدیتی نیست. برای اینکه اقدام به ایجاد دیتای آپدیت برای ربات خود کنیم، وارد اپلیکیشن تلگرام شده و با کلیک روی یوآر‌ال ربات خود، وارد ربات شده و دکمهٔ START را کلیک می‌کنیم و یک پیام تستی را وارد کرده و اینتر می‌کنیم. حال اگر مجدد متد getupdates را به همان صورتی که در بالا آموزش داده شد اجرا کنیم، با آبجکت جیسون زیر مواجه خواهیم شد:

{  
   "ok":true,
   "result":[  
      {  
         "update_id":146336949,
         "message":{  
            "message_id":1,
            "from":{  
               "id":115619944,
               "is_bot":false,
               "first_name":"\u0628\u0647\u0632\u0627\u062f",
               "last_name":"\u0645\u0631\u0627\u062f\u06cc",
               "username":"xxx",
               "language_code":"en"
            },
            "chat":{  
               "id":115619944,
               "first_name":"\u0628\u0647\u0632\u0627\u062f",
               "last_name":"\u0645\u0631\u0627\u062f\u06cc",
               "username":"xxx",
               "type":"private"
            },
            "date":1512453507,
            "text":"/start",
            "entities":[  
               {  
                  "offset":0,
                  "length":6,
                  "type":"bot_command"
               }
            ]
         }
      },
      {  
         "update_id":146336950,
         "message":{  
            "message_id":2,
            "from":{  
               "id":115619944,
               "is_bot":false,
               "first_name":"\u0628\u0647\u0632\u0627\u062f",
               "last_name":"\u0645\u0631\u0627\u062f\u06cc",
               "username":"xxx",
               "language_code":"en"
            },
            "chat":{  
               "id":115619944,
               "first_name":"\u0628\u0647\u0632\u0627\u062f",
               "last_name":"\u0645\u0631\u0627\u062f\u06cc",
               "username":"xxx",
               "type":"private"
            },
            "date":1512453582,
            "text":"In The Name of The Most High"
         }
      }
   ]
}

می‌بینیم که مکالمه با ربات خود را شروع کرده‌ایم و در کلیدی تحت عنوان text و مقدار In The Name of The Most High، پیام ارسالی برای ربات‌مان را مشاهده می‌کنیم.

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

آبجکت جیسون فوق حاوی اطلاعات خوبی است که برای کدنویسی ربات خود با زبان PHP (یا هر زبان برنامه‌نویسی دیگری) می‌توانیم از آنها استفاده کنیم. به طور مثال، این آبجکت حاوی کلیدی تحت عنوان chat است که یکی از کلید‌های آن id است که به منزلهٔ شناسهٔ همان کاربری است که با ربات ارتباط برقرار ساخته است. اطلاعات دیگری همچون زبان، تاریخ، نام، نام‌خانوادگی و ... نیز در این آبجکت وجود دارند که در صورت لزوم می‌توان از آنها استفاده کرد. حال در ادامه خواهیم دید که به چه شکل می‌توان برای ربات خود پیام ارسال کرد.

آشنایی با متد sendmessage
به منظور ارسال پیام برای ربات خود، علاوه بر توکن که در حین ساخت ربات در اختیارمان قرار گرفت، ما به Chat ID نیز نیاز خواهیم داشت که این شناسه قبلاً در آبجکت جیسون که در اختیارمان قرار گرفت در قالب کلید id در معرض دیدمان قرار گرفته است. همچنین به پیامی نیاز داریم که قرار است در اختیار ربات قرار گیرد. برای این منظور، URL زیر را مد نظر قرار می‌دهیم:

https://api.telegram.org/bot489256710:AAEVCOOZOZ7ZGW5M25whB60vlWugmYp_jKE/sendmessage?text=Hello%20Telegram&chat_id=115619944

به محض اجرای URL فوق در مرورگر، چنانچه هیچ مشکلی وجود نداشته باشد، یک پیام در باکس پیام‌های ربات‌مان ارسال خواهد شد. همان‌طور که در URL فوق مشاهده می‌شود، از متدی تحت عنوان sendmessage استفاده کرده‌ایم که حداقل حاوی دو پارامتر ورودی است که عبارتند از text و chat_id (به خاطر داشته باشید که برای مجزاسازی پارامترها، می‌بایست از علامت & استفاده کرد).

در مثال فوق، برای text از پیامی همچون Hello Telegram استفاده نموده‌ایم و شناسهٔ چت هم همان شناسه‌ای است که در آبجکت جیسون که پس از اجرای متد getupdates به دست آوردیم در معرض دیدمان قرار گرفت. به محض اجرای URL فوق، پیام جیسون به عنوان خروجی در اختیارمان قرار می‌گیرد که به شکل زیر خواهد بود:

{  
   "ok":true,
   "result":{  
      "message_id":3,
      "from":{  
         "id":489256710,
         "is_bot":true,
         "first_name":"My Tmp Telegram Bot",
         "username":"My_Tmp_Telegram_Bot"
      },
      "chat":{  
         "id":115619944,
         "first_name":"\u0628\u0647\u0632\u0627\u062f",
         "last_name":"\u0645\u0631\u0627\u062f\u06cc",
         "username":"xxx",
         "type":"private"
      },
      "date":1512454649,
      "text":"Hello Telegram"
   }
}

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

مدیریت ربات تلگرام با زبان PHP
به عنوان گام اول، فایلی با نامی دلخواه مثلاً MyTmpTelegramBot.php می‌سازیم و کدهای زیر را وارد می‌کنیم:

<?php
class MyTmpTelegramBot
{
    const BOT_TOKEN = "489256710:AAEVCOOZOZ7ZGW5M25whB60vlWugmYp_jKE";
    const TELEGRAM_API_URL = "https://api.telegram.org/bot";

    public $url;

    public function __construct()
    {
        $this->url = SELF::TELEGRAM_API_URL . SELF::BOT_TOKEN;
    }

    private function runScript($method)
    {
        return file_get_contents($this->url . '/'. $method);
    }

    public function getUpdates()
    {
        return $this->runScript('getupdates');
    }

    public function sendMessage($chatId, $text)
    {
        $url = "sendmessage?text=$text&chat_id=$chatId";
        return $this->runScript($url);
    }
}

$obj = new MyTmpTelegramBot();
$updatesJson = $obj->getUpdates();
$updatesJson2Array = json_decode($updatesJson, true);
$chatId = $updatesJson2Array['result'][0]['message']['chat']['id'];
$obj->sendMessage($chatId, 'Hi');

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

به طور کلی، می‌شد بدون استفاده از قابلیت شیٔ‌گرایی، این اسکریپت را به مراتب ساده‌تر نوشت اما به منظور ارتقاء مهارت‌های کدنویسی OOP دانشجویان سکان آکادمی، این مثال را به صورت شیٔ‌گرا نوشتیم (برای آشنایی بیشتر با مبحث OOP، به مقالهٔ درآمدی بر Inheritance (وراثت) در زبان PHP مراجعه نمایید). در همین راستا، کلاسی ایجاد کرده‌ایم تحت عنوان MyTmpTelegramBot که حاوی دو کانستند (متغیر ثابت) تحت عناوین BOT_TOKEN و TELEGRAM_API_URL و همچنین یک پراپرتی تحت عنوان url$ است.

در خط ۹ام، یک کانستراکتور نوشته‌ایم که این وظیفه را دارا است تا به محض ساخت یک آبجکت از روی کلاس MyTmpTelegramBot، فراخوانی شده و پراپرتی url$ را مقداردهی کند؛ در واقع،‌ برای دستیابی به یک پراپرتی در دیگر بخش‌های یک کلاس، از دستور <-this$ استفاده می‌کنیم (برای آشنایی بیشتر با مفهوم کانستراکتور در زبان PHP، به مقالهٔ آشنایی با مفاهیم Constructor و Destructor در PHP به زبان ساده مراجعه نمایید).

همان‌طور که در خط ۱۰ام مشاهده می‌شود، به منظور دستیابی به کانستندها، ابتدا کلیدواژهٔ SELF را نوشته، علائم :: را قرار داده سپس نام کانستنت را نوشته‌ایم. از این پس، ما URL صحیح به منظور ارتباط برقرار کردن با API سرویس تلگرام را داریم.

در خط ۱۴ام، فانکشنی نوشته‌ایم تحت عنوان ()runScript که یک پارامتر ورودی تحت عنوان method$ می‌گیرد. کاری که این فانکشن انجام می‌دهد این است که متد از پیش تعریف شده در زبان PHP تحت عنوان ()file_get_contents را فراخوانی می‌کند که این وظیفه را دارا است تا URL مد نظر ما را اجرا کند.

به عنوان پارامتر ورودی این فانکشن هم پراپرتی url$ را به متد ورودی مد نظر الحاق (Concatinate) می‌کنیم. در نهایت، خروجی این تابع را return می‌کنیم (باتوجه به اینکه فانکشن ()runscript قرار است تا فقط و فقط از داخل این کلاس فراخوانی شد، تایپ آن را برابر با private قرار داده‌ایم).

در خط ۱۹ام فانکشن دیگری نوشته‌ایم تحت عنوان ()getUpdates که این وظیفه را دارا است تا متد getupdates گنجانده شده در API تلگرام را فراخوانی کند. برای این منظور، فانکشن ()runScript را فراخوانی کرده و به عنوان پارامتر ورودی، استرینگ getupdates را به آن پاس می‌دهیم (توجه داشته باشیم چنانچه بخواهیم یک فانکشن را داخل بدنهٔ کلاس در فانکشن دیگری صدا بزنیم، می‌بایست از دستور <-this$  استفاده کرد).

در خط ۲۴ام فانکشن دیگری نوشته‌ایم تحت عنوان ()sendMessage که این وظیفه را دارا است تا پیامی را برای ربات‌مان ارسال کند. این فانشکن دو پارامتر ورودی می‌گیرد که یکی chatId$ است و دیگری text$. 

داخل این فانکشن ابتدا متغری تحت عنوان url$ ساخته‌ایم که حاوی متد sendmessage گنجانده شده در API تلگرام است که حاوی دو پارامتر وروردی تحت عناوین text و chat_id است که مقادیر آنها را برابر با پارامترهای ورودی این فانکشن قرار داده‌ایم. در نهایت هم متغیر url$ را عنوان پارامتر ورودی فانکشن ()runScript در نظر گرفته و خروجی آن را return کرده‌ایم.

تا این مرحله از کار، کدهای کلاس ما تکمیل شده‌اند. حال جهت تست اسکریپت فوق، خارج از بدنهٔ کلاس، در خط ۳۱ام آبجکتی از روی کلاس MyTmpTelegramBot تحت عنوان obj$ می‌سازیم. در خط ۳۲ام هم ابتدا فانکشن ()getUpdates را فراخوانی کرده و آن را داخل متغیری تحت عنوان updatesJson$ ذخیره می‌سازیم.

باتوجه به اینکه خروجی این فانکشن یک آبجکت جیسون است، نیاز داریم تا آن را به یک آرایه تبدیل کنیم تا به سادگی به کلیدهای آن دسترسی داشته باشیم. برای همین منظور، متغیری دیگری در خط ۳۳ام می‌سازیم تحت عنوان updatesJson2Array$ و مقدار آن را برابر با متد از پیش نوشته شده در زبان PHP تحت عنوان ()json_encode قرار می‌دهیم؛ به عنوان پارامتر اول، متغیر updatesJson$ را گذاشته و به عنوان پارامتر دوم هم مقدار true را در نظر می‌گیریم تا خروجی یک آرایهٔ پی‌اچ‌پی باشد.

حال برای آنکه بتوانیم برای این ربات یک پیام ارسال کنیم، ابتدا می‌بایست به شناسهٔ چت دسترسی پیدا کنیم؛ برای این منظور، متغیری تحت عنوان chatId$ ساخته و کلید id از کلید chat که در کلید message قرار دارد را در آن ذخیره می‌سازیم.

در خط آخر هم به سادگی فانکشن ()sendMessage را فراخوانی کرده و به عنوان شناسهٔ چت، متغیر chatId$ و به عنوان پیام هم استرینگ Hi را به آن پاس داده‌ایم. حال اگر اسکریپت فوق را در مرورگر اجرا کنیم (چنانچه ارور خاصی وجود نداشته باشد)، یک پیام تحت عنوان Hi (سلام) برای ربات‌ تلگرامی ما ارسال خواهد شد (لازم به ذکر است رباتی که در این آموزش ساخته شد حذف گردیده است؛ لذا برای پیشروی با این آموزش، حتماً نیاز است تا یک ربات اختصاصی به همان ترتیبی که توضیح داده شد و با استفاده از BotFather ساخته شود).