/** * 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); }
/** * 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); }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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); }
/** * 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); }
/** * 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; }
/** * 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; }
/** * Gets the WebSocket gateway. * * @return string */ public function getGateway() { return Guzzle::get('gateway')->url; }
/** * 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; }