معرفی پلاگین ها 00:10

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

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

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

نحوه استفاده و ساختار پلاگین ها 02:25

پلاگین‌ها امکانات پیشرفته و وسیعی در اختیار ما می‌گذارند که با آن‌ها آشنا خواهیم شد و ساختارشان را بیشتر خواهیم شناخت. نخستین نکته این است که ساختار پلاگین‌ها در صهبات شبیه ساختار HTML و به‌شکل برچسب است. کسانی که با HTML و XML و زبان‌های مشابه آشنا هستند می‌دانند که هر برچسب نام مشخصی دارد که در ابتدا و انتهای آن استفاده می‌شود. همان‌طور که مشاهده می‌شود، پلاگین msg که اطلاعات پیام را استخراج می‌کند، یک‌بار در ابتدا و یک‌بار در انتها از نام msg استفاده کرده است. پلاگین author، dbentry و همهٔ پلاگین‌های دیگر نیز به همین شکل تعریف می‌شوند. بنابراین هر پلاگین نام مشخصی دارد که در برچسب شروع و پایان باید از آن استفاده شود.

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

نکته‌ای که در همهٔ این پلاگین‌ها وجود دارد این است که می‌توانید داخل یک برچسب پلاگین چند ویژگی را هم‌زمان استفاده کنید، به شرط آن‌که از آکولاد استفاده کنید. برای مثال اگر بخواهیم هم title و هم username یک کاربر را در خروجی اضافه کنیم می‌توانیم به این شکل بنویسیم.

نکتهٔ بعدی که دربارهٔ پلاگین‌ها و برچسب‌ها بسیار مهم است این است که راست‌به‌چپ بودن متن‌ها شما را به اشتباه نیندازد. برای مثال اگر به فرآیند بازگردید می‌بینید که در حالت راست‌به‌چپ محل نویسه‌ها و اسلش به هم می‌ریزد. برای جلوگیری از این اشتباه می‌توانید متن را چپ‌به‌راست کنید؛ یعنی از کنترل‌شیفت (Ctrl+Shift) استفاده کنید تا متن از چپ به راست نمایش داده شود. در این حالت برچسب‌ها درست‌تر نمایش داده می‌شوند و ویرایش آن‌ها آسان‌تر می‌شود. البته هنگام تایپ می‌توانید به این موضوع توجهی نکنید و برچسب‌های مورد نظر را بنویسید؛ مشکلی در نتیجه به وجود نمی‌آید. حتی اگر در حالت راست‌به‌چپ و با همان ترتیب درنظرگرفته‌شده بنویسید، عملکرد ربات دچار مشکل نمی‌شود.

پلاگین اطلاعات حساب کاربری 05:38

همهٔ پلاگین‌ها و برچسب‌هایی که نیاز دارند و مقدارهایی که می‌توانند بازگردانند به‌شکل جدول در مستندات آمده است. برای مثال در برچسب peer می‌توانستیم به‌جای نام کاربر، نام کاربری او را بازگردانیم. یک‌بار آزمایش می‌کنیم: داخل peer از username استفاده می‌کنیم و دوباره پیام شروع را ارسال می‌کنیم. مشاهده می‌شود که نام کاربری به‌جای نام فرد اضافه شد. برای قابل کلیک بودن می‌توان پیش از آن از @ استفاده کرد.

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

نخستین پلاگینی که با آن آشنا شدیم پلاگین peer است که می‌تواند نام کاربر، نام کاربری و شناسه‌ای که در پیام‌رسان دارد را بازگرداند. sys_id در واقع شناسه‌ای است که صهبات به کاربر اختصاص داده است. اگر وارد منوی کاربران شویم، شناسه همان sys_id است، شناسه در پیام‌رسان همان id، عنوان همان title و نام کاربری همان username است. می‌توان این مقادیر را با پلاگین peer به پیام افزود.

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

پلاگین تاریخ و زمان 07:54

برای پلاگین تاریخ و زمان یا برچسب date، اگر هر چیزی داخل برچسب اضافه کنیم با همان قالب تاریخ را نمایش می‌دهد و این مقادیر را با تاریخ مورد نظر جایگذاری می‌کند. برای مثال در همین نمونه سال را با Y بزرگ می‌نویسیم تا چهار رقمی باشد، با M بزرگ می‌نویسیم تا نام ماه بیاید، و d را می‌نویسیم تا روز بیاید و ذخیره می‌کنیم. اگر بخواهیم ترتیب را عوض کنیم (برای مثال ۱۴ شهریور ۱۴۰۴) می‌توانیم ترتیب متفاوتی بنویسیم؛ ابتدا روز، سپس ماه و سپس سال.

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

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

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

آخرین برچسب این پلاگین modify است. برای مثال می‌خواهیم هر تاریخی که قرار است نمایش داده شود دو هفته به آن اضافه شود. بنابراین ۲۷ تیر را می‌گیرد، ۱۴ روز به آن می‌افزاید و نمایش می‌دهد. دوباره آزمایش می‌کنیم؛ ۱۴ روز به تاریخ ۲۷ تیر اضافه شد. مثال‌های بیشتری از این پلاگین در مستندات آمده است.

