پلاگین


پلاگین(افزونه)

پلاگین

ام ام بی هم مانند بسیاری از ابزار های دیگر، دارای افزونه است که با این کلاس می توانید پلاگین های خود را بسازید!

پلاگین ها را باید در پوشه ی plugins یا پوشه ای که در define('PLUGINS', '...') تعریف کرده اید باشند تا بصورت خودکار افزوده شوند

بصورت کلی پلاگین ها به اجزای مختلف ربات دسترسی دارند و می توانند به کمک شما بیایند


استفاده از پلاگین

برای استفاده از پلاگین ها، باید فایل های پلاگین ها را درون پوشه ی plugins یا پوشه ای که در define('PLUGINS', '...') تعریف کرده اید قرار دهید و تمام

define('PLUGINS', __DIR__ . '/plugins'); // اختیاری

پلاگین ها بصورت خودکار به سورس شما include می شوند. شما می توانید از کلاس هایی که در اختیار شما قرار می دهند استفاده کنید


ساخت پلاگین

شما هم می توانید به سادگی پلاگین های خود را بسازید!

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

class PluginNAME extends Plugin { }

حالا می توانید از start استفاده کنید تا زمان شروع پلاگین، مقدار دهی های لازم را انجام دهید:

public static function start() { }

توجه کنید که تمامی تابع ها و متغیر ها static باشند

اگر تنظیماتی دارید نیز می توانید متغیر آن را تعریف کنید و مقدار های پیشفرض را به آن بدهید:

public static $num = 25; public static $text = 'متن تست';

در مرحله آخر حتما باید با کد زیر کلاس های پلاگین خود را به ام ام بی معرفی کنید:

Plugins::addPlugin(PluginNAME::class);

شنونده ها در پلاگین

برای اینکه مدیریت کامل تری بر ربات داشته باشید، می توانید هر لحظه از کلاس Listeners استفاده کنید

دریافت آپدیت:

class PluginStart extends Plugins { public static $text = 'خوش آمدید'; public static function start() { Listeners::onUpd([static::class, 'newUpd']); } public static function newUpd(Upd $upd) { if($msg = $upd->msg) { if($msg->started) $msg->replyText(self::$text); } } } Plugins::addPlugin(PluginStart::class);

شخصی سازی دیتابیس:

class PluginDb extends Plugins { public static function start() { Listeners::onAtomDbInstallation(function(&$tables) { $tables['my_table'] = [ 'id' => 'int*', 'name' => 'text' ]; }); } } Plugins::addPlugin(PluginDb::class);
شروع بعدی