تبلیغات

برنامه نویسی ربات تلگرام – آنچه قبل از شروع باید بدانیم

برنامه نویسی ربات تلگرام - آنچه قبل از شروع باید بدانیم

برنامه نویسی ربات تلگرام
آنچه قبل از شروع باید بدانیم


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

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

در نتیجه یادگیری برنامه نویسی ربات تلگرام می‌تواند برایتان بسیار مفید واقع شود؛ چرا که هم ساده بوده و هم قوی!

مقدمه‌ی برنامه نویسی ربات تلگرام

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

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

نرم افزار پیام‌رسان نیمباز، که به جرئت می‌توان گفت با ارائه‌ی نسخه‌های موبایل، داشتن چت‌روم‌ها، سادگی و آن رنگ جذاب نارنجی‌اش، بسیار شهرت پیدا کرده بود، اولین پیام رسانی بود که برنامه‌نویسان بسیاری را در بستر خود گرد آورد و البته خیلی‌ها را هم به سمت برنامه نویسی سوق داد. زمانی بود که انجمن‌های انبوهی برای نیمباز در سطح وب راه اندازی میشد و هرروز باید منتظر نرم افزارهای مخربی مثل فلادر، Cracker و برنامه‌های ایجاد ربات و … می‌شدیم.

اما بعد از نیمباز، هیچ پیام‌رسانی به اندازه‌ی آن نتوانست برنامه نویسان را به سمت خود سوق دهد و شاید دلیل آن این باشد که پیام ‌رسان‌های دیگر، سختی‌هایی برای انجام این کار داشتند؛ یا این که کسی پایه‌های آن را پی ریزی نکرد.
تا این که در حدود سال های 93 و 94 با فیلتر شدن یک باره‌ی نیمباز، شوک عظیمی به انبوه کاربران این پیام‌رسان وارد شد و کاربران سریعا به سمت نرم‌افزارهایی مثل واتس آپ، وایبر و ویچت هجوم بردند (مهاجرت کردند.)

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

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

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

معرفی شدن API ربات‌های تلگرام

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

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

بله، یک پلت فرم و API جدا برای ساخت ربات‌ها که تا به آن لحظه در هیچ نرم افزاری معرفی نشده بود و تلگرام با معرفی این قابلیت، انقلابی در ساخت ربات به پا کرد. مهم‌ترین مسئله این بود که تلگرام مستندات کامل و جامعی را برای ساخت ربات در اختیار برنامه نویسان قرار داد؛ نمونه سورس‌ها و حتی کتابخانه‌هایی برای کار با API تلگرام برای انواع زبان های برنامه نویسی…! خود تگرام نیز با هربار معرفی شدن قابلیت جدیدی برای ربات‌ها، یک نمونه ربات را توسعه میداد و در اختیار کاربران قرار میداد. برای مثال زمانی که قابلیت INLINE معرفی شد، به همراه این قابلیت، ربات‌هایی نیز معرفی شدند که یکی از آن ربات‌ها، ربات @like برای ایجاد پست با قابلیت لایک و … و ربات دیگر مثل @vote برای ایجاد پست با قابلیت نظر سنجی بود.

در کل باید بگوییم API  ربات تلگرام، راه توسعه ربات را بسیار هموارتر از قبل کرد.

هدف از ایجاد API ربات ها چه بود؟!

شاید بپرسید واقعا هدف از ایجاد API ربات ها چیست؟! یا اصلا منظور از API ربات ها چیست؟! منظور از این که یک پلت فرم برای ساخت ربات به وجود آمده چیست؟!

قبل از ایجاد این قابلیت، برنامه نویسان از اکانت واقعی، یعنی همین شماره‌ای که با آن وارد تلگرام می‌شویم، برای ساخت ربات استفاده می‌کردند! به این صورت که ربات را با API اکانت واقعی توسعه می‌دادند….! البته هنوز و در آینده هم می‌توان با اکانت واقعی رباتی توسعه داد! چون فرض کنید به جای این که خودمان مستقیم با اکانتمان چت کنیم، نرم افزاری می‌نویسیم که به جای ما با کاربران در تعامل باشد…!

حال مشکل اکانت واقعی چه بود که پلت فرم ربات‌ها توسعه داده شد؟
مشکل علاوه بر این که ظاهر اکانت واقعی و ربات باهم هیچ فرقی نداشتند، این بود که ربات و کاربر باید در امکانات باهم تفاوت‌هایی داشته باشند که این در این‌جا ممکن نبود! منظور از امکانات، امکانات سمت نرم افزار کلاینت و هم چنین سمت سرور می‌باشد.

با معرفی پلت فرم ربات‌ها، تلگرام برای اکانت ربات‌ها قابلیت‌هایی مثل ایجاد دکمه، دستورات و … را قرار داد که امکان انجام چنین کارهایی با اکانت واقعی وجود ندارد.
اکانت‌های ربات علاوه بر بهره‌مندی از ویژگی‌های منحصر به فردشان، برخی دسترسی‌ها را نیز ندارند…! از جمله این که نمی‌توانند به کسی که ربات را START نکرده پیامی ارسال کنند یا این که نمی‌توانند با لینک دعوت، وارد گروهی شوند و بایستی مستقیم Add Member شوند. ولی با این‌حال، خیلی از قابلیت‌های جدیدی و منحصر به فردشان را نیز دارند؛ گرچه خیلی از قابلیت‌های یک اکانت واقعی را نیز ندارند که البته به جز چند موارد از قابلیت‌های اکانت واقعی، بقیه‌ی موارد بهتر است در اکانت ربات نباشد تا موجب ایجاد باگ امنیتی (مشکلاتی) نشود.

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