پلاگین پیام کاربر 11:53

یکی از پلاگین‌های بسیار مهم ربات‌ساز پیشرفته صهبات، پلاگین پیام کاربر است. این پلاگین با برچسب msg ساخته می‌شود و می‌توانید اطلاعات پیامی را که از کاربر دریافت کرده‌اید در پیام ارسالی به کاربر استفاده کنید. برای مثال اگر بخواهید text (متن دریافتی از کاربر) را دوباره در پیام ارسالی استفاده کنید، می‌توانید از ویژگی text استفاده کنید. نمونه را با همین ویژگی آغاز می‌کنیم، پیام را ذخیره و آزمایش می‌کنیم. مشاهده می‌شود پیامی که فرستادیم دوباره در پیام ارسالی ربات تکرار شد. هر متن دیگری نیز که ارسال شود عیناً در پیام ارسالی استفاده می‌شود.

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

برای مثال فرض کنید فایلی ارسال شده و می‌خواهید token آن را بدانید. می‌توانید از ویژگی file_token استفاده کنید. دوباره ذخیره و آزمایش می‌کنیم. چون فایلی ارسال نشده توکن فایل نمایش داده نمی‌شود. بنابراین فایلی ارسال می‌کنیم تا ببینیم توکن آن نمایش داده می‌شود یا خیر. مشاهده می‌شود که توکن فایل نمایش داده می‌شود. اگر به منوی فایل‌ها بازگردیم دقیقاً همان توکن وجود دارد.

به همین صورت می‌توانید بقیهٔ ویژگی‌های این پلاگین را نیز استفاده کنید. برای مثال ارتفاع و عرض تصویر: file_width و file_height را با یک حرف x میان آن‌ها می‌نویسیم. دوباره فایل را ارسال می‌کنیم؛ ابعاد تصویر نمایش داده می‌شود.

کاربرد ویژگی‌ها

ممکن است بپرسید این ویژگی‌ها چه کاربردی دارند؛ این‌که توکن فایل دوباره در پیام استفاده شود، پیام ارسالی کاربر تکرار شود، ابعاد تصویر نشان داده شود یا ویژگی‌های دیگر، در کجا به‌کار می‌رود؟

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

بقیهٔ بخش‌ها نیز به همین صورت است:

  • file_size: حجم فایل را بر حسب بایت نشان می‌دهد.
  • file_duration: برای ویدیو و صوت، مدت صوت یا ویدیو را نشان می‌دهد.
  • location / contact: اطلاعات مربوط به موقعیت مکانی و مخاطب.

پلاگین اطلاعات ثبت شده توسط کاربر 17:57

معرفی پلاگین dbentry و ایجاد فرم ساده

پلاگین بعدی پلاگین dbentry یا dbentries است. کاری که این پلاگین انجام می‌دهد دریافت و نمایش اطلاعاتی است که در پایگاه داده ثبت شده است. با پایگاه داده و فرآیند فرم در آینده آشنا خواهیم شد، اما اکنون برای مشاهدهٔ عملکرد dbentries یک فرآیند فرم بسیار ساده ایجاد می‌کنیم.

برای مثال تعیین می‌کنیم که ابتدا نام کاربر پرسیده شود و در فیلد name ذخیره شود، سپس شمارهٔ موبایل پرسیده شود و در فیلد mobile ذخیره شود. با توجه به این‌که دستور reg را برای این کار تعیین کرده‌ایم یک‌بار این روند را طی می‌کنیم تا اطلاعات ذخیره شود. بررسی می‌کنیم که اطلاعات در پایگاه‌های داده ذخیره شده باشد. برای نمایش بهتر ستون‌ها تنظیمات را روی فرم قرار می‌دهیم.

فراخوانی اطلاعات ثبت‌شده در پیام‌های ربات

مشاهده می‌شود که فیلد name مقدار ادمین ربات را نشان می‌دهد و فیلد mobile نیز مقداری است که برای موبایل وارد کردیم. اکنون می‌خواهیم در پیامی که ربات به کاربر ارسال می‌کند از این اطلاعات استفاده کنیم. برای این کار باید از پلاگین dbentry استفاده کنیم. دوباره به فرآیندی که برای آزمایش ساخته بودیم بازمی‌گردیم. فعلاً پلاگین‌های دیگر را از متن حذف می‌کنیم.

فرض کنید می‌خواهیم نامی را که از کاربر دریافت کرده‌ایم اینجا وارد کنیم. از پلاگین dbentry استفاده می‌کنیم. نام پایگاه داده registered بود و نام فیلدی که می‌خواهیم نمایش داده شود name است. بنابراین در پایگاه دادهٔ registered فیلد name را که از کاربر دریافت کرده‌ایم نمایش می‌دهیم. ذخیره می‌کنیم و عملکرد را می‌بینیم.

