یکی از اولین دغدغههای کسی که میخواهد ربات تلگرامی بسازد، این است که نمیداند از چه کتابخانهای استفاده کند. اولین رباتی که ساختم، از هیچ کتابخانهای استفاده نمیکرد و نامرتببودن کدها بسیار آزاردهنده بود. بعدها با چند کتابخانه آشنا شدم و رباتهای مختلفی را با یکی از آنها ساختم، روش استفاده نسبتاً آسان بود و وقتی IDE متدها را پیدا کرده بود، کارها با سرعت خوبی پیش میرفت.
مدتها گذشت و به Bot API تلگرام، متدهای جدیدی اضافه شد که آن کتابخانه نمیتوانست پشتیبانی کند. اکنون باید چه میکردم؟ مجبور شدم که کلاسهایی را به کتابخانه اضافه کنم و برای نویسنده بفرستم تا ادغام کند، اما روندی نبود که در زمان کوتاهی انجام شود، و بعد پرسیدم: چرا برای آسانی کارم، یک کتابخانه برای خودم ننویسم؟ کتابخانهای که نیازهای همیشگیام را برآورده کند و کمبودهای کتابخانههای قبلی را نداشته باشد؟
نام این کتابخانه را TeleBot گذاشتهام؛ کمحجم و سبک است و در حال حاضر نیازهای اصلی را رفع میکند و در آینده امکانات جدیدی اضافه خواهد شد تا کار توسعهدهندگان دیگر را آسانتر کند. برای اینکه انعطافپذیری کتابخانه بالا باشد، تمامی متدهای مربوط به تلگرام، به صورت داینامیک کار میکنند، پس در صورت ارائهشدن متدهای جدید، کلاس اصلی ما دستنخورده باقی میماند.
برای نصب این پکیج، نیاز به Composer دارید؛ با دستور زیر میتوانید پکیج را به پروژهی خود اضافه کنید:
composer require webpajooh/telebot
بعد از ساخت ربات در Botfather یک Token تحویل گرفتهاید که برای ارتباط با ربات ضروری است. یک شیء از کلاس TeleBot بسازید و توکن را معرفی کنید:
$tg = new TeleBot('Your-Token');
بعد از این، tg$ در اختیار شماست تا دستورها را اجرا کنید. به این مثال دقت کنید:
با استفاده از listen، منتظر یک دستور از سوی کاربر میمانیم؛ اگر کاربر دستوری که توقع داشتهایم را ارسال کند، بدنه اجرا میشود و در غیر این صورت، سایر مسیرها بررسی خواهد شد. به آسانی میتوانید ورودی کاربر را تجزیه و تحلیل کنید و نیازی نیست کدهای اضافی بنویسید، در اولین قسمتی که میبینید، با d% یک عدد را مشخص کردهایم که کاربر آن را وارد کرده است، و بعد متغیر age$ همان عدد را در خود دارد، و همینطور میتوانیم متغیرهای بیشتری را در دستورات خود بگنجانیم.
یکی از ویژگیهای کتابخانهی TeleBot این است که ساختن کیبورد را آسان کرده است و نیازی به نوشتن آرایههای پر پیچ و خم نیست! در کد بالا یک کیبورد Inline (به قول بعضی از بچهها، کیبورد شیشهای!) با دو دکمه ساختهایم که هر کدام لینک خود را دارند و در آخر با متد get میتوانیم کیبورد را بگیریم و برای متد sendMessage ارسال کنیم.
یکی دیگر از ویژگیهایی که میتواند بهدردبخور باشد، لاگری است که یک فایل لاگ را ایجاد کرده و پیامی که توسعهدهنده وارد کرده را در آن مینویسد. متد log از کلاس Logger فرقی با هلپر tl ندارد و هر دو یک کار را انجام میدهند، پس میتوانید از دومی به عنوان یک جایگزین آسان استفاده کنید.
کد بالا، یک کیبورد از نوع Reply keyboard ساخته که چهار دکمه دارد. بجای اینکه دکمهها جداگانه اضافه شوند، میتوانیم همه را به عنوان پارامتر به متد addButtons معرفی کنیم، و بعد با متد chunk تعیین کنیم که در هر سطر، چند دکمه باشد. از آنجا که در رباتهای فارسی نیاز داریم که اولین دکمه در سمت راست نمایش داده شود، متد rightToLeft کیبورد را راستچین میکند و یکی از مشکلات دیرینهی ما را حل خواهد کرد.
میتوانید TeleBot را در گیتهاب و Packagist ببینید.
شما چه پیشنهادی برای این کتابخانه دارید؟ مشارکت آزاد است و انتقادات را با مهربانی میشنوم!