示例#1
0
 public function __construct(LoopInterface $loop, Resolver $resolver = null)
 {
     $this->defaultHeaders['User-Agent'] = Guzzle::getUserAgent();
     if (null === $resolver) {
         $factory = new DnsFactory();
         $resolver = $factory->create('8.8.8.8', $loop);
     }
     $this->_loop = $loop;
     $this->_connector = new Connector($loop, $resolver);
     $this->_secureConnector = new SecureConnector($this->_connector, $loop);
 }
示例#2
0
 /**
  * Sends the login frame to the WebSocket.
  *
  * @return void 
  */
 public function sendLoginFrame()
 {
     $this->send(['op' => 2, 'd' => ['token' => DISCORD_TOKEN, 'v' => 3, 'properties' => ['$os' => PHP_OS, '$browser' => Guzzle::getUserAgent(), '$device' => '', '$referrer' => 'https://github.com/teamreflex/DiscordPHP', '$referring_domain' => 'https://github.com/teamreflex/DiscordPHP/'], 'large_threshold' => 100, 'compress' => true]]);
 }
示例#3
0
 /**
  * Sends a file to the channel if it is a text channel.
  *
  * @param string $filepath
  * @param string $filename 
  * @return Message|boolean 
  */
 public function sendFile($filepath, $filename)
 {
     if ($this->type != self::TYPE_TEXT) {
         return false;
     }
     if (!file_exists($filepath)) {
         throw new FileNotFoundException("File does not exist at path {$filepath}.");
     }
     $guzzle = new GuzzleClient(['http_errors' => false, 'allow_redirects' => true]);
     $url = Guzzle::$base_url . "/channels/{$this->id}/messages";
     $headers = ['User-Agent' => Guzzle::getUserAgent(), 'authorization' => DISCORD_TOKEN];
     $done = false;
     $finalRes = null;
     while (!$done) {
         $response = $guzzle->request('post', $url, ['headers' => $headers, 'multipart' => [['name' => 'file', 'contents' => fopen($filepath, 'r'), 'filename' => $filename]]]);
         // Rate limiting
         if ($response->getStatusCode() == 429) {
             $tts = $response->getHeader('Retry-After') * 1000;
             usleep($tts);
             continue;
         }
         // Not good!
         if ($response->getStatusCode() < 200 || $response->getStatusCode() > 226) {
             Guzzle::handleError($response->getStatusCode(), $response->getReasonPhrase());
             continue;
         }
         $done = true;
         $finalRes = $response;
     }
     $request = json_decode($finalRes->getBody());
     $message = new Message(['id' => $request->id, 'channel_id' => $request->channel_id, 'content' => $request->content, 'mentions' => $request->mentions, 'author' => $request->author, 'mention_everyone' => $request->mention_everyone, 'timestamp' => $request->timestamp, 'edited_timestamp' => $request->edited_timestamp, 'tts' => $request->tts, 'attachments' => $request->attachments, 'embeds' => $request->embeds], true);
     if (!isset($this->attributes_cache['messages'])) {
         $this->attributes_cache['messages'] = new Collection();
     }
     $this->attributes_cache['messages']->push($message);
     return $message;
 }