نامی که وارد کرده بودیم از این پس در پیامی که برای شروع تعیین شده بود استفاده می‌شود. اگر بخواهیم شمارهٔ موبایل نیز نمایش داده شود، متن را با کنترل‌شیفت چپ‌چین می‌کنیم و شمارهٔ موبایل را پایین‌تر اضافه می‌کنیم. به‌جای فیلد name، فیلد mobile را نمایش می‌دهیم. دوباره آزمایش می‌کنیم؛ شمارهٔ موبایل عیناً استفاده شد. بنابراین با برچسب dbentry می‌توان یک رکورد را که کاربر قبلاً وارد کرده دریافت کرد و اطلاعات آن را در پیام‌ها به‌کار برد.

روش‌های ساده‌نویسی و تنظیمات برچسب dbentry

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

برچسب dbentry را یک‌بار در ابتدا و یک‌بار در انتها استفاده می‌کنیم و دیگر نیازی به تکرار موارد نیست. یعنی برچسب dbentry باز شده، در انتها بسته شده، میان آن فیلدها به این شکل اضافه می‌شوند و پایگاه داده نیز در ابتدا تعیین شده تا از پایگاه دادهٔ registered اطلاعات دریافت شود. دوباره ذخیره می‌کنیم تا از صحت عملکرد مطمئن شویم.

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

فیلتر کردن خروجی با برچسب‌های peer، eid و notfound

با برچسب peer می‌توانید تعیین کنید اطلاعات کدام کاربر از پایگاه داده دریافت شود. برای مثال اگر این برچسب را اضافه کنید می‌توانید all بنویسید. اگر all نوشته شود، اطلاعات میان همهٔ کاربران جستجو می‌شود و آخرین رکورد مربوط به همهٔ کاربران پیدا می‌شود؛ یعنی ممکن است بخواهیم آخرین رکوردی که در کل پایگاه داده ذخیره شده پیدا شود و مهم نباشد که آن رکورد مربوط به کاربری باشد که اکنون با ربات کار می‌کند یا کاربران دیگر آن را ثبت کرده باشند. اگر به‌جای all کلمهٔ self وارد شود تفاوتی با حالت قبلی ندارد؛ می‌توان این برچسب را کاملاً حذف کرد زیرا حالت پیش‌فرض همین self است. منظور از self این است که برای هر کاربری که اکنون از ربات استفاده می‌کند، آخرین رکورد مربوط به همان کاربر از پایگاه داده دریافت و نمایش داده شود.

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

برچسب eid برای زمانی است که دقیقاً می‌دانیم کدام رکورد را می‌خواهیم نمایش دهیم؛ یعنی در پایگاه داده و در بخش رکوردها شناسهٔ رکورد مورد نظر را می‌دانیم. با eid مشخص می‌کنیم کدام رکورد مد نظر است. در این صورت دقیقاً name و mobile واردشده در آن رکورد در پیام ارسالی به کاربر استفاده خواهد شد.

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

استفاده از dbentry در فرم‌ها و متغیرهای سیستمی

آخرین نکته دربارهٔ برچسب dbentry این است که می‌توانید برچسب db را در فرآیند فرم وارد نکنید. اگر داخل فرآیند فرم پیامی ارسال می‌کنید و اطلاعات ارسالی مربوط به پایگاه دادهٔ همان فرم است، نیازی به افزودن این برچسب نیست. برای مثال همین مورد را کپی می‌کنیم و در فرمی که ساخته بودیم استفاده می‌کنیم. هم برچسب eid (که اغلب نیازی به آن نیست) و هم برچسب db را می‌توان حذف کرد. علت حذف db این است که پایگاه داده‌ای که اینجا استفاده کردیم دقیقاً همان پایگاه داده‌ای است که می‌خواهیم از آن استفاده شود؛ یعنی نام کاربر اینجا گرفته شده و می‌خواهیم در پیام بعدی استفاده شود.

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

آخرین نکته دربارهٔ dbentry این است که می‌توانیم به‌جای فیلدها، ویژگی‌های سیستمی یک رکورد مانند id را فراخوانی کنیم. این ویژگی‌ها در همین جدول قابل مشاهده است. به‌جای نوشتن نام فیلد می‌توانید $id وارد کنید؛ در این صورت شناسهٔ رکورد به کاربر نمایش داده می‌شود و حتی می‌توان از آن برای کد رهگیری استفاده کرد، زیرا در کل سامانه یکتا است. همچنین می‌توانید شناسهٔ سیستمی کاربری که این رکورد را ایجاد کرده، تاریخ ایجاد رکورد، یا پایان ویرایش رکورد را فراخوانی کنید. مقدار duration فاصلهٔ میان این دو ویژگی را بازمی‌گرداند؛ یعنی فاصلهٔ میان شروع و پایان ویرایش رکورد. توجه داشته باشید که در جستجوها نیز می‌توان از این موارد استفاده کرد و همچنین در ایجاد ترتیب که در dbentries با آن آشنا خواهیم شد. کار با برچسب dbentry در اینجا به پایان می‌رسد.

