تـبلیغـــاتــــ

فرادرس

اسکریپت و API تله بات

تله بات > نرم افزارهای فول کده
نوشته شده توسط هادی اکبرزاده

API تا چند روز آینده به طور کامل تکمیل خواهد شد

قبل از شروع بهتره است بدانیم اصلا API چیست؟ به طور خلاصه API مخفف عبارت Application Programming Interface و به معنی رابط برنامه نویس اپلیکیشن هست.
API به راحتی این امکان را در اختیار یک برنامه نویس قرار می‌دهد تا به‌ برخی یا تمامی قابلیت‌های یک نرم‌افزار دیگر دسترسی پیدا کند. اطلاعات بیشتر در این لینک. (به زودی)

شما در تله بات قادر هستید تا اسکریپت خودتان را بنویسید. شما می توانید اسکریپت را در قسمت های مختلفی بنویسید، “مرکزی” و “پلاگین” و “تکه ای”! زبانی هم که استفاده خواهد شد، جاوا اسکریپت می باشد. توجه کنید که ما در این مقاله ها، جاوا اسکریپت را آموزش نخواهیم داد، بلکه به معرفی API تله بات و روش استفاده از آن خواهیم پرداخت.

در کدی که خواهید نوشت، علاوه بر استفاده از دستورات جاوا اسکریپت، می توانید از API تله بات و پکیج های اندروید و کتابحانه های قرار گرفته در داخل تله بات نیز استفاده کنید. شما به پکیج های اندروید نیز دسترسی خواهید داشت! اما چگونه؟
? نکته: قبل از شروع به مطالعه ی این قسمت، حتما وارد صفحه تله بات شوید و توضیحات قبلی را که لیست شده اند مطالعه نمایید. سپس به این صفحه بازگردید.


? نوشتن اسکریپت از کجا شروع می شود؟

فعلا سه محل برای نوشتن اسکریپت در تله بات وجود دارد،
1- مرکزی
2- پلاگین
3- تکه ای
در چرخه حیات روند اجرای همگی نشان داده شده است.


✋ اسکریپت مرکزی یا هسته:

در قسمت منوی سمت راست، گزینه ای به نام اسکریپت وجود دارد که شما را به بخش ادیتور اسکریپت مرکزی یا اسکریپت هسته تله بات هدایت می کند، و برای این که کد نوشته شده کار کند بایستی “گزینه اسکریپت” در انتهای منوی اصلی فعال باشد.
? نکته: به صورت پیش فرض، اسکریپتی در محیط اسکریپت نویسی نرم افزار تله بات قرار داده شده است، که همان کار خود تله بات را انجام می دهد و شما می توانید هر بلایی دوست دارید سر این کد بیاورید ولی مواظب باشید چون یک اشتباه در کد برابر با اجرا نشدن کد می باشد. ?
شاید کد را باز کرده و بپرسید همین؟? این چند خطی بیش تر نیس! ولی نه صبر کنید چون در تله بات متدهایی به نام do وجود دارند که قسمت های مختلف تله بات را اجرا می کنند.
? نکته: کد نوشته شده در این قسمت ممکن است در آپدیت های بعدی فرق کند، که می توانید آخرین کد را از این پست و به همراه توضیح مختصری ببینید.
? نکته: در صورت وجود خطا در اسکریپت، چرخه حیات همان جا متوقف می شود و اگر پیامی از تنظیمات گزینه اسکریپت منوی اصلی تنظیم شده باشد، آن پیام به کاربر فرستاده می شود.


? اسکریپت پلاگین:

فایل های js که در مسیر FullKade/TeleBot/Plugins قرار می گیرند و در بخش پلاگین نرم افزار ظاهر می شوند و بایستی پس از قرار دادن فایل در این مسیر، به تله بات بازگشته و پلاگین مورد نظر را فعال نمایید و اولویت اجرایی آن را نیز مشخص کنید. همچنین در صورتی که فایل پلاگین را از مسیر مورد نظر حذف کنید، از داخل اپلیکیشن حذف نخواهد شد، ولی اگر از داخل اپلیکیشن حذف نمایید، از داخل پوشه نیز حذف خواهد شد.
در حال حاظر هر پلاگین شامل یک فایل JS اصلی می باشد. و ممکن است.
? نکته:
در صورت وجود خطا در هر پلاگین، چرخه حیات در همان جا متوقف می شود و اگر پیامی از طریق منوی اصلی و آپشن پلاگین های خارجی تله بات تنظیم شده باشد، آن پیام به کاربر نشان داده می شود و اگر پلاگینی فعال شده باشد، آن پلاگین برای چت مورد نظر غیر فعال خواهد شد. (درمورد پلاگین فعال توضیح خواهیم داد)
? نکته: به صورت پیش فرض چند اسکریپ خارجی، در پوشه پلاگین ها کپی می شوند که می توانید از روی آن ها نوشتن پلاگین را یاد بگیرید و همچنین سایر پلاگین های نوشته شده نیز در این آدرس قرار داده خواهند شد.


