DiscordPHP Documentation

SessionLobbyRepository extends AbstractRepository
in package

The lobbies a player is in, and what the player does in them.

Everything here is sent with the player's own OAuth2 token, through their Session. Managing lobbies from a game's backend — creating them, adding and removing members — is done with the bot token instead, through LobbyRepository.

Tags
see
Lobby
Session::$lobbies
since
10.59.0
link
https://docs.discord.com/developers/resources/lobby

Table of Contents

Properties

$cache  : CacheWrapper
$discrim  : string
$class  : string
Class type allowed into the collection.
$discord  : mixed
$endpoints  : array<string|int, mixed>
Endpoints for interacting with the Discord servers.
$factory  : Factory
The parts factory.
$http  : Http
The HTTP client.
$items  : array<string|int, mixed>
The items contained in the collection.
$session  : ?Session
The player whose token every request here is sent with.
$vars  : array<string|int, mixed>
Variables that are related to the repository.

Methods

__call()  : mixed
This method checks if a method with the name "__Collection__{$name}" exists within the class. If it does, it calls that method with the provided arguments.
__construct()  : mixed
AbstractRepository constructor.
__debugInfo()  : array<string|int, mixed>
__get()  : mixed
Exposes the read-only \`discrim\` and \`cache\` properties.
clear()  : void
Clears the repository.
create()  : Part
Builds a new, empty part.
createInvite()  : PromiseInterface<string|int, Invite>
Creates an invite for the player to the channel linked to a lobby.
createOrJoin()  : PromiseInterface<string|int, Lobby>
Joins the lobby with this secret, creating it first if there is none.
delete()  : PromiseInterface<string|int, Part>
Attempts to delete a part on the Discord servers.
fetch()  : PromiseInterface<string|int, Part>
Gets a part from the repository or Discord servers.
filter()  : ExCollectionInterface
Runs a filter callback over the repository and returns a new collection based on the response of the callback.
find()  : Lobby|null
first()  : Lobby|null
fresh()  : PromiseInterface<string|int, Part>
Returns a part with fresh values.
freshen()  : PromiseInterface<string|int, static>
Freshens the repository cache.
get()  : Lobby|null
getIterator()  : Traversable
Returns an iterator for the cache.
getMessages()  : PromiseInterface<string|int, ExCollectionInterface<string|int, Message>|array<string|int, Message>>
Returns the most recent messages in a lobby the player is in.
has()  : bool
Checks if the array has an object.
jsonSerialize()  : array<string|int, mixed>
keys()  : array<string|int, int>|array<string|int, string>
Get the keys of the items.
last()  : Lobby|null
leave()  : PromiseInterface
Leaves a lobby.
linkChannel()  : PromiseInterface<string|int, Lobby>
Links a guild text channel to a lobby, so the lobby's chat appears there.
offsetExists()  : bool
If the repository has an offset.
offsetGet()  : Part|null
Gets a part from the repository.
offsetSet()  : void
Sets a part into the repository.
offsetUnset()  : void
Unsets an index from the repository.
pull()  : Part|mixed
Pulls a part from the repository.
pushItem()  : self
Pushes a single item to the repository.
save()  : PromiseInterface<string|int, Part>
Attempts to save a part to the Discord servers.
sendMessage()  : PromiseInterface<string|int, Message>
Sends a message to a lobby.
set()  : mixed
Sets a part in the repository.
toArray()  : array<string|int, mixed>
Converts the weak caches to array.
unlinkChannel()  : PromiseInterface<string|int, Lobby>
Unlinks whatever channel is linked to a lobby.
values()  : array<string|int, mixed>
Get the values of the items.
cacheFreshen()  : PromiseInterface<string|int, static>
forgetCachedItems()  : void
Drops every cached part, before the repository is refilled from a response that lists all of them.
http()  : Http
The session's client, looked up each time because refreshing the token replaces it.
remember()  : PromiseInterface<string|int, Lobby>
Hydrates a lobby and keeps it here.

Properties

$class

Class type allowed into the collection.

protected string $class = \Discord\Parts\Lobby\Lobby::class
Tags
inheritDoc

$endpoints

Endpoints for interacting with the Discord servers.

protected array<string|int, mixed> $endpoints = []

Endpoints.

Tags
inheritDoc

$items

The items contained in the collection.

protected array<string|int, mixed> $items = []

$vars

Variables that are related to the repository.

protected array<string|int, mixed> $vars = []

Variables.

Methods

__call()

This method checks if a method with the name "__Collection__{$name}" exists within the class. If it does, it calls that method with the provided arguments.

public __call(string $name, array<string|int, mixed> $arguments) : mixed

If the method does not exist, it throws a BadMethodCallException.

Previously, this class utilized parent::method to call methods from the parent class. This was changed to use the __Collection__method naming convention to avoid conflicts

Parameters
$name : string

The name of the method being called.

$arguments : array<string|int, mixed>

The arguments passed to the method.

Tags
throws
BadMethodCallException

If the method does not exist.

Return values
mixed —

The result of the called method.

__construct()

AbstractRepository constructor.

public __construct(Discord $discord[, array<string|int, mixed> $vars = [] ]) : mixed
Parameters
$discord : Discord
$vars : array<string|int, mixed> = []

An array of variables used for the endpoint.

__debugInfo()

public __debugInfo() : array<string|int, mixed>
Return values
array<string|int, mixed>

__get()

Exposes the read-only \`discrim\` and \`cache\` properties.

public __get(string $key) : mixed
Parameters
$key : string

create()

Builds a new, empty part.

public create([array<string|int, mixed>|object $attributes = [] ][, bool $created = false ]) : Part
Parameters
$attributes : array<string|int, mixed>|object = []

The attributes for the new part.

$created : bool = false
Tags
throws
Exception
Return values
Part —

The new part.

createOrJoin()

Joins the lobby with this secret, creating it first if there is none.

public createOrJoin(string $secret[, ?array<string|int, mixed> $data = [] ]) : PromiseInterface<string|int, Lobby>
Parameters
$secret : string

Identifies the lobby within the application.

$data : ?array<string|int, mixed> = []

['member_metadata'] String key/value pairs to set on the player's lobby member. The max total length is 1000.

Tags
link
https://docs.discord.com/developers/resources/lobby#create-or-join-lobby
Return values
PromiseInterface<string|int, Lobby>

delete()

Attempts to delete a part on the Discord servers.

public delete(Part|string $part[, string|null $reason = null ]) : PromiseInterface<string|int, Part>
Parameters
$part : Part|string

The part to delete.

$reason : string|null = null

Reason for Audit Log (if supported).

Tags
throws
Exception
Return values
PromiseInterface<string|int, Part>

fetch()

Gets a part from the repository or Discord servers.

public fetch(string $id[, bool $fresh = false ]) : PromiseInterface<string|int, Part>
Parameters
$id : string

The ID to search for.

$fresh : bool = false

Whether we should skip checking the cache.

Tags
throws
Exception
Return values
PromiseInterface<string|int, Part>

filter()

Runs a filter callback over the repository and returns a new collection based on the response of the callback.

public filter(callable $callback) : ExCollectionInterface
Parameters
$callback : callable
Tags
todo

This method will be typed to return an ExCollectionInterface in v11

Return values
ExCollectionInterface

fresh()

Returns a part with fresh values.

public fresh(Part $part[, array<string|int, mixed> $queryparams = [] ]) : PromiseInterface<string|int, Part>
Parameters
$part : Part

The part to get fresh values.

$queryparams : array<string|int, mixed> = []

Query string params to add to the request (no validation)

Tags
throws
Exception
Return values
PromiseInterface<string|int, Part>

freshen()

Freshens the repository cache.

public freshen([array<string|int, mixed> $queryparams = [] ]) : PromiseInterface<string|int, static>
Parameters
$queryparams : array<string|int, mixed> = []

Query string params to add to the request (no validation)

Tags
throws
Exception
Return values
PromiseInterface<string|int, static>

getIterator()

Returns an iterator for the cache.

public & getIterator() : Traversable
Return values
Traversable

getMessages()

Returns the most recent messages in a lobby the player is in.

public getMessages(Lobby|string $lobby[, int $limit = 50 ]) : PromiseInterface<string|int, ExCollectionInterface<string|int, Message>|array<string|int, Message>>
Parameters
$lobby : Lobby|string

The lobby or lobby id.

$limit : int = 50

How many messages, between 1 and 200.

Tags
link
https://docs.discord.com/developers/resources/lobby#get-lobby-messages
Return values
PromiseInterface<string|int, ExCollectionInterface<string|int, Message>|array<string|int, Message>>

has()

Checks if the array has an object.

public has(string|int ...$keys) : bool

Use async $repository->cache->has()

Parameters
$keys : string|int
Return values
bool

jsonSerialize()

public jsonSerialize([bool $assoc = true ]) : array<string|int, mixed>
Parameters
$assoc : bool = true
Tags
inheritDoc
Return values
array<string|int, mixed>

keys()

Get the keys of the items.

public keys() : array<string|int, int>|array<string|int, string>
Return values
array<string|int, int>|array<string|int, string>

linkChannel()

Links a guild text channel to a lobby, so the lobby's chat appears there.

public linkChannel(Lobby|string $lobby, Channel|string $channel) : PromiseInterface<string|int, Lobby>

The player must be a lobby member with the CanLinkLobby flag.

Parameters
$lobby : Lobby|string

The lobby or lobby id.

$channel : Channel|string

The channel or channel id.

Tags
link
https://docs.discord.com/developers/resources/lobby#link-channel-to-lobby
Return values
PromiseInterface<string|int, Lobby>

offsetExists()

If the repository has an offset.

public offsetExists(string|int $offset) : bool

Use async $repository->cache->has() This method is deprecated for userland code but can still be used internally within the library.

Parameters
$offset : string|int
Return values
bool

offsetGet()

Gets a part from the repository.

public offsetGet(string|int $offset) : Part|null

Use async $repository->cacheGet() or sync $repository->get() This method is deprecated for userland code but can still be used internally within the library.

Parameters
$offset : string|int
Return values
Part|null

offsetSet()

Sets a part into the repository.

public offsetSet(string|int $offset, ?Part $value) : void

Use async $repository->cache->set()

Parameters
$offset : string|int
$value : ?Part

offsetUnset()

Unsets an index from the repository.

public offsetUnset(string|int $offset) : void

Use async $repository->cache->delete()

Parameters
$offset : string|int

pull()

Pulls a part from the repository.

public pull(string|int $key[, mixed $default = null ]) : Part|mixed

Use async $repository->cachePull()

Parameters
$key : string|int
$default : mixed = null
Return values
Part|mixed

pushItem()

Pushes a single item to the repository.

public pushItem(Part $item) : self

Use async $repository->cache->set() This method is deprecated for userland code but can still be used internally within the library.

Parameters
$item : Part
Return values
self

save()

Attempts to save a part to the Discord servers.

public save(Part $part[, string|null $reason = null ]) : PromiseInterface<string|int, Part>

Use Part->save($reason) to ensure permissions are checked.

Parameters
$part : Part

The part to save.

$reason : string|null = null

Reason for Audit Log (if supported).

Tags
throws
Exception
Return values
PromiseInterface<string|int, Part>

sendMessage()

Sends a message to a lobby.

public sendMessage(Lobby|string $lobby, string $content[, ?int $data = [] ]) : PromiseInterface<string|int, Message>
Parameters
$lobby : Lobby|string

The lobby or lobby id.

$content : string

The message content. Must not be empty.

$data : ?int = []

['flags'] Message flags; only those the Social SDK can create are accepted.

Tags
link
https://docs.discord.com/developers/resources/lobby#send-lobby-message
Return values
PromiseInterface<string|int, Message>

toArray()

Converts the weak caches to array.

public toArray([bool $assoc = true ]) : array<string|int, mixed>

Use jsonSerialize

Parameters
$assoc : bool = true
Return values
array<string|int, mixed>

values()

Get the values of the items.

public values() : array<string|int, mixed>
Return values
array<string|int, mixed>

cacheFreshen()

protected cacheFreshen(object $response) : PromiseInterface<string|int, static>
Parameters
$response : object
Return values
PromiseInterface<string|int, static>

forgetCachedItems()

Drops every cached part, before the repository is refilled from a response that lists all of them.

protected forgetCachedItems() : void

Parts still referenced elsewhere are kept as weak references, so they are reused if the response names them again.

Tags
since
10.60.0

http()

The session's client, looked up each time because refreshing the token replaces it.

protected http() : Http
Tags
throws
LogicException

The repository was never bound to a session.

Return values
Http

remember()

Hydrates a lobby and keeps it here.

protected remember(object|array<string|int, mixed> $response) : PromiseInterface<string|int, Lobby>
Parameters
$response : object|array<string|int, mixed>
Return values
PromiseInterface<string|int, Lobby>
On this page

Search results