معرفی پلاگین dbentries برای فراخوانی چند رکورد

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

عملکرد dbentries در واقع همان عملکرد dbentry است، با این تفاوت که در dbentries می‌توان اطلاعات را فیلتر کرد، جستجو انجام داد، ترتیب را تغییر داد و به‌صورت مدیریت‌شده از میان اطلاعات، رکوردهای لازم را استخراج و نمایش داد.

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

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

بررسی عملی dbentries و متغیرهای شمارشی

برای آشنایی بیشتر با عملکرد این برچسب، از همین مثال استفاده می‌کنیم. از همین نمونه کپی می‌گیریم و پایگاه داده را به registered تغییر می‌دهیم. فیلد name را نیز که در پایگاه داده داریم می‌نویسیم. دقیقاً مانند dbentry برای dbentries نیز دو امکان با علامت $ وجود دارد: یکی تعداد و دیگری شمارهٔ ردیف که باید داخل برچسب entry وارد شود.

ذخیره می‌کنیم و خروجی را بررسی می‌کنیم. دو رکوردی که وارد کرده بودیم نمایش داده شد. ۱ و ۲ در واقع مقادیر مربوط به $row هستند و $count نیز مشاهده می‌شود.

تنظیمات جستجو و مرتب‌سازی: برچسب‌های limit، offset و order

اگر limit استفاده کرده باشیم یعنی خروجی را به تعداد خاصی محدود کرده باشیم (برای مثال عدد ۳)، حتی با این محدودیت، ویژگی count تعداد کامل را که بدون این محدودیت می‌توانستیم نمایش دهیم نشان می‌دهد. یعنی اگر ۱۰ کاربر ثبت‌نام کرده بودند و ۳ مورد نمایش داده می‌شد، در این قسمت عدد ۱۰ نمایش داده می‌شد.

در این مثال نحوهٔ عملکرد dbentries، برچسب entry و برچسب limit مشخص شد. ضمناً داخل limit می‌توان آفست (offset) را نیز تعیین کرد. منظور از آفست این است که پس از یافتن نتایج جستجو، چند رکورد ابتدایی کنار گذاشته شود و پس از آن هر رکوردی هست نمایش داده شود. برای مثال اگر ۱۰ رکورد داریم و آفست ۳ باشد، رکورد چهارم نخستین رکوردی است که به کاربر نمایش داده می‌شود. این حالت معمولاً برای صفحه‌بندی استفاده می‌شود که در مراحل بعدی با حالت‌های پیشرفته‌تر آشنا خواهیم شد.

فعلاً برای آشنایی اجمالی، نحوهٔ افزودن آفست به این صورت است که عدد آفست را پیش از مقدار limit اضافه کنیم. برای مثال در این حالت آفست ۸ است؛ یعنی پس از یافتن رکوردها، هشت مورد اول کنار گذاشته می‌شود و سه مورد بعدی نمایش داده می‌شود.

برچسب order برای زمانی است که بخواهیم ترتیب خروجی را بر اساس فیلد یا مقدار خاصی تعیین کنیم. برای مثال در همین نمونه برچسب order را اضافه می‌کنیم و تعیین می‌کنیم ترتیب بر اساس لحظهٔ ایجاد رکورد، اما به‌صورت معکوس باشد. این عبارت خلاصهٔ descending است، یعنی از بیشتر به کمتر؛ و اگر asc استفاده شود به معنای ascending است، یعنی از کوچک‌تر به بزرگ‌تر. ذخیره می‌کنیم و نتیجه را می‌بینیم. ترتیب معکوس شد: ابتدا ادمین ربات نوشته شده بود و سپس علی؛ اکنون ابتدا علی و سپس ادمین ربات نمایش داده شد. همچنین می‌توانید ترتیب را بر اساس فیلدهای مختلف تعیین کنید؛ برای مثال فیلد name. نیازی نیست حتماً با حروف بزرگ باشد. بنابراین باید ابتدا ادمین ربات نمایش داده شود چون با «الف» آغاز شده و سپس علی که با حرف «عین» آغاز شده است. بررسی می‌کنیم.

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

مدیریت صفحات: برچسب‌های lastrows و nonlastrows

برچسب‌های lastrows و nonlastrows برای زمانی است که بخواهید مقادیری را فقط در صفحهٔ آخر یا در بقیهٔ صفحات نمایش دهید. برای مثال اگر ۲۰۰ خروجی دارید و با آفست و limit کاری کرده‌اید که در هر صفحه فقط ۱۰ مورد دیده شود، طبیعتاً صفحهٔ بیستم آخرین صفحه است. ممکن است بخواهید در این صفحه اطلاعاتی به کاربر نشان دهید؛ برای مثال بگویید رکوردها تمام شد و این آخرین صفحه است. یا ممکن است بر اساس lastrows بخواهید کلید بعدی را از پیام حذف کنید که در این صورت باید با برچسب if ترکیب شود و در آینده با آن آشنا خواهیم شد.

