/**
  * Responds with a magic eight ball phrase when asked questions
  *
  * @param \Phergie\Irc\Event\EventInterface $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function handleEvent(Event $event, Queue $queue)
 {
     if ($event instanceof UserEvent) {
         $nick = $event->getNick();
         $channel = $event->getSource();
         $params = $event->getParams();
         $text = $params['text'];
         $matched = stripos($text, '8 ball') !== false;
         if ($matched) {
             $msg = $nick . ', the magic 8 ball says "' . $this->getMagicEightBallAnswer() . '"';
             $queue->ircPrivmsg($channel, $msg);
         }
     }
 }
 /**
  * Responds to server ping events.
  *
  * @param \Phergie\Irc\Event\EventInterface $event Ping event to respond to 
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function pong(EventInterface $event, EventQueueInterface $queue)
 {
     $params = $event->getParams();
     $queue->ircPong($params['server1']);
 }
 public function getParams()
 {
     return $this->event->getParams();
 }
 /**
  * Nick is in use, pick another.
  *
  * @param \Phergie\Irc\Event\EventInterface $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function handleEvent(Event $event, Queue $queue)
 {
     $iterator = $this->getIterator($event->getConnection());
     if (!$iterator->valid()) {
         $queue->ircQuit('All specified alternate nicks are in use');
         return;
     }
     if ($this->recovery && $this->primaryNick === null) {
         $params = $event->getParams();
         $primaryNick = $params[1];
         $this->logger->debug("[AltNick] Saving '{$primaryNick}' as primary nick");
         $this->primaryNick = $primaryNick;
     }
     $nick = $iterator->current();
     $iterator->next();
     $this->logger->debug("[AltNick] Switching nick to '{$nick}'");
     $queue->ircNick($nick);
 }
 /**
  * Loads initial user mode data when the bot joins a channel.
  *
  * @param \Phergie\Irc\Event\EventInterface $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function loadUserModes(EventInterface $event, EventQueueInterface $queue)
 {
     $logger = $this->getLogger();
     $connectionMask = $this->getConnectionMask($event->getConnection());
     $params = $event->getParams();
     $channel = $params[1];
     $validPrefixes = implode('', array_keys($this->prefixes));
     $pattern = '/^([' . preg_quote($validPrefixes) . ']+)(.+)$/';
     $logger->debug('Gathering initial user mode data', array('connectionMask' => $connectionMask, 'channel' => $channel));
     foreach ($params['iterable'] as $fullNick) {
         if (!preg_match($pattern, $fullNick, $match)) {
             continue;
         }
         $nickPrefixes = str_split($match[1]);
         $nick = $match[2];
         foreach ($nickPrefixes as $prefix) {
             $mode = $this->prefixes[$prefix];
             $logger->debug('Recording user mode', array('connectionMask' => $connectionMask, 'channel' => $channel, 'nick' => $nick, 'mode' => $mode));
             $this->modes[$connectionMask][$channel][$nick][$mode] = true;
         }
     }
 }