/**
  * Handles the message.
  *
  * @param Message $message 
  * @param array $params
  * @param Discord $discord 
  * @param Config $config 
  * @return void 
  */
 public static function handleMessage($message, $params, $discord, $config)
 {
     $id = isset($params[1]) ? $params[1] : $message->author->id;
     if (preg_match('/<@(.+)>/', $id, $matches)) {
         $id = $matches[1];
     }
     $user = new User((array) Guzzle::get("users/{$id}"), true);
     $str = "**{$user->username}:**\r\n";
     $str .= "**ID:** {$user->id}\r\n";
     $str .= "**Avatar URL:** {$user->avatar}\r\n";
     $str .= "**Discriminator:** {$user->discriminator}\r\n";
     $str .= "**Mention:** `{$user}`\r\n";
     $guildcount = 0;
     $servers = '';
     foreach ($discord->guilds as $guild) {
         foreach ($guild->members as $member) {
             if ($member->id == $user->id) {
                 $guildcount++;
                 $servers .= $guild->name . ", ";
             }
         }
     }
     $servers = rtrim($servers, ', ');
     $str .= "**Shared Servers:** {$guildcount} _({$servers})_\r\n";
     $level = isset($config['perms']['perms'][$user->id]) ? $config['perms']['perms'][$user->id] : $config['perms']['default'];
     $level = $config['perms']['levels'][$level];
     $str .= "**User Level:** {$level}\r\n";
     $message->channel->sendMessage($str);
 }
示例#2
0
 /**
  * Logs into the Discord servers.
  *
  * @param null $email
  * @param null $password
  * @param null $token
  */
 public function __construct($email = null, $password = null, $token = null)
 {
     if (is_null($token)) {
         $request = Guzzle::post('auth/login', ['email' => $email, 'password' => $password], true);
         $token = $request->token;
     }
     define("DISCORD_TOKEN", $token);
     $request = Guzzle::get('users/@me');
     $this->client = new Client(['id' => $request->id, 'username' => $request->username, 'email' => $request->email, 'verified' => $request->verified, 'avatar' => $request->avatar, 'discriminator' => $request->discriminator], true);
 }
示例#3
0
 /**
  * Returns the messages attribute.
  *
  * @param int $limit
  *
  * @return array 
  */
 public function getMessagesAttribute($limit = 0)
 {
     if (isset($this->attributes_cache['messages'])) {
         return $this->attributes_cache['messages'];
     }
     $request = Guzzle::get("channels/{$this->id}/messages" . ($limit > 0 ? '?limit=' . $limit : ''));
     $messages = [];
     foreach ($request as $index => $message) {
         $messages[$index] = new Message(['id' => $message->id, 'channel_id' => $message->channel_id, 'content' => $message->content, 'mentions' => $message->mentions, 'author' => $message->author, 'mention_everyone' => $message->mention_everyone, 'timestamp' => $message->timestamp, 'edited_timestamp' => $message->edited_timestamp, 'tts' => $message->tts, 'attachments' => $message->attachments, 'embeds' => $message->embeds], true);
     }
     $this->attributes_cache['messages'] = $messages;
     return $messages;
 }
示例#4
0
 /**
  * Returns an array of Guilds.
  *
  * @return array 
  */
 public function getGuildsAttribute()
 {
     if (isset($this->attributes_cache['guilds'])) {
         return $this->attributes_cache['guilds'];
     }
     $guilds = [];
     $request = Guzzle::get("users/@me/guilds");
     foreach ($request as $index => $guild) {
         $guilds[$guild->id] = new Guild(['id' => $guild->id, 'name' => $guild->name, 'icon' => $guild->icon, 'region' => $guild->region, 'owner_id' => $guild->owner_id, 'roles' => $guild->roles, 'joined_at' => $guild->joined_at, 'afk_channel_id' => $guild->afk_channel_id, 'afk_timeout' => $guild->afk_timeout, 'embed_enabled' => $guild->embed_enabled, 'embed_channel_id' => $guild->embed_channel_id], true);
     }
     $this->attributes_cache['guilds'] = $guilds;
     return $guilds;
 }
示例#5
0
 /**
  * Returns the roles attribute.
  *
  * @return array 
  */
 public function getRolesAttribute()
 {
     if (isset($this->attributes_cache['roles'])) {
         return $this->attributes_cache['roles'];
     }
     $roles = [];
     $request = Guzzle::get($this->replaceWithVariables('guilds/:guild_id/roles'));
     foreach ($request as $key => $role) {
         if (in_array($role->id, $this->attributes['roles'])) {
             $roles[] = new Role(['id' => $role->id, 'name' => $role->name, 'color' => $role->color, 'managed' => $role->managed, 'hoist' => $role->hoist, 'position' => $role->position, 'permissions' => new Permission(['perms' => $role->permissions]), 'guild_id' => $this->guild_id], true);
         }
     }
     $this->attributes_cache['roles'] = $roles;
     return $roles;
 }