برچسب nonlastrows دقیقاً برعکس عمل می‌کند؛ یعنی جز صفحهٔ آخر (در مثالی که ۲۰۰ رکورد دارید و در هر صفحه ۱۰ رکورد نمایش داده می‌شود)، در ۱۹ صفحهٔ اول هر چیزی داخل این برچسب بنویسید به کاربر نمایش داده می‌شود.

فیلتر کردن اطلاعات: برچسب query و عملگرهای شرطی

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

فرض کنید می‌خواهیم نمراتی که بالاتر از ۱۵ هستند نمایش داده شوند؛ یعنی ۱۷ و ۲۰. بنابراین می‌نویسیم score > 15.

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

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

بقیهٔ اطلاعات نیز نمایش داده شد. اگر بخواهیم معدل‌های کمتر از ۱۵ نیز نمایش داده شود می‌توانیم شرط را معکوس کنیم. کسانی که معدلشان کمتر از ۱۵ است آورده می‌شوند.

عملگرهای دیگری نیز وجود دارد. برای مثال می‌توان بر اساس نام جستجو کرد؛ مانند name = ali یا کسانی که نامشان با «محمد» شروع می‌شود. در این صورت محمد و محمدرضا باید آورده شوند. عملگر مناسب عملگر کلاه است: صفحه‌کلید باید انگلیسی باشد، کلید Shift را نگه دارید و کلیدی که بالای Tab و کنار کلید ۱ است (علامت کلاه) را فشار دهید. می‌خواهیم با «محمد» شروع شود؛ بنابراین محمد را می‌نویسیم و چون ادامه‌اش می‌تواند هر چیزی باشد از علامت درصد استفاده می‌کنیم. هر جا درصد باشد ممکن است هر نویسه، متن یا هیچ‌چیز جایگزین شود. در مثال ما محمد و محمدرضا خروجی این حالت هستند. ذخیره می‌کنیم؛ به‌درستی نمایش داده شد.

اگر بخواهیم همهٔ افرادی که نامشان با حرف «م» شروع می‌شود آورده شوند، به همین صورت می‌نویسیم. مجید نیز نمایش داده می‌شود.

اگر بخواهیم به «د» ختم شود، محمد و مجید باید نمایش داده شوند. برای بررسی ختم شدن، ابتدا درصد و سپس «د» نوشته می‌شود.

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

گاهی به‌جای and به عملگر «یا» نیاز داریم. فرض کنید هم کسانی که با ماشین رفت‌وآمد می‌کنند و هم کسانی که با موتور رفت‌وآمد می‌کنند آورده شوند. در این صورت باید از عملگر or استفاده کنیم که برای نوشتن آن می‌توان Shift و بک‌اسلش را فشار داد. موتور نیز به فهرست اضافه شد.

نکتهٔ بعدی این است که ممکن است بخواهیم از پرانتز نیز در شرط استفاده کنیم؛ یعنی هم موتور یا ماشین بودن بررسی شود و هم نام با «م» شروع شود. در این صورت علیرضا باید از فهرست حذف شود. آخرین نکته این است که در فهرست فعلی معدل‌ها با ترتیب عددی نوشته نشده‌اند: ابتدا ۱۷، سپس ۱۲، سپس ۲۰، سپس ۸؛ بر اساس ترتیب ثبت‌نام مرتب شده‌اند. می‌خواهیم بر اساس خود معدل مرتب شوند. همان‌طور که آموختیم باید برچسب order را اضافه کنیم و بر اساس score مرتب کنیم. بر اساس معدل مرتب شد، اما معدل ۸ پس از بقیه نمایش داده شد. علت این است که معدل‌ها به‌عنوان متن (رشته / string) در نظر گرفته شده‌اند نه عدد. برای در نظر گرفتن آن‌ها به‌عنوان عدد باید از عبارت number استفاده کنیم. این‌بار ترتیب بر اساس حالت عددی شد.

خروجی ساختاریافته: استفاده از برچسب jsonoutput

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

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

اما بسیاری جاها لازم است نام ستون‌ها تغییر کند. برای مثال می‌خواهیم name به title و score به number تبدیل شود. برای این کار می‌توان از امکان Map استفاده کرد. از مستندات کپی می‌کنیم و وارد می‌کنیم. اکنون name، mobile و score را داریم و علاوه بر آن‌ها vehicle نیز بود. بنابراین vehicle نباید در خروجی بعدی باشد زیرا ستون‌ها را فقط به این سه ستون محدود کرده‌ایم. نام name به title و score به number تغییر کند. گزینهٔ دیگر را می‌توان وارد نکرد چون به‌صورت پیش‌فرض false است. ذخیره و آزمایش می‌کنیم. به‌جای name مقدار title، به‌جای score مقدار number نوشته شد و vehicle نوشته نشد. بدین ترتیب با عملکرد Cols و Map آشنا شدیم.