? اسکریپت های تکه ای:

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


? تابع main در اسکریپت ها:

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

◀️ برای نوشتن اسکریپت مرکزی در تله بات، در محیط اسکریپت نویسی باید تابعی به نام main به صورت زیر تعریف شده باشد.

یعنی فایل اسکریپت مرکزی، دارای یک تابع main بدون ورودی می باشد، در واقع تابع main نقطه شروع اسکریپت مرکزی می باشد.

◀️ برای نوشتن اسکریپت پلاگین در تله بات، تابع main را به صورت زیر باید تعریف کنید.

ما دو ورودی pluginName و  activePlugin را  در این جا داریم که هردو را بعدا توضیح خواهیم داد.

◀️ برای نوشتن اسکریپت تکه ای نیز همانند اسکریپت مرکزی تابع main را پیاده سازی می کنیم.

مقدارهای بازگشتی توابع main هر اسکریپت

اسکریپت مرکزی:

اسکریپت مرکزی که با توجه به چرخه حیات تله بات در صورت فعال بودن در ابتدا اجرا خواهد شد دو مقدار 0 و 1 را در قالب رشته خارج می کند:
⬅️ اگر مقدار 0 از تابع main برگرندانده شود –> چرخه حیات پس از اجرای اسکریپت متوقف خواهد شد.
⬅️ اگر مقدار 1 برگردانده شود –> چرخه حیات پس از اجرای اسکریپت، به مسیر خود ادامه خواهد داد.

اسکریپت پلاگین:

در پلاگین ها نیز مقداری از تابع main بازگردانده می شود، که یکی از سه مقدار 0و 1و 2و 3 در قالب رشته خارج می می کند:
⬅️ اگر مقدار 0 از تابع main برگرندانده شود –> چرخه حیات پس از اجرای اسکریپت پلاگین متوقف خواهد شد.
⬅️ اگر مقدار 1 از تابع main برگرندانده شود –> چرخه حیات پس از اجرای اسکریپت پلاگین، به مسیر خود ادامه خواهد داد و بقیه پلاگین هایی که در نوبت هستند اجرا خواهند شد.
⬅️ اگر مقدار 2 از تابع main برگرندانده شود –>چرخه حیات پس از اجرای اسکریپت پلاگین، به مسیر خود ادامه خواهد داد.
با این تفاوت که بقیه پلاگین های خارجی دیگر اجرا نخواهند شد. ولی پلاگین های داخلی اجرا خواهند شد.
⬅️ اگر مقدار 3 از تابع main برگرندانده شود –> چرخه حیات پس از اجرای اسکریپت پلاگین، به مسیر خود ادامه خواهد داد.
با این تفاوت که دیگر پلاگینی اجرا نخواهند شد، چه داخلی و چه خارجی!

اسکریپت تکه ای:

در  اسکریپت های تکه ای فعلا به خروجی تابع  main اهمیتی داده نشده است ولی به صورت پیش فرض مقدار “0” را از آن خارج کنید.


?اسکریپت تله بات همانند یک صفحه PHP عمل می کند

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


?نحوه دسترسی به پکیج های اندروید و کتابخانه API تلگرام

همانطور که اشاره کردیم شما می توانید به تمامی پکیج های اندروید دسترسی داشته باشید و همچنین به پکیج های API تله بات.

نحوه ایمپورت کردن یک پکیج:

برای import کردن یک پکیج کد زیر را در بالا ترین قسمت کدنویسی و بالای تابع main، می نویسیم:

 برای مثال میخواهیم پکیج android.content را ایمپورت نماییم پس می نویسیم:

? نکته: برای ایمپورت کردن کتابخانه های داخل خود تله بات بایستی در ابتدای پکیج، پیشوند Packages را بنویسید.
برای مثال میخواهیم پکیج com.fullkade.core را ایمپورت کنیم، پس می نویسیم:

