public function handleDevansHelpCommand(Event $event, Queue $queue)
 {
     $messages = ['Usage: devans'];
     foreach ($messages as $message) {
         $queue->ircPrivmsg($event->getSource(), $message);
     }
 }
 public function queryExpressHelp(Event $event, Queue $queue)
 {
     $msg = "Usage: [ ";
     foreach ($this->commands as $command) {
         $msg .= $command . ' ';
     }
     $msg .= '] [Express ID] -- Query the express status for given ID.';
     $queue->ircPrivmsg($event->getSource(), $msg);
 }
 /**
  * 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);
         }
     }
 }
 /**
  * Send a single response line back to IRC
  *
  * @param \Phergie\Irc\Plugin\React\Command\CommandEvent $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  * @param string $ircResponseLine
  */
 protected function sendIrcResponseLine(Event $event, Queue $queue, $ircResponseLine)
 {
     $queue->ircPrivmsg($event->getSource(), $ircResponseLine);
 }
 /**
  * Handles a failed request for weather information.
  *
  * @param \Phergie\Irc\Plugin\React\Command\CommandEvent $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function reject(Event $event, Queue $queue)
 {
     $target = $event->getSource();
     $nick = $event->getNick();
     $response = 'I CAN\'T GET THE F*****G WEATHER.';
     if ($target != $nick) {
         $response = $nick . ': ' . $response;
     }
     $queue->ircPrivmsg($target, $response);
 }
 /**
  * Handles help for the seen command.
  *
  * @param \Phergie\Irc\Plugin\React\Command\CommandEvent $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function handleCommandHelp(CommandEvent $event, Queue $queue)
 {
     $queue->ircPrivmsg($event->getSource(), "Usage: seen <nickname>");
 }
 /**
  * Handles a failed fetch of tweet data.
  *
  * @param \Exception $error
  * @param \Phergie\Irc\Event\UserEventInterface $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function handleError(\Exception $error, Event $event, Queue $queue)
 {
     $this->logger->debug('Received error', array('error' => $error));
     $message = 'Error fetching tweet: ' . get_class($error) . ': ' . $error->getMessage();
     $queue->ircPrivmsg($event->getSource(), $message);
 }
 /**
  * Handles a successful request for video data.
  *
  * @param string $url URL of the request
  * @param \GuzzleHttp\Message\Response $data Response body
  * @param \Phergie\Irc\EventInterface $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function resolve($url, \GuzzleHttp\Message\Response $data, Event $event, Queue $queue)
 {
     $logger = $this->getLogger();
     $json = json_decode($data->getBody());
     $logger->info('resolve', array('url' => $url, 'json' => $json));
     if (isset($json->error)) {
         return $logger->warning('Query response contained an error', array('url' => $url, 'error' => $json->error));
     }
     $entries = $json->items;
     if (!is_array($entries) || !$entries) {
         return $logger->warning('Query returned no results', array('url' => $url));
     }
     $entry = reset($entries);
     $replacements = $this->getReplacements($entry);
     $message = str_replace(array_keys($replacements), array_values($replacements), $this->responseFormat);
     $queue->ircPrivmsg($event->getSource(), $message);
 }
 /**
  * Bigstock Command Help
  *
  * @param \Phergie\Irc\Plugin\React\Command\CommandEventInterface $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function handleBigstockHelp(Event $event, Queue $queue)
 {
     $messages = ['Usage: bigstock queryString', 'queryString - the search query (all words are assumed to be part of message)', 'Searches Bigstock for an image based on the provided query string.'];
     foreach ($messages as $message) {
         $queue->ircPrivmsg($event->getSource(), $message);
     }
 }
 /**
  * Completes the ghost process.
  *
  * @param \Phergie\Irc\Event\ServerEventInterface $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function handleGhost(ServerEvent $event, Queue $queue)
 {
     if ($this->ghostNick === null) {
         return;
     }
     // Attempt to kill the ghost connection
     $queue->ircPrivmsg($this->botNick, 'GHOST ' . $this->ghostNick . ' ' . $this->password);
 }
 /**
  * Handle the help command
  *
  * @param \Phergie\Irc\Plugin\React\Command\CommandEventInterface $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function handleCommandHelp(Event $event, Queue $queue)
 {
     foreach ($this->getHelpLines() as $helpLine) {
         $queue->ircPrivmsg($event->getSource(), $helpLine);
     }
 }
Exemple #12
0
 /**
  * @param CommandEventInterface $event
  * @param EventQueueInterface $queue
  *
  * @throws \BadMethodCallException
  */
 public function handleDnsCommand(CommandEventInterface $event, EventQueueInterface $queue)
 {
     if (get_class($event) !== '\\Phergie\\Irc\\Plugin\\React\\Command\\CommandEvent' && get_class($event) !== 'Phergie\\Irc\\Plugin\\React\\Command\\CommandEvent' && !is_subclass_of($event, '\\Phergie\\Irc\\Plugin\\React\\Command\\CommandEvent')) {
         throw new \BadMethodCallException(get_class($event) . ' given, expected: Phergie\\Irc\\Plugin\\React\\Command\\CommandEvent');
     }
     foreach ($event->getCustomParams() as $hostname) {
         $this->logDebug('Looking up: ' . $hostname);
         $this->resolveDnsQuery(new Query($hostname, function ($ip, $hostname) use($event, $queue) {
             $message = $hostname . ': ' . $ip;
             $this->logDebug($message);
             foreach ($event->getTargets() as $target) {
                 $queue->ircPrivmsg($target, $message);
             }
         }, function ($error, $hostname) use($event, $queue) {
             $message = $hostname . ': error looking up hostname: ' . $error->getMessage();
             $this->logDebug($message);
             foreach ($event->getTargets() as $target) {
                 $queue->ircPrivmsg($target, $message);
             }
         }));
     }
 }
 /**
  * Modifies a term's karma.
  *
  * @param string $term   Term to modify
  * @param string $action Karma action (either ++ or --)
  * @param \Phergie\Irc\Event\UserEvent $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  * @return bool|\React\Promise\Promise
  */
 protected function modifyKarma($term, $action, UserEvent $event, Queue $queue)
 {
     $nick = $event->getNick();
     $canonicalTerm = $this->getCanonicalTerm($term, $nick);
     if ($canonicalTerm == strtolower($nick)) {
         $message = 'You can\'t give yourself karma.';
         $queue->ircPrivmsg($event->getSource(), $message);
         return false;
     }
     $karma = 0;
     return $this->messenger->rpc(MessageFactory::rpc('fetchKarma', ['term' => $canonicalTerm]))->then(function ($payload) use($event, $queue, $action, $term, $canonicalTerm, &$karma) {
         $this->logDebug('payload: ' . var_export($payload, true));
         $karma = $payload['karma'] + ($action == '++' ? 1 : -1);
         return MessageFactory::rpc('modifyKarma', ['term' => $canonicalTerm, 'karma' => $karma]);
     })->then([$this->messenger, 'rpc'])->then(function ($payload) use($event, $queue, $action, $term) {
         $this->logDebug('payload: ' . var_export($payload, true));
         $queue->ircPrivmsg($event->getSource(), $this->getUserMessage('karma' . $action, $term));
         return $payload['karma'];
     });
 }
 /**
  * Handles a successful request for video data.
  *
  * @param string $url URL of the request
  * @param \GuzzleHttp\Message\Response $data Response body
  * @param \Phergie\Irc\EventInterface $event
  * @param \Phergie\Irc\Bot\React\EventQueueInterface $queue
  */
 public function resolve($url, \GuzzleHttp\Message\Response $data, Event $event, Queue $queue)
 {
     $logger = $this->getLogger();
     $json = json_decode($data->getBody());
     $logger->info('resolve', ['url' => $url, 'json', $json]);
     if (isset($json->error)) {
         return $logger->warning('Twitch response error', ['url' => $url, 'error' => $json->error, 'message' => $json->message]);
     }
     if (null === $json->stream) {
         return $queue->ircPrivmsg($event->getSource(), "Stream is offline");
     }
     $replacements = $this->getReplacements($json);
     $message = str_replace(array_keys($replacements), array_values($replacements), $this->responseFormat);
     $queue->ircPrivmsg($event->getSource(), $message);
 }