نکتهٔ آخر این است که می‌توان از StrictToMap نیز استفاده کرد. یعنی آنچه در Map استفاده کردیم فقط name و score است. ممکن است بخواهیم فقط همین دو مورد در خروجی باشند و نخواهیم دوباره در Cols تعیین کنیم کدام ستون‌ها در خروجی باشند. بنابراین هم می‌توانستیم در Cols مقدار name و score را تعیین کنیم و هم اگر این گزینه را true کنیم. از آنجا که این موارد دقیقاً با ستون‌های واردشده در Map یکی هستند، می‌توان Cols را حذف کرد. ذخیره و دوباره آزمایش می‌کنیم. فقط title و number که همان name و score هستند نمایش داده شدند؛ در واقع فقط فیلدهایی که در Map تعیین کرده بودیم.

اگر بخواهید در تعریف چند کلید از این استفاده کنید می‌توانید از همین خروجی استفاده کنید. اکنون می‌خواهیم name به‌عنوان عنوان کلید (متن نمایشی) و بهتر است mobile به‌عنوان دستور تعیین شود که دستور را باید با cmd تعیین کنیم. این موارد در مستندات نیز آمده است.

پیش از ورود به این قسمت، ذخیره می‌کنیم و خروجی را می‌بینیم. text برابر مرتضی و cmd برابر شمارهٔ موبایل شد. می‌خواهیم این موارد در کلید نمایش داده شود: عنوان هر کدام مرتضی، مجید، محمد و محمدرضا باشد و دستور برای مثال شمارهٔ موبایل همان فرد باشد. وقتی روی هر کدام کلیک شد این مقدار ارسال شود.

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

پلاگین متغیر سراسری 57:02

پلاگین بعدی پلاگین متغیر سراسری است. این پلاگین بسیار ساده است و با برچسب gvar می‌توان از آن استفاده کرد. متغیرهای سراسری از منوهای ربات قابل تعیین هستند. برای مثال متغیری می‌افزاییم که همه‌جای ربات و برای همهٔ کاربران استفاده شود.

به فرآیند بازمی‌گردیم. برچسب gvar را اضافه می‌کنیم و داخل آن نام متغیر را وارد می‌کنیم. دوباره شروع را می‌زنیم؛ به‌جای برچسب gvar تاریخ ۲۰ شهریورماه اضافه شد. هر جایی در ربات که این برچسب و این متغیر را استفاده کنیم این مقدار جایگذاری می‌شود. بنابراین می‌توان در پیام‌های مختلف از این برچسب استفاده کرد و هر وقت خواستیم ویرایش کنیم کافی است در متغیرهای سراسری این مقدار را تغییر دهیم. برای مثال اگر تاریخ مراسم تغییر کرد، این مقدار را تغییر می‌دهیم و در همهٔ دستورها تاریخ جدید نمایش داده می‌شود. البته برای ویرایش متغیر سراسری از فرآیندهای پیشرفته نیز می‌توان استفاده کرد که بعداً با آن آشنا خواهیم شد.

پلاگین متغیر فرآیند پیشرفته 58:41

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

اکنون می‌توانیم یک متغیر اضافه کنیم. اگر می‌خواهید از متغیر در پلاگین‌ها استفاده کنید باید برای ایجاد متغیر از نام انگلیسی استفاده کنید. متغیر my_score را اضافه کرده‌ایم و می‌خواهیم از آن اینجا استفاده کنیم. کاربر ابتدا با این دستور وارد می‌شود، متغیر my_score تعیین می‌شود و پس از آن بلوک ارسال پیام کار می‌کند که این مقدار را ارسال می‌کند. مشاهده می‌شود عدد ۲۰ توسط پلاگین var به متن اضافه شد. با امکانات دیگر این بخش بعداً آشنا خواهیم شد. مثال دیگری نیز اینجا می‌توانید ببینید که بعداً به‌صورت مفصل بررسی خواهد شد.

پلاگین شروط 60:52

پلاگین بعدی پلاگین شروط است که از برچسب‌های if و else برای آن استفاده می‌شود. فرض کنید بر اساس مقدار ورودی کاربر یا هر مقدار دیگری بخواهید خروجی را تغییر دهید. برای مثال در نمونه‌ای که در مستندات آمده، می‌خواهیم اگر عدد ارسالی کاربر بزرگ‌تر یا مساوی ۱۰ بود پیام قبولی بدهد و در غیر این صورت بگوید مردود شدید.

همین مثال را پیاده‌سازی می‌کنیم. ابتدا وارد بخش شروط می‌شویم و یک شرط اضافه می‌کنیم. برای مقدار اول از پلاگین msg که قبلاً با آن آشنا شدیم استفاده می‌کنیم. با این پلاگین مقداری که کاربر ارسال کرده وارد این شرط می‌شود و بزرگ‌تر یا مساوی ۱۰ بودنش بررسی می‌شود. پس از ذخیره، شناسه‌ای برای این شرط تعیین شده است. از همین شناسه استفاده می‌کنیم. طبیعتاً بار اول باید با دستور وارد شویم که عدد خاصی نیست تا بررسی شود. اما از این پس هر عددی که ارسال کنیم، اگر بیشتر از ۱۰ باشد می‌نویسد قبول شدید و اگر کمتر باشد می‌نویسد مردود شدید.