نحوه ایمپورت کردن یک کلاس:

تنها تفاوت بین ایمپورت کردن یک کلاس با ایمپورت کردن یک پکیج این است که برای ایمپورت کلاس از importClass استفاده می کنیم.
برای مثال میخواهیم کلاس SendMessage را ایمپورت کنیم که البته داخل API تله باتهست و باید  Packages رو هم بنویسیم.

? نکته: ما دسترسی هایی را که به نظر لازم می رسند به تله بات داده ایم و چنانچه دسترسی خاصی (منظور دسترسی های اندرویدی می باشد) وجود ندارد به ما اطلاع دهید تا اضافه شوند.

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


? چه کتابخانه هایی در خود نرم افزار وجود دارند؟

1– کتابخانه API تله بات


?امکانات ادیتور اسکریپت مرکزی

در ورژن بتا یا آزمایشی، بخش اسکریپت نویسی بدون رنگ و لعاب بود، یا بهتر بگیم، Syntax highliting نداشت و این باعث خسته شدن می شد.
ولی در این ورژن، این قابلیت اضافه شده، اما همچنان کمبود های زیادی را داریم که رفته رفته همه آن ها را حل خواهیم کرد.

10- Script

خب همانطور که مشاهده می کنید در این قسمت ما در حال حاظر 4 آیکون داریم.
⬅️ آیکون اول: دخیره کد
⬅️ آیکون دوم: لود کردن آخرین کد ذخیره شده
⬅️ آیکون سوم: کپی کل کد
⬅️ آیکون چهارم: چسباندن متن کپی شده در ادیتور
⬅️ آیکون پنجم: تغییر تم (تم پیش فرض twilight می باشد)
⬅️ آیکون ششم: شما رو به همین قسمت هدایت می کنه.

? نکته: پس از یک بار ذخیره کردن اسکریپت، اسکریپت با نام main.js در مسیر FullKade/TeleBot قرار می گیرد.


?ادیتورهای دیگر

می توانید از ویرایش گرهای دیگری هم استفاده کنید و فایل main.js و فایل های پلاگین هارا ویرایش کنید. برای مثال ویرایش گر Droid Edit یکی از بهترین ویرایش گرها به حساب می آید.


?روند پلاگین نویسی در تله بات

در حال حاظر دو تابع اصلی در پلاگین ها در نظر گرفته شده است که به ترتیب main و onActive نام دارند. تابع main مهم است ولی تابع onActive می تواند نباشد.
چند پلاگین در مسیر FullKade/TeleBot/Plugins کپی شده اند و در صورتی که پالگین جدیدی توسعه دهیم در این آدرس قرار خواهیم داد.
قبل از هرچیز بخش پلاگین ها را در توضیحات محیط تله بات مطالعه کنید.

به طور پیش فرض هر پلاگین جدید در پوشه پلاگین ها قرار بگیرد، غیرفعال است و باید از قسمت پلاگین های خارجی تله بات فعال شود. حال تله بات زمانی که پیامی دریافت می کند در لحظه اجرای پلاگین های خارجی بررسی می کند که آیا پلاگینی active شده است یا نه و اگر active نشده بود، یکی یگی همه پلاگین ها را اجرا می کند… که روند اجرا به اولویت اجرایی بستگی دارد که از قسمت پلاگین ها تایین می شود و اگر دو پلاگین یا چند پلاگین اولویت اجرایی یکسانی داشته باشند، بر اساس نام این تصمیم گیری صورت می گیرد که کدام پلاگین اول اجرا شود.
حال هر پلاگین تابع main اش به ترتیب اجرا می شود و براساس تصمیمی که تابع main هر پلاگین می گیرد ممکن است چرخه حیات متوقف شده یا اتفاقات دیگری بیفتد.
زمانی می رسد که یک پلاگین بخواهد Active شود و تابع onActive خود را اجرا کند.
به طور پیش فرض برای هر چتی هیچ پلاگینی Active نیست و برای مثال اگر پلاگینی برای یک چت Active شود، در پیام بعدی که از آن چت دریافت می شود، تنها تابع onActive پلاگین فعال اجرا می شود و در اجراهای بعدی هم همینطور و تابع onActive هم خروجی رشته ای را همانند تابع main بر می گرداند که همان مقدار ها هستند ولی معمولا ما دوست داریم که تابع onActive پایان چرخه حیات باشه.
پس برای مثال وقتی پلاگین “پیشگویی همسر آینده” فعال می شود، تابع onActive آن هربار اجرا می شود و بقیه پلاگین ها اجرا نمی شوند.

