آردوینو Arduinoاینترنت اشیا - IOTمطالب علمی

آموزش اتصال ESP8266 به ربات تلگرام(ایجاد ربات تلگرام)

ربات تلگرام چیست؟

Sisoog TelegramBot

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

برخی از ویژگی‌ها و محدودیت‌های ربات تلگرام:

  • ربات‌ها معمولاً فضای محدودی برای ذخیره‌سازی پیام‌های شما دارند و معمولاً پیام‌های پردازش‌شده پاک می‌شوند.
  • ربات‌ها نمی‌توانند شروع‌کننده‌ی مکالمه باشند و باید حتماً از سمت شما درخواستی برای پردازش به آن‌ها ارسال شده باشد.
  • در انتهای نام کاربری هر ربات باید کلمه bot وجود داشته باشد که مشخص‌کننده‌ی ربات بودن آن حساب کاربری است.
  • ربات‌های تلگرام هرگز خسته و غیرفعال نمی‌شود ولی شما به‌راحتی می‌توانید آن‌ها را برای خود غیرفعال کنید.
  • ربات‌ها با اضافه شدن به گروه‌ها و کانال‌ها قادر به خواندن پیام‌ها نیستند مگر آن‌که تنظیمات آن را تغییر داده باشید.
  • ربات‌ها تعداد محدودی پیام در روز می‌توانند ارسال کنند.
  • ربات‌ها زمان آخرین بازدید را ندارند و به جای آن Bot نمایش داده می‌شود.

ربات تلگرام چه کارهایی را می‌تواند انجام دهد؟

وقتی می‌پرسیم که با آردوینو چه کارهایی می‌توان انجام داد، باید بگوییم که هیچ محدودیتی وجود ندارد؛ تنها محدودیتِ موجود میزان خلاقیت شماست. ربات تلگرام نیز هیچ محدودیتی در پیاده‌سازی ایده‌ها و کاربردها ندارد و هر آنچه که برای آن پیاده‌سازی شده باشد را قادر است انجام دهد.

چگونه یک ربات تلگرام بسازم؟

خوشبختانه ساخت ربات تلگرام کار پیچیده ای نیست. تنها کافی است که یک حساب تلگرام داشته باشید و سر صحبت را با ربات پدرخوانده (botfather) باز کنید و به او بگویید که می‌خواهید یک ربات بسازید. بقیه‌ی کارها را خودش انجام می‌دهد. برای باز کردن سر صحبت با ربات پدرخوانده ابتدا دستور زیر را به آن بفرستید:

tl00

بعد از ارسال دستور start، ربات پدرخوانده لیستی از دستورات قابل‌اجرا را برای شما ارسال می‌کند.

tl02

همان‌طور که در عکس فوق هم مشخص است برای ساخت یک ربات جدید باید دستور زیر را به ربات پدرخوانده بفرستیم:

ربات پدر‌خوانده با دریافت دستور newbot از شما نام کاربری ربات موردنظر را سؤال می‌کند. دقت داشته باشید نام کاربری با نام ربات فرق دارد و نام کاربری ربات شما حتماً در انتها باید دارای bot باشد. اگر نام کاربری را بدون bot در انتها وارد کنید، ربات پدرخوانده پیام زیر را نمایش می‌دهد:

tl04

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

tl05

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

ربات تلگرام چطور کار می کند؟

Sisoog TelegramBotweb

قبل از این‌که توضیح بدهیم که چطور می‌توانیم ربات موردنظرمان را به آردوینو یا هر سخت‌افزار دیگری وصل کنیم، بهتر است در خصوص اتفاقاتی که درون هسته‌ی یک ربات می‌افتند صحبت کنیم.

وقتی‌که شخصی به ربات شما پیام ارسال می‌کند، پیام کاربر درون سرور تلگرام ذخیره می‌شود و تلگرام بسته به متد مورد‌استفاده‌ی شما (Web Hook یا Long Polling) برای برقراری ارتباط با سرور تلگرام، پیام کاربر را در قالب خاصی برای شما ارسال می‌کند و شما بعد از پردازش داده‌های ارسالی، پاسخ خود را در قالب مشخصی برای سرور تلگرام ارسال می‌کنید و تلگرام داده‌های دریافتی را برای کاربر ارسال می‌کند.

سرورهای تلگرام به‌عنوان واسط بین کاربر و هسته‌ی پردازشی ربات قرار می‌گیرند. این باعث می‌شود که هسته‌ی پردازشی، آدرس آی پی کاربر را نداشته باشد و امنیت ارتباط بالا برود.