در واقع همین قبول و مردود همان متنی است که در برچسب if اضافه کرده‌ایم.

عملگرهای شرطی (عملگر in برای بررسی فهرست‌ها)

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

فرض کنید در شهرهای مختلفی شعبه دارید و می‌خواهید اگر کاربر استان دیگری را ارسال کرد ربات پاسخ دهد که در این شهر شعبه‌ای ندارید. برای این کار نام جاهایی که شعبه دارید را وارد می‌کنیم. توجه داشته باشید که ویرگول باید انگلیسی باشد. متن را نیز تغییر می‌دهیم: «ما در این شهر شعبه داریم یا نداریم». آزمایش می‌کنیم. اگر زنجان نوشته شود می‌نویسد شعبه داریم؛ اگر شهرهای دیگر نوشته شود می‌نویسد شعبه نداریم. تهران نیز در فهرست بود. بنابراین بر اساس آن فهرست خروجی مورد نظر به کاربر نشان داده شد. توجه داشته باشید که از گزینهٔ عملگر معکوس نیز می‌توانید استفاده کنید. اگر آن را فعال کنید به این معناست که در این شهرها شعبه ندارید و در بقیهٔ شهرها شعبه دارید. در این صورت اگر شیراز را بزنید می‌نویسد شعبه داریم و اگر تبریز را بزنید می‌گوید شعبه نداریم.

اعتبارسنجی داده‌ها

عملگر دیگری که وجود دارد عملگر کد ملی است؛ یعنی مقدار این قسمت باید حتماً یک کد ملی باشد. متن را تغییر می‌دهیم: «کد ملی واردشده معتبر هست یا نیست». آزمایش می‌کنیم؛ می‌گوید معتبر نیست. حتی اگر ده رقمی باشد معتبر نیست. یک کد ملی معتبر وارد می‌کنیم؛ نشان می‌دهد معتبر است. بدین ترتیب بررسی کد ملی انجام شد.

عملگر like برای جستجوی الگو در متن

عملگر بعدی like است که قبلاً در برچسب query مربوط به dbentries با آن آشنا شدیم. برای مثال اگر متن ارسال‌شده با محمد شروع شود. اگر هر متن دیگری بفرستیم می‌گوید معتبر نیست؛ اما اگر محمد باشد یا با محمد شروع شده باشد می‌گوید معتبر است. در ابتدا، انتها یا وسط می‌توان از علامت درصد (%) استفاده کرد تا هر جایی که باید متغیر در نظر گرفته شود شرط آن را تأیید کند.

استفاده از regex برای جستجو بر اساس الگوهای پیچیده

آخرین عملگر regular expression است. عبارت منظم حالت فنی‌تری دارد که می‌توانید اینجا یا در سایت‌های مشابه آن را بیازمایید. قوانین عبارت منظم در اینترنت موجود است و می‌توانید آن‌ها را بیاموزید.

فقط یک مثال می‌زنیم. می‌خواهیم اگر عدد چهار رقمی ارسال شده بود متن تأیید شود و در غیر این صورت تأیید نشود. از \d استفاده می‌کنیم و چهار رقمی بودن را تعیین می‌کنیم. اگر چهار رقم در متن پیدا شود معتبر است. هر چیز دیگری که داخل آن چهار رقم باشد نیز قبول می‌شود و اگر نباشد قبول نمی‌شود. اگر از چهار رقم بیشتر باشد نیز قبول می‌شود چون چهار رقم را پیدا کرده است. اگر بخواهید فقط به چهار رقم محدود شود این‌ها قوانین عبارت منظم است که باید بیاموزید. می‌توان محدود کرد که فقط چهار رقم در پیام باشد و نوشتهٔ دیگری وجود نداشته باشد. در این صورت دیگر این مورد قبول نمی‌شود و دقیقاً باید چهار رقم نوشته شود.

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

پلاگین پل ارتباطی مورد استفاده 68:27

پلاگین بعدی پلاگین bridge است که اطلاعات پل ارتباطی را نشان می‌دهد. برای مثال می‌خواهیم پیام‌رسانی که کاربر با آن وارد شده یا وضعیت پل ارتباطی نمایش داده شود. ممکن است استفاده‌های خاصی برای مدیر داشته باشد؛ نمونهٔ آن نیز اینجا آمده است.

پلاگین نقل قول 69:07

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

پلاگین فارسی یا انگلیسی سازی اعداد 70:03

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

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