❓ سوال: پس اگر ما بخواهیم تایین کنیم که یک پلاگین همیشه اجرا شود چه باید کنیم؟
جواب: می توانیم در اسکریپت مرکزی این کار را انجام دهیم ولی برای راحتی شما قسمت Force Script در آپدیت بعدی قرار خواهد گرفت …

پس بدین ترتیب، چنانچه هیچ پلاگین فعالی برای یک چت در نظر گرفته نشده باشد، توابع main پلاگین ها به ترتیب اولویتشان، اجرا می شوند و این خروجی تابع main خواهد بود که ادامه چرخه حیات را تعیین خواهد کرد و یا شاید تایع main پلاگینی را فعال کند. با روند فعال کردن onActive هم آشنا خواهیم شد.

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

✋ ورودی تابع main اسکریپت پلاگین ها را توضیح می دهیم.
⬅️ورودی pluginName: نام همین پلاگینی که اجرا می شود را شامل می شود، که در پوشه Plugins قرار دارد، البته نام بدون پسوند .js می باشد.
⬅️ورودی activePlugin: نام پلاگین فعال را شامل می شود، اگر نام برابر (.) یا نقطه باشد، یعنی پلاگینی فعال نیست.

✋ورودی تابع onActive اسکریپت پلاگین ها را توضیح می دهیم.
⬅️ورودی pluginName: نام همین پلاگینی که اجرا می شود را شامل می شود، که در پوشه Plugins قرار دارد، البته نام بدون پسوند .js می باشد.

? نکته: وقتی با API تله بات میخواهیم پلاگینی را برای یک چت فعال کنیم که onActive آن اجرا شود، بایستی نام پلاگین را با استفاده از متدی که بعدا معرفی می کنیم برای چت مورد نظر تنظیم کنیم تا در اجرای بعدی آن را به عنوان پلاگین فعال بشناسد.


?نکته: حتما api تلگرام برای ربات ها مطالعه شود، زیرا api تله بات فرق زیادی با آن ندارد.

لیست آبجکت های API تله بات

این آبجکت ها در همه محیط های اسکریپت نویسی تله بات وجود دارند.

آبجکت update

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

آبجکت va

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

لیست آموزش های مهم دیگر

استفاده از کتابخانه api تله بات

کتابخانه ای که با استفاده از آن به امکانات تله بات دسترسی خواهید داشت، در واقع این کتابخانه هسته تله بات را شامل می شود.

مثال های اسکریپتی (به زودی)

نمیونه هایی از کدهای ساده ای که قرار خواهیم داد.

پلاگین های نوشته شده برای تله بات (به زودی)

اگر پلاگین جدیدی برای تله بات نوشته شود، در این قسمت قرار خواهد گرفت.


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

6+
کانال تلگرام فول کده

تـبلیغـــاتــــ

فرادرس

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

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

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

زکات علم، یاد دادن است. امام علی (ع)

نظر بدهید


نظرات ثبت شده

  • چرا رباط فقط زمانی در گروه پیام میدهد ک ریپلای شده باشد؟ من میخواهم وقتی فایل ارسال شد (توی گپ)رباط بدون ریپلای شدن توضیح دهد ولی اگر شخص ارسال کنند ریپلای نکند و یا پیام ارسالی فوروارد باشید رباط پاسخ نمیدهد
    ممنون میشم اگه راهنمایی کنید

    0
  • هادی اکبرزاده گفته : گفت:

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

    لطفا دستور Privacy بات فادر رو Disable کنید.

    موفق و پیروز و منتظر آپدیت دوم باشید.

    0

  • داداش من اومدم این برنامه رو خریدم بعدش اومدم ببینم تو گروه کار می کنه یا دیدم همش داره تبلیغ سایتو می کنه یعنی که چه هم پولو بدیم هم اینکه شما راحت تبلیغات کنید

    0
  • هادی اکبرزاده گفته : گفت:

    سلام
    دوست عزیز
    1- تبلیغاتی وجود نداره گزینه امضا از منوی اصلی برای گزاشتن یک پیام به انتهای جواب های رباته که پیش فرض ادرس سایت و کانال توشه
    2- اگر اموزش رو بخونید در اموزش بات فادر گفتیم که ربات به صورت پیش فرض به همه پیام های گروه دسترسی نداره و باید فعال بشه

    0