示例#6
0
 /**
  * Returns the messages attribute.
  *
  * @return Collection 
  */
 public function getMessagesAttribute()
 {
     if (isset($this->attributes_cache['messages'])) {
         return $this->attributes_cache['messages'];
     }
     if ($this->message_count >= 100) {
         trigger_error('Requesting more messages than 100 will only return 100.');
     }
     $request = Guzzle::get("channels/{$this->id}/messages?limit={$this->message_count}");
     $messages = [];
     foreach ($request as $index => $message) {
         $messages[$index] = new Message(['id' => $message->id, 'channel_id' => $message->channel_id, 'content' => $message->content, 'mentions' => $message->mentions, 'author' => $message->author, 'mention_everyone' => $message->mention_everyone, 'timestamp' => $message->timestamp, 'edited_timestamp' => $message->edited_timestamp, 'tts' => $message->tts, 'attachments' => $message->attachments, 'embeds' => $message->embeds], true);
     }
     $messages = new Collection($messages);
     $this->attributes_cache['messages'] = $messages;
     return $messages;
 }
示例#7
0
 /**
  * Handles the message.
  *
  * @param Message $message 
  * @param array $params
  * @param Discord $discord 
  * @param Config $config 
  * @return void 
  */
 public static function handleMessage($message, $params, $discord, $config)
 {
     $id = isset($params[0]) ? $params[0] : $message->author->id;
     if (preg_match('/<@(.+)>/', $id, $matches)) {
         $id = $matches[1];
     }
     $user = new User((array) Guzzle::get("users/{$id}"), true);
     $str = "**Information for {$user->username}#{$user->discriminator}:**\r\n";
     $str .= "**ID:** {$user->id}\r\n";
     $str .= "**Avatar URL:** {$user->avatar}\r\n";
     $str .= "**Discriminator:** {$user->discriminator}\r\n";
     $str .= "**Mention:** `{$user}`\r\n";
     $guildcount = 0;
     $servers = '';
     foreach ($discord->guilds as $guild) {
         foreach ($guild->members as $member) {
             if ($member->id == $user->id) {
                 $guildcount++;
                 $servers .= $guild->name . ", ";
             }
         }
     }
     $servers = rtrim($servers, ', ');
     $str .= "**Shared Servers:** {$guildcount} _({$servers})_\r\n";
     $level = isset($config['perms']['perms'][$user->id]) ? $config['perms']['perms'][$user->id] : $config['perms']['default'];
     $level = $config['perms']['levels'][$level];
     $str .= "**User Level:** {$level}\r\n\r\n";
     $roles = '';
     try {
         foreach ($message->full_channel->guild->members->get('id', $id)->roles as $role) {
             $roles .= str_replace('@everyone', '@ everyone', $role->name) . ', ';
         }
     } catch (\Exception $e) {
         $roles = 'Could not get roles.';
     }
     $roles = rtrim($roles, ', ');
     $str .= "**User Roles:** _{$roles}_\r\n";
     $joinedDiscord = Discord::getTimestamp($message->author->id);
     $str .= "**Joined Discord:** {$joinedDiscord}\r\n";
     $joinedGuild = $message->full_channel->guild->members->get('id', $id)->joined_at;
     $str .= "**Joined Guild:** {$joinedGuild}\r\n";
     $message->channel->sendMessage($str);
 }
示例#8
0
 /**
  * Logs into the Discord servers.
  *
  * @param string $email
  * @param string $password
  * @param string $token
  * @return void
  */
 public function __construct($email = null, $password = null, $token = null)
 {
     $this->setToken($email, $password, $token);
     $request = Guzzle::get('users/@me');
     $this->client = new Client(['id' => $request->id, 'username' => $request->username, 'email' => $request->email, 'verified' => $request->verified, 'avatar' => $request->avatar, 'discriminator' => $request->discriminator], true);
 }
示例#9
0
 /**
  * Gets a fresh copy of the part.
  *
  * @return boolean 
  */
 public function fresh()
 {
     if ($this->deleted || !$this->created) {
         return false;
     }
     $request = Guzzle::get($this->get);
     $this->fill($request);
     return true;
 }
示例#10
0
 /**
  * Returns the guilds bans.
  *
  * @return Collection 
  */
 public function getBansAttribute()
 {
     if (isset($this->attributes_cache['bans'])) {
         return $this->attributes_cache['bans'];
     }
     $bans = [];
     try {
         $request = Guzzle::get($this->replaceWithVariables('guilds/:id/bans'));
     } catch (DiscordRequestFailedException $e) {
         return false;
     }
     foreach ($request as $index => $ban) {
         $bans[$index] = new Ban(['user' => $ban->user, 'guild' => $this], true);
     }
     $bans = new Collection($bans);
     $this->attributes_cache['bans'] = $bans;
     return $bans;
 }
示例#11
0
 /**
  * Gets the WebSocket gateway.
  *
  * @return string
  */
 public function getGateway()
 {
     return Guzzle::get('gateway')->url;
 }
示例#12
0
 /**
  * Returns the guilds bans.
  *
  * @return array 
  */
 public function getBansAttribute()
 {
     if (isset($this->attributes_cache['bans'])) {
         return $this->attributes_cache['bans'];
     }
     $bans = [];
     $request = Guzzle::get($this->replaceWithVariables('guilds/:id/bans'));
     foreach ($request as $index => $ban) {
         $bans[$index] = new Ban(['user' => $ban->user, 'guild' => $this], true);
     }
     $this->attributes_cache['bans'] = $bans;
     return $bans;
 }