در کل هدف از ایجاد API ربات‌ها را به موارد زیر تقسیم می کنیم:

  • ساخت ربات‌ها ساده‌تر شود.
  • ظاهر اکانت واقعی و اکانت ربات جدا شود.
  • امکاناتی برای اکانت ربات‌ها در نظر گرفته شود که در اکانت واقعی نباشد.
  • امکاناتی نیز از اکانت ربات‌ها کم شود که در اکانت واقعی باشد.

BothFather

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

تلگرام برای ساخت اکانت ربات‌ها، خودش اکانت رباتی را ایجاد کرده و امکان ساخت ربات‌ها را از طریق این اکانت برای کاربران فراهم نموده است!
در حال حاظر هر کاربر می‌تواند 20 اکانت ربات با هر اکانت واقعی بسازد. وظیفه‌ی بات فادر علاوه بر ساخت ربات، تنظیم کردن یک سری تنظیمات ابتدایی برای ربات نیز می‌باشد. دقت داشته باشید که بات‌فادر فقط یک اکانت ربات ایجاد می‌کند و انتظار این را نداشته باشید که بات فادر برای شما منطق رباتتان را نیز برنامه نویسی کند! برای مثال می‌توانید از طریق بات فادر، دسترسی اد کردن ربات به گروه را فعال و غیرفعال کنید!

یک نکته‌ی مهم که وجود دارد این است که ربات‌ها به صورت پیش فرض در گروه تنها پیام‌هایی که به ربات ریپلای می‌شوند و پیام هایی که دستور (Commond) می‌باشند را دریافت می‌کند (یا به عبارتی می‌بیند) و سایر پیام‌ها از دید ربات هستند! برای این که ربات بتواند هر پیامی در گروه را مشاهده کند، باید از طریق بات‌فادر این دسترسی را برای ربات فعال کنیم که به صورت پیش فرض غیر فعال می‌باشد.

در کل در “مقدمه ساخت ربات تلگرام” همین که بدانیم بات فادر فقط برای ساخت اکانت ربات و تنظیم کردن یک سری موارد پایه‌ای به کار می‌رود، کافیست.

توکن (Token)
بعد از این‌که مشخصات را برای ایجاد اکانت به بات فادر تحویل می‌دهیم، بات فادر پس از ایجاد اکانت، یک عبارتی به نام Token به ما می می‌دهد…! در واقع Token یک کلید API می‌باشد که از طریق آن می توانیم برای همین اکانتی که ساخته‌ایم، از API ربات‌ها استفاده کنیم و برای رباتمان برنامه نویسی کنیم.
و بدیهی است که بدون در اختیار داشتن این کلید، ما نمی‌توانیم به رباتمان دسترسی داشته باشیم.

Webhook Vs GetUpdates

برای دریافت محتو یا آپدیت‌ها توسط اکانت رباتمان، تلگرام دو راه در اختیار ما قرار داده است.

آپدیت چیست؟
در تلگرام زمانی که برای ربات ما اتفاقی رخ می‌دهد، برای مثال: وقتی کاربری وارد پی وی ربات شده، آن را استارت می‌کند و سپس پیامی به ربات ارسال می‌کند، یا ربات در گروهی حضور دارد و پیام‌هایی در گروه ارسال می‌شوند، یا کسی وارد گروه شده و کسی خارج میشود، تلگرام تمامی این اتفاقات را در قالب آبجکت update و در فرمت json و به همراه اطلاعاتی دیگر در اختیار برنامه نویس قرار می‌دهد.

حال برنامه نویس چگونه به آپدیت‌ها دسترسی داشته باشد؟!

روش Webhook در برنامه نویسی ربات تلگرام

روش اول و اصلی‌ترین روش برای دریافت آپدیت‌ها، استفاده از وب هوک می‌باشد.
به این صورت که برنامه نویس در ابتدا یک فضای میزبانی وب (هاست) که دارای گواهی SSL نیز می‌باشد تهیه کرده و سپس فایلی در مسیری از هاست خود ایجاد می‌کند که می‌تواند فایل PHP و Python و … باشد (برنامه نویس با توجه به امکانات هاست و توانایی خود، زبان مورد نظرش را انتخاب می‌کند)
بعد از این‌که برنامه نویس فایل مورد نظر را ایجاد کرد، در داخل آن اطلاعاتی که به فایل ارسال می‌شوند را گرفته و یقین دارد که این اطلاعات از سمت تلگرام هستند!  اما سوال این جاست که این اطلاعات چگونه به این فایل ارسال می‌شوند…؟!

تلگرام بدین منظور، مسیر فایل را از ما گرفته و زمانی که برای ربات آپدیتی ایجاد می‌شود، اطلاعات را برای فایلمان ارسال می‌کند و ما باید آن‌ها را دریافت کرده  و پردازششان کنیم و عکس العملی را نشان دهیم. برای مثال، اگر آن آپدیت مربوط به یک پیام متنی در پی وی و با محتوای “سلام” باشد؛ ما هم یک پیام متنی با محتوای “سلام علیکم” در آن پی وی ارسال می‌کنیم.

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

روش GetUpdates در برنامه نویسی ربات تلگرام

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

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

جمع بندی

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

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

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

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

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

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

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

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

پاسخ دهید

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

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