به‌تدریج استفاده از برچسب‌ها داخل یکدیگر را نیز می‌آموزیم. هر برچسب ابتدا مقدار داخلی‌اش ایجاد می‌شود؛ یعنی برچسب msg که داخلی‌ترین برچسب است مقدار متنی را که از کاربر دریافت کرده جایگذاری می‌کند. سپس این عدد به‌صورت خودکار وارد پلاگین ennum می‌شود و اگر اعداد داخل آن فارسی باشند به حالت انگلیسی تبدیل می‌شوند. بنابراین فعالیت پلاگین‌ها از داخلی‌ترین برچسب آغاز می‌شود و به پلاگین‌های بالاتر می‌رسد. برعکس، گاهی لازم است اعداد به‌صورت فارسی نشان داده شوند. برای مثال تاریخ امروز را با برچسب date می‌خواهیم نمایش دهیم اما اعداد آن انگلیسی است. می‌توان این برچسب را داخل fanum وارد کرد. مشاهده می‌شود اعداد به حالت فارسی تبدیل شد. بدین ترتیب با پلاگین فارسی‌سازی یا انگلیسی‌سازی اعداد آشنا شدیم.

پلاگین عملیات ریاضی 72:41

آخرین پلاگینی که بررسی می‌کنیم پلاگین عملیات ریاضی است. با این پلاگین می‌توانید بدون نیاز به فرآیند پیشرفته اعداد را جمع و تفریق کنید یا برخی توابع را روی آن‌ها اعمال کنید. از ساده‌ترین مثال شروع می‌کنیم. عبارت‌هایی که داخل این پلاگین اضافه می‌شوند را می‌توان به توان رساند؛ ۲ به توان ۳ برابر ۸ می‌شود و ۱ به‌علاوهٔ ۸ برابر ۹. یا از توابعی که در مستندات آمده می‌توان استفاده کرد. اگر ۲ بفرستیم باید ۴ بازگردد، اگر ۳ بفرستیم (۲ به توان ۳) برابر ۸، اگر ۴ بفرستیم ۱۶ و به همین ترتیب. بنابراین می‌توان از پلاگین‌های دیگر داخل پلاگین math استفاده کرد و خروجی را به کاربر نمایش داد.

در فرآیندهای دیگر نیز می‌توان از این مورد استفاده کرد؛ برای مثال تغییراتی در یک فیلد انجام داد و در فیلد دیگر ذخیره کرد و از کاربر خواست تغییرات دیگری اعمال کند. به‌طور خلاصه داخل پلاگین math می‌توانید هر تغییری اعمال کنید و خروجی ریاضی دریافت کنید. توابع دیگر نیز اینجا مشاهده می‌شود.

معرفی فیلترها 74:24

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

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

فیلتر num برای جداسازی ارقام 75:25

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

فیلتر فارسی یا انگلیسی سازی اعداد 76:12

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

مزیت این کار این است که می‌توانید هر یک از ویژگی‌هایی را که می‌خواهید با این فیلتر نمایش دهید و بقیهٔ ویژگی‌ها را بدون فیلتر بنویسید. در حالی که اگر برچسب fanum را در ابتدا و انتهای msg اضافه می‌کردید، این پلاگین روی همهٔ متن اعمال می‌شد؛ اما اکنون فقط در این بخش اعمال می‌شود. مشاهده می‌شود نویسه‌های این بخش به‌صورت فارسی و نویسه‌های بخش دیگر به‌صورت انگلیسی نمایش داده شده‌اند. بدین ترتیب با عملکرد فیلترهای num، fanum و ennum آشنا شدیم.

فیلتر تاریخ و زمان 77:43

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

می‌خواهیم تاریخی از کاربر بگیریم. به num نیاز نداریم؛ آن را حذف می‌کنیم و فیلتر date را جایگزین می‌کنیم. در نهایت می‌خواهیم اعداد تاریخ تولیدشده به‌شکل فارسی نمایش داده شود، بنابراین فیلتر fanum را نگه می‌داریم. برای درک بهتر تفاوت، مقدار ارسالی کاربر را نیز پیش از آن نمایش می‌دهیم. تاریخی ارسال می‌کنیم. تاریخ ارسالی با اعداد فارسی نمایش داده شد و تاریخی که می‌خواستیم دو روز بعد باشد نیز تولید شد و دوباره با اعداد فارسی ایجاد شد.

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

تنها نکتهٔ باقی‌مانده دربارهٔ فیلتر date این است که می‌توانید تعیین کنید ورودی شما حالت ثانیه‌ای، میلی‌ثانیه‌ای یا میکروثانیه‌ای است. معنایش این است که از مقدار یونیکس (unix) استفاده می‌کنید. حتی از برخی سایت‌های عمومی و برخط می‌توانید برای تبدیل تاریخ استفاده کنید. برای مثال مقدار یونیکس ثانیه‌ای که اکنون در آن هستیم بر حسب ثانیه از سال ۱۹۷۰ تاکنون شمرده شده و به این عدد رسیده است. اگر ورودی به این شکل باشد باید تعیین کنیم ورودی به‌شکل ثانیه وارد شده، نه تاریخ عادی. ذخیره می‌کنیم و مقداری که کپی کرده بودیم را ارسال می‌کنیم. همان مقدار با اعداد فارسی فرستاده شد و مقدار دو روز بعد نیز دوباره با اعداد فارسی ایجاد شد.

فیلتر q نیز دقیقاً همان عملکرد پلاگین quote را دارد.

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