Exemplo n.º 1
0
 /**
  * {@inheritDoc}
  */
 public function jsonUnserialize(array $data)
 {
     if (!isset($this->data['attachments'])) {
         return;
     }
     for ($i = 0; $i < count($this->data['attachments']); $i++) {
         $this->data['attachments'][$i] = Attachment::fromData($this->data['attachments'][$i]);
     }
 }
Exemplo n.º 2
0
 /**
  * @param Message $payload
  * @param string  $channel
  *
  * @throws \Doctrine\DBAL\DBALException
  */
 protected function postToSlack(Message $payload, $channel)
 {
     $data = [];
     $data['unfurl_links'] = false;
     $data['unfurl_media'] = false;
     $data['parse'] = 'none';
     $data['text'] = $payload->getText();
     $data['channel'] = $channel;
     $attachments = $payload->getAttachments();
     if (count($attachments)) {
         $data['attachments'] = array();
     }
     /** @var \T3Bot\Slack\Message\Attachment $attachment */
     foreach ($attachments as $attachment) {
         $data['attachments'][] = Attachment::fromData(['title' => $attachment->getTitle(), 'title_link' => $attachment->getTitleLink(), 'text' => $attachment->getText(), 'fallback' => $attachment->getFallback(), 'color' => $attachment->getColor(), 'pretext' => $attachment->getPretext(), 'author_name' => $attachment->getAuthorName(), 'author_icon' => $attachment->getAuthorIcon(), 'author_link' => $attachment->getAuthorLink(), 'image_url' => $attachment->getImageUrl(), 'thumb_url' => $attachment->getThumbUrl()]);
     }
     if (!empty($GLOBALS['config']['slack']['botAvatar'])) {
         /* @noinspection PhpUndefinedFieldInspection */
         $data['icon_emoji'] = $GLOBALS['config']['slack']['botAvatar'];
     }
     // since the bot is a real bot, we can't push directly to slack
     // lets put the message into our messages pool
     $this->addMessageToQueue($data);
 }
Exemplo n.º 3
0
        $command->processChannelCreated($payload->getData());
    }
});
$client->on('presence_change', function (Slack\Payload $payload) use($client) {
    if ($payload->getData()['user'] !== $GLOBALS['config']['slack']['botId']) {
        $command = new \T3Bot\Commands\TellCommand($payload, $client);
        $command->processPresenceChange($payload->getData()['user'], $payload->getData()['presence']);
    }
});
$client->connect()->then(function () use($client) {
    echo "Connected!\n";
});
/* @noinspection PhpInternalEntityUsedInspection */
$db = \Doctrine\DBAL\DriverManager::getConnection($GLOBALS['config']['db'], new \Doctrine\DBAL\Configuration());
$loop->addPeriodicTimer(5, function () use($client, $db) {
    $messages = $db->fetchAll('SELECT * FROM messages ORDER BY id ASC');
    foreach ($messages as $message) {
        $data = json_decode($message['message'], true);
        $attachments = $data['attachments'];
        $data['attachments'] = [];
        foreach ($attachments as $attachment) {
            $data['attachments'][] = \Slack\Message\Attachment::fromData($attachment);
        }
        // process data
        $messageToSent = new \Slack\Message\Message($client, $data);
        $client->postMessage($messageToSent);
        // delete message
        $db->delete('messages', ['id' => $message['id']]);
    }
});
$loop->run();
Exemplo n.º 4
0
 /**
  * @param \T3Bot\Slack\Message|string $messageToSent
  * @param string $user
  * @param string $channel the channel id
  */
 public function sendResponse($messageToSent, $user = null, $channel = null)
 {
     $data = [];
     if ($user !== null) {
         $this->client->apiCall('im.open', ['user' => $user])->then(function (Payload $response) use($messageToSent) {
             $channel = $response->getData()['channel']['id'];
             if ($messageToSent instanceof Message) {
                 $data = [];
                 $data['unfurl_links'] = false;
                 $data['unfurl_media'] = false;
                 $data['parse'] = 'none';
                 $data['text'] = $messageToSent->getText();
                 $data['channel'] = $channel;
                 $attachments = $messageToSent->getAttachments();
                 if (count($attachments)) {
                     $data['attachments'] = array();
                 }
                 /** @var \T3Bot\Slack\Message\Attachment $attachment */
                 foreach ($attachments as $attachment) {
                     $data['attachments'][] = Attachment::fromData(['title' => $attachment->getTitle(), 'title_link' => $attachment->getTitleLink(), 'text' => $attachment->getText(), 'fallback' => $attachment->getFallback(), 'color' => $attachment->getColor(), 'pretext' => $attachment->getPretext(), 'author_name' => $attachment->getAuthorName(), 'author_icon' => $attachment->getAuthorIcon(), 'author_link' => $attachment->getAuthorLink(), 'image_url' => $attachment->getImageUrl(), 'thumb_url' => $attachment->getThumbUrl()]);
                 }
                 $message = new \Slack\Message\Message($this->client, $data);
                 $this->client->postMessage($message);
             } elseif (is_string($messageToSent)) {
                 $data = [];
                 $data['unfurl_links'] = false;
                 $data['unfurl_media'] = false;
                 $data['parse'] = 'none';
                 $data['text'] = $messageToSent;
                 $data['channel'] = $channel;
                 $data['as_user'] = true;
                 $this->client->apiCall('chat.postMessage', $data);
             }
         });
     } else {
         $channel = $channel !== null ? $channel : $this->payload->getData()['channel'];
         if ($messageToSent instanceof Message) {
             $data['unfurl_links'] = false;
             $data['unfurl_media'] = false;
             $data['parse'] = 'none';
             $data['text'] = $messageToSent->getText();
             $data['channel'] = $channel;
             $attachments = $messageToSent->getAttachments();
             if (count($attachments)) {
                 $data['attachments'] = array();
             }
             /** @var \T3Bot\Slack\Message\Attachment $attachment */
             foreach ($attachments as $attachment) {
                 $data['attachments'][] = Attachment::fromData(['title' => $attachment->getTitle(), 'title_link' => $attachment->getTitleLink(), 'text' => $attachment->getText(), 'fallback' => $attachment->getFallback(), 'color' => $attachment->getColor(), 'pretext' => $attachment->getPretext(), 'author_name' => $attachment->getAuthorName(), 'author_icon' => $attachment->getAuthorIcon(), 'author_link' => $attachment->getAuthorLink(), 'image_url' => $attachment->getImageUrl(), 'thumb_url' => $attachment->getThumbUrl()]);
             }
             $message = new \Slack\Message\Message($this->client, $data);
             $this->client->postMessage($message);
         } elseif (is_string($messageToSent)) {
             $data['unfurl_links'] = false;
             $data['unfurl_media'] = false;
             $data['parse'] = 'none';
             $data['text'] = $messageToSent;
             $data['channel'] = $channel;
             $data['as_user'] = true;
             $this->client->apiCall('chat.postMessage', $data);
         }
     }
 }
Exemplo n.º 5
0
 public function testGetThumbUrl()
 {
     $attachment = Attachment::fromData(['thumb_url' => $this->faker->url]);
     $this->assertEquals($attachment->data['thumb_url'], $attachment->getThumbUrl());
 }