دو روش برای برقرار ارتباط با سرورهای تلگرام وجود دارد: روش اول که توسط خود تلگرام نیز توصیه می‌شود روش Web Hook است. در این روش هر وقت ربات شما پیام جدیدی داشته باشد خود سرور تلگرام پیام را برای شما ارسال می‌کند. در این روش داشتن آدرس آی پی اختصاصی و مجوز SSL الزامی است. تهیه‌ی این دو پارامتر هزینه‌بر است و نمی‌توان از آن در همه‌ی کاربردها استفاده کرد. ما قرار است در این آموزش برد آردوینو را به ربات تلگرام متصل کنیم. قاعدتاً تهیه آی پی استاتیک برای برد آردوینو کار دشواری است. از طرفی پیاده‌سازی پروتکل SSL خود به‌تنهایی کاری بسیار پیچیده است.

در این آموزش ما از متد Long Polling استفاده می‌کنیم. در متد Long Polling سرور تلگرام چیزی به ما نمی‌دهد بلکه ما باید مدام از سرور استعلام کنیم و ببینیم آیا پیام جدیدی برای پردازش وجود دارد یا خیر! در صورت وجود پیام جدید آن را پردازش می‌کنیم و به سرور ارسال می‌کنیم. در این روش نیازی به داشتن آی پی استاتیک یا مجوز SSL نیست و به‌راحتی می توان با سرور ارتباط برقرار کرد.

چگونه به سرور وصل شویم؟

584fde66edba589e42

همان‌طور که گفتیم برای اتصال به سرورهای تلگرام ما از روش Long Polling استفاده خواهیم کرد. در این روش اول لازم است که یک آدرس ایجاد کنیم و بعد با مراجعه به آدرس، عملیات موردنظر خود را انجام دهیم.

برای کنترل ربات تلگرام باید از متدهای معرفی‌شده توسط تلگرام استفاده کنیم. هر یک از این متدها ورودی و خروجی‌های خاص خود را دارند. برای ارسال پارامترهای موردنیازِ هر متد می‌توان از روش POST یا GET استفاده کرد.

جهت سادگی بیشتر ما از متد GET برای ارسال پارامترها استفاده خواهیم کرد. در این روش پارامترهای موردنظر در URL قرار می گیرند.

https://sisoog.com/?p=26112

در مثال فوق با استفاده از متد GET، متغیر p مقدار 26112 را دریافت کرده و به سرور سیسوگ ارسال شده است.

برای این‌که بتوانیم به سرور تلگرام بگوییم که قصد چه کاری را داریم و قرار است در مورد کدام ربات صحبت کنیم نیاز است که URL منحصربه‌فردی بسازیم که دربردارنده‌ی این اطلاعات باشد. برای ساخت این URL باید مثل الگوی زیر رفتار کنیم:

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

<token> همان کلیدی است که ربات پدرخوانده بعد از ایجاد ربات برای ما ارسال کرده است. دقت داشته باشید که نباید هیچ فاصله‌ای وجود نداشته باشد و تمام فاصله‌ها حذف شوند.

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

فرض کنید می‌خواهیم متد getMe را برای رباتی که ساختیم فراخوانی کنیم.

sisoog Getme

با توجه به توضیحات ارائه‌شده در سایت تلگرام این متد هیچ پارامتر ورودی ندارد و در خروجی، داده‌ها را در قالب شیء User برمی‌گرداند.

Sisoog UserObject

همان‌طور که می‌بینید شیء User دارای مشخصات اولیه اعم از اسم، یوزر و زبان ربات است.

با توجه به توضیحات ارائه‌شده، ابتدا URL موردنظر خود را می سازیم، بعد آن را درون مرورگر وارد میکنم و سرور تلگرام خروجی را برای ما ارسال خواهد کرد:

https://api.telegram.org/bot427594526:AAGyn4uPF3R4woujYL-N1TQpDEslXXXXX/getme

بعد از فراخوانی آدرس فوق در مرورگر، سرور تلگرام اطلاعات مربوط به ربات را برای ما ارسال می‌کند:

LastTest

در مقاله‌ی بعد با استفاده از نرم‌افزار آردوینو و ماژول ESP8622 برنامه‌ای خواهیم نوشت که بتوانیم از طریق ربات تلگرام وضعیت چند خروجی را تغییر دهیم.

منبع: سیسوگ

نوشته های مشابه

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

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

دکمه بازگشت به بالا