/** * 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; } } }