سلام بعد از مدت خیلی طولانی .
خب یه مرخصی نسبتا کوتاه ولی مفید دیگه
یه سفارش خیلی کوچیک و کار راه انداز تونستم بگیرم که توی این مدت کمی که خونه بودم و وقت داشتم بتونم انجام بدم
یه برنامه برای مدیریت یه آموزشگاه موسیقی که براشون کارای ثبتنام و مدیریت هزینه های شهریه و هزینه های خودشون رو انجام بده
که در ادامه یه مقدار درموردش توضیح میدم
ادامه مطلببات فری نایت به کاربر ها و مدیر های گروه یا کانال ها کمک میکنه تا پست های مختلف رو بر اساس قالب های از قبل آماده ایجاد کنند و راحت کار ارسال پست رو انجام بدن.
اگر دستور/help
رو ارسال کنید راهنمای کوتاهی نمایش داده میشه و درمورد دستورات توضیحات مختصری میده، منم اینجا یکم درموردشون توضیح بیشتری می نویسم:آدرس گیتهاب سورس ماژول
آدرس npm
یکی از سایت های خوب برای ایجاد لینک کوتاه که مستندات خوبی برای توسعه دهنده ها داشته باشه سایت opizo.com هست که بدون اخطار و وقفه به برنامه نویس ها هم این امکان رو میده که براحتی و بدون نیاز به مراجعه به سایت تنها با کمک برنامه ی نوشته شده درخواست کوتاه کردن لینک را ارسال کنند و لینک کوتاه شده را دریافت کنند و همینطور این امکان وجود داره که درخواست ها با نام کاربری مشخص ارسال شوند تا امکان مدیریت لینک ها هم وجود داشته باشه و
ادامه مطلبآدرس گیتهاب سورس ماژول
برای اینکه راحت تر در لیست فیلم های موجود در imdb جستجو کرده و اطلاعات فیلم را دریافت کنیم بصورت مستقیم هیچ api خاصی از طرف خود سایت اصلی ارائه نمیشود، اما میتوان از api سایت omdb استفاده کرد برای دسترسی و جستجوی فیلم ها و سریال ها و دریافت تمامی اطلاعات آنها
ماژول imdb-search که روی ماژول omdb قرار دارد و از آن برای ارسال درخواست و دسترسی به اطلاعات فیلم ها استفاده میکند اما یک رابط خیلی راحت تر بصورت Promise در اختیار توسعه دهنده قرار می دهد تا بدون نیاز به استفاده از callback بتوانند به راحتی درخواست های خود را ارسال کنند
همچنین در این ماژول یک فیلد id به لیست فیلم های پیدا شده از جستجو اضافه می شود تا کاربر بتواند به راحتی با ارسال یک عدد ساده فیلم مورد نظر را انتخاب کرده و جزئیات بیشتر را دریافت کند(نیازی به استفاده از کد مخصوص و متحصر به فرد و طولانی خود imdb نمی باشد)
اگر توی فایل زبان اینطوری نوشته شده باشه :
{
"welcome-text": {
"en": "Welcome %{name}!",
"fa": "خوش اومدی %{name}!"
}
}
حالا وقتی داخل کد تابع رو صدا بزنم و آبجکت رو ارسال کنم
__('welcome-text', { name: 'Marty' }, 'en');
// متن خروجی از تابع بالا متن رو با مقدار ارسال شده برمیگردونه : "Welcome Marty!"
__('welcome-text', { name: 'مارتی' }, 'fa');
// متن خروجی از تابع بالا متن رو با مقدار ارسال شده برمیگردونه: سلام مارتی!
یکی از ویژگی های بات کوتاه کردن لینک هستش، حالا من تصمیم گرفتم اگر لینک مستقیم به فایل بود حجم و نام فایل رو هم توی درخواست به کاربر برگردونه
من برای ارسال درخواست های http از axios استفاده میکردم چون میتونستم از promise که برمیگردوند برای تعیین جواب استفاده کنم
برای دریافت حجم فایل میشه از متد head استفاده کرد که یه درخواست برای دریافت هد صفحه رو ارسال میکنه و کاری به محتوا نداره پس کل فایل یا صفحه خونده نمیشه و نتیجه ای که برمیگرده شامل اطلاعات صفحه هست که اگر فایل باشه پس فیلد content-length هم هست که توی اون حجم فایل مشخص شده
با axios.head میشه اینکارو انجام داد و به خوبی کار میکنه ولی به یه مشکل عجیب برخوردم!
وقتی از یه سرور خاص head request میکردم شروع میکرد به خوندن کل محتوای صفحه که یعنی داشت کل فایل رو دانلود میکرد!!! ( من اینو نمیخواستم و اصلا درست نبود )
با پلاگین rest-client اتم یه درخواست هد ارسال کردم به اون آدرس و جواب رو چک کردم دیدم جواب برگشت بدون مشکل پس چرا وقتی من این درخواست رو میفرستادم کار نمیکرد! وقتی headers رو چک میکردم دیدم که سروری که آدرس اون رو بررسی دارم میکنم متد head request رو اجازه نمیده و غیر مجاز اعلان کرده! برام جالب شد که پس بخاطر همین احتمالا axios درخواست رو به get تغییر میده و شروع به دانلود میکنه!
یه نگاه انداختم و دیدم که خود rest-client داره از پکیج request استفاده میکنه، قبلا دیده بودم این ماژول رو چیزای زیادی ازش خونده بودم ولی هیچ وقت نرفتم که باهاش کار کنم و ازش استفاده نکرده بودم ولی اینبار تصمیم گرفتم ازش استفاده کنم
ماژول request-promise-native رو که نسخه ای request هست که از promise خودت جاوا es6 استفاده میکنه رو نصب کردم و درخواست رو باهاش ارسال کردم و مشکل حل شد
خود کد هم به همراه جدا کردن اسم فایل از آدرس هست اینجا داخل این فایل از بات قرار داره
درباره این سایت