abstract class PluginBase { abstract function Initialize($botControlInterface); // Called on loading abstract function Terminate(); // Called on shutdown or reload abstract function ReceiveEvent($eventStr); //this is the function called when an event //the class was subscribe to arrives. abstract function SubscribeTo(); // This function returns an array of event numbers to subscribe to // anything else you want o add } class PluginForCTCP extends PluginBase { private $text; private $botContol; function Initialize($botControlInterface) { $text = "Im initializing..."; $botControl = $botControlInterface; $botControl->say($text); } function Terminate() { $text = "Im terminating..."; $botControl->say($text); } function ReceiveEvent($eventStr) { $text = "Receiverd event string: ". $eventStr; $botControl->say($text); } function SubscribeTo() { $events = {"01","02"}; return $events; } }