client
roblox.client
¶
Contains the Client, which is the core object at the center of all ro.py applications.
Client
¶
Represents a Roblox client.
Attributes:
Name | Type | Description |
---|---|---|
requests |
Requests |
The requests object, which is used to send requests to Roblox endpoints. |
url_generator |
URLGenerator |
The URL generator object, which is used to generate URLs to send requests to endpoints. |
presence |
PresenceProvider |
The presence provider object. |
thumbnails |
ThumbnailProvider |
The thumbnail provider object. |
delivery |
DeliveryProvider |
The delivery provider object. |
chat |
ChatProvider |
The chat provider object. |
account |
AccountProvider |
The account provider object. |
Source code in roblox/client.py
class Client:
"""
Represents a Roblox client.
Attributes:
requests: The requests object, which is used to send requests to Roblox endpoints.
url_generator: The URL generator object, which is used to generate URLs to send requests to endpoints.
presence: The presence provider object.
thumbnails: The thumbnail provider object.
delivery: The delivery provider object.
chat: The chat provider object.
account: The account provider object.
"""
def __init__(self, token: str = None, base_url: str = "roblox.com"):
"""
Arguments:
token: A .ROBLOSECURITY token to authenticate the client with.
base_url: The base URL to use when sending requests.
"""
self._url_generator: URLGenerator = URLGenerator(base_url=base_url)
self._requests: Requests = Requests(
url_generator=self._url_generator
)
self._shared: ClientSharedObject = ClientSharedObject(
client=self,
requests=self._requests,
url_generator=self._url_generator
)
self.presence: PresenceProvider = PresenceProvider(shared=self._shared)
self.thumbnails: ThumbnailProvider = ThumbnailProvider(shared=self._shared)
self.delivery: DeliveryProvider = DeliveryProvider(shared=self._shared)
self.chat: ChatProvider = ChatProvider(shared=self._shared)
self.account: AccountProvider = AccountProvider(shared=self._shared)
# TODO: Improve this hack
self._shared.presence_provider = self.presence
self._shared.thumbnail_provider = self.thumbnails
self._shared.delivery_provider = self.delivery
self._shared.chat_provider = self.chat
self._shared.account_provider = self.account
self.requests: Requests = self._requests
self.url_generator: URLGenerator = self._url_generator
if token:
self.set_token(token)
def __repr__(self):
return f"<{self.__class__.__name__}>"
# Authentication
def set_token(self, token: str) -> None:
"""
Authenticates the client with the passed .ROBLOSECURITY token.
This method does not send any requests and will not throw if the token is invalid.
Arguments:
token: A .ROBLOSECURITY token to authenticate the client with.
"""
self._requests.session.cookies[".ROBLOSECURITY"] = token
# Users
async def get_user(self, user_id: int) -> User:
"""
Gets a user with the specified user ID.
Arguments:
user_id: A Roblox user ID.
Returns:
A user object.
"""
try:
user_response = await self._requests.get(
url=self._shared.url_generator.get_url("users", f"v1/users/{user_id}")
)
except NotFound as exception:
raise UserNotFound(
message="Invalid user.",
response=exception.response
) from None
user_data = user_response.json()
return User(shared=self._shared, data=user_data)
async def get_authenticated_user(
self, expand: bool = True
) -> Union[User, PartialUser]:
"""
Grabs the authenticated user.
Arguments:
expand: Whether to return a User (2 requests) rather than a PartialUser (1 request)
Returns:
The authenticated user.
"""
authenticated_user_response = await self._requests.get(
url=self._shared.url_generator.get_url("users", f"v1/users/authenticated")
)
authenticated_user_data = authenticated_user_response.json()
if expand:
return await self.get_user(authenticated_user_data["id"])
else:
return PartialUser(shared=self._shared, data=authenticated_user_data)
async def get_users(
self,
user_ids: List[int],
exclude_banned_users: bool = False,
expand: bool = False,
) -> Union[List[PartialUser], List[User]]:
"""
Grabs a list of users corresponding to each user ID in the list.
Arguments:
user_ids: A list of Roblox user IDs.
exclude_banned_users: Whether to exclude banned users from the data.
expand: Whether to return a list of Users (2 requests) rather than PartialUsers (1 request)
Returns:
A List of Users or partial users.
"""
users_response = await self._requests.post(
url=self._shared.url_generator.get_url("users", f"v1/users"),
json={"userIds": user_ids, "excludeBannedUsers": exclude_banned_users},
)
users_data = users_response.json()["data"]
if expand:
return [await self.get_user(user_data["id"]) for user_data in users_data]
else:
return [
PartialUser(shared=self._shared, data=user_data)
for user_data in users_data
]
async def get_users_by_usernames(
self,
usernames: List[str],
exclude_banned_users: bool = False,
expand: bool = False,
) -> Union[List[RequestedUsernamePartialUser], List[User]]:
"""
Grabs a list of users corresponding to each username in the list.
Arguments:
usernames: A list of Roblox usernames.
exclude_banned_users: Whether to exclude banned users from the data.
expand: Whether to return a list of Users (2 requests) rather than RequestedUsernamePartialUsers (1 request)
Returns:
A list of User or RequestedUsernamePartialUser, depending on the expand argument.
"""
users_response = await self._requests.post(
url=self._shared.url_generator.get_url("users", f"v1/usernames/users"),
json={"usernames": usernames, "excludeBannedUsers": exclude_banned_users},
)
users_data = users_response.json()["data"]
if expand:
return [await self.get_user(user_data["id"]) for user_data in users_data]
else:
return [
RequestedUsernamePartialUser(shared=self._shared, data=user_data)
for user_data in users_data
]
async def get_user_by_username(
self, username: str, exclude_banned_users: bool = False, expand: bool = True
) -> Union[RequestedUsernamePartialUser, User]:
"""
Grabs a user corresponding to the passed username.
Arguments:
username: A Roblox username.
exclude_banned_users: Whether to exclude banned users from the data.
expand: Whether to return a User (2 requests) rather than a RequestedUsernamePartialUser (1 request)
Returns:
A User or RequestedUsernamePartialUser depending on the expand argument.
"""
users = await self.get_users_by_usernames(
usernames=[username],
exclude_banned_users=exclude_banned_users,
expand=expand,
)
try:
return users[0]
except IndexError:
raise UserNotFound("Invalid username.") from None
def get_base_user(self, user_id: int) -> BaseUser:
"""
Gets a base user.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
user_id: A Roblox user ID.
Returns:
A BaseUser.
"""
return BaseUser(shared=self._shared, user_id=user_id)
def user_search(self, keyword: str, page_size: int = 10,
max_items: int = None) -> PageIterator:
"""
Search for users with a keyword.
Arguments:
keyword: A keyword to search for.
page_size: How many members should be returned for each page.
max_items: The maximum items to return when looping through this object.
Returns:
A PageIterator containing RequestedUsernamePartialUser.
"""
return PageIterator(
shared=self._shared,
url=self._shared.url_generator.get_url("users", f"v1/users/search"),
page_size=page_size,
max_items=max_items,
extra_parameters={"keyword": keyword},
handler=lambda shared, data: RequestedUsernamePartialUser(shared, data),
)
# Groups
async def get_group(self, group_id: int) -> Group:
"""
Gets a group by its ID.
Arguments:
group_id: A Roblox group ID.
Returns:
A Group.
"""
try:
group_response = await self._requests.get(
url=self._shared.url_generator.get_url("groups", f"v1/groups/{group_id}")
)
except BadRequest as exception:
raise GroupNotFound(
message="Invalid group.",
response=exception.response
) from None
group_data = group_response.json()
return Group(shared=self._shared, data=group_data)
def get_base_group(self, group_id: int) -> BaseGroup:
"""
Gets a base group.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
group_id: A Roblox group ID.
Returns:
A BaseGroup.
"""
return BaseGroup(shared=self._shared, group_id=group_id)
# Universes
async def get_universes(self, universe_ids: List[int]) -> List[Universe]:
"""
Grabs a list of universes corresponding to each ID in the list.
Arguments:
universe_ids: A list of Roblox universe IDs.
Returns:
A list of Universes.
"""
universes_response = await self._requests.get(
url=self._shared.url_generator.get_url("games", "v1/games"),
params={"universeIds": universe_ids},
)
universes_data = universes_response.json()["data"]
return [
Universe(shared=self._shared, data=universe_data)
for universe_data in universes_data
]
async def get_universe(self, universe_id: int) -> Universe:
"""
Gets a universe with the passed ID.
Arguments:
universe_id: A Roblox universe ID.
Returns:
A Universe.
"""
universes = await self.get_universes(universe_ids=[universe_id])
try:
return universes[0]
except IndexError:
raise UniverseNotFound("Invalid universe.") from None
def get_base_universe(self, universe_id: int) -> BaseUniverse:
"""
Gets a base universe.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
universe_id: A Roblox universe ID.
Returns:
A BaseUniverse.
"""
return BaseUniverse(shared=self._shared, universe_id=universe_id)
# Places
async def get_places(self, place_ids: List[int]) -> List[Place]:
"""
Grabs a list of places corresponding to each ID in the list.
Arguments:
place_ids: A list of Roblox place IDs.
Returns:
A list of Places.
"""
places_response = await self._requests.get(
url=self._shared.url_generator.get_url(
"games", f"v1/games/multiget-place-details"
),
params={"placeIds": place_ids},
)
places_data = places_response.json()
return [
Place(shared=self._shared, data=place_data) for place_data in places_data
]
async def get_place(self, place_id: int) -> Place:
"""
Gets a place with the passed ID.
Arguments:
place_id: A Roblox place ID.
Returns:
A Place.
"""
places = await self.get_places(place_ids=[place_id])
try:
return places[0]
except IndexError:
raise PlaceNotFound("Invalid place.") from None
def get_base_place(self, place_id: int) -> BasePlace:
"""
Gets a base place.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
place_id: A Roblox place ID.
Returns:
A BasePlace.
"""
return BasePlace(shared=self._shared, place_id=place_id)
# Assets
async def get_asset(self, asset_id: int) -> EconomyAsset:
"""
Gets an asset with the passed ID.
Arguments:
asset_id: A Roblox asset ID.
Returns:
An Asset.
"""
try:
asset_response = await self._requests.get(
url=self._shared.url_generator.get_url(
"economy", f"v2/assets/{asset_id}/details"
)
)
except BadRequest as exception:
raise AssetNotFound(
message="Invalid asset.",
response=exception.response
) from None
asset_data = asset_response.json()
return EconomyAsset(shared=self._shared, data=asset_data)
def get_base_asset(self, asset_id: int) -> BaseAsset:
"""
Gets a base asset.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
asset_id: A Roblox asset ID.
Returns:
A BaseAsset.
"""
return BaseAsset(shared=self._shared, asset_id=asset_id)
# Plugins
async def get_plugins(self, plugin_ids: List[int]) -> List[Plugin]:
"""
Grabs a list of plugins corresponding to each ID in the list.
Arguments:
plugin_ids: A list of Roblox plugin IDs.
Returns:
A list of Plugins.
"""
plugins_response = await self._requests.get(
url=self._shared.url_generator.get_url(
"develop", "v1/plugins"
),
params={
"pluginIds": plugin_ids
}
)
plugins_data = plugins_response.json()["data"]
return [Plugin(shared=self._shared, data=plugin_data) for plugin_data in plugins_data]
async def get_plugin(self, plugin_id: int) -> Plugin:
"""
Grabs a plugin with the passed ID.
Arguments:
plugin_id: A Roblox plugin ID.
Returns:
A Plugin.
"""
plugins = await self.get_plugins([plugin_id])
try:
return plugins[0]
except IndexError:
raise PluginNotFound("Invalid plugin.") from None
def get_base_plugin(self, plugin_id: int) -> BasePlugin:
"""
Gets a base plugin.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
plugin_id: A Roblox plugin ID.
Returns:
A BasePlugin.
"""
return BasePlugin(shared=self._shared, plugin_id=plugin_id)
# Badges
async def get_badge(self, badge_id: int) -> Badge:
"""
Gets a badge with the passed ID.
Arguments:
badge_id: A Roblox badge ID.
Returns:
A Badge.
"""
try:
badge_response = await self._requests.get(
url=self._shared.url_generator.get_url(
"badges", f"v1/badges/{badge_id}"
)
)
except NotFound as exception:
raise BadgeNotFound(
message="Invalid badge.",
response=exception.response
) from None
badge_data = badge_response.json()
return Badge(shared=self._shared, data=badge_data)
def get_base_badge(self, badge_id: int) -> BaseBadge:
"""
Gets a base badge.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
badge_id: A Roblox badge ID.
Returns:
A BaseBadge.
"""
return BaseBadge(shared=self._shared, badge_id=badge_id)
# Gamepasses
def get_base_gamepass(self, gamepass_id: int) -> BaseGamePass:
"""
Gets a base gamepass.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
gamepass_id: A Roblox gamepass ID.
Returns: A BaseGamePass.
"""
return BaseGamePass(shared=self._shared, gamepass_id=gamepass_id)
__init__(self, token: str = None, base_url: str = 'roblox.com')
special
¶
Parameters:
Name | Type | Description | Default |
---|---|---|---|
token |
str |
A .ROBLOSECURITY token to authenticate the client with. |
None |
base_url |
str |
The base URL to use when sending requests. |
'roblox.com' |
Source code in roblox/client.py
def __init__(self, token: str = None, base_url: str = "roblox.com"):
"""
Arguments:
token: A .ROBLOSECURITY token to authenticate the client with.
base_url: The base URL to use when sending requests.
"""
self._url_generator: URLGenerator = URLGenerator(base_url=base_url)
self._requests: Requests = Requests(
url_generator=self._url_generator
)
self._shared: ClientSharedObject = ClientSharedObject(
client=self,
requests=self._requests,
url_generator=self._url_generator
)
self.presence: PresenceProvider = PresenceProvider(shared=self._shared)
self.thumbnails: ThumbnailProvider = ThumbnailProvider(shared=self._shared)
self.delivery: DeliveryProvider = DeliveryProvider(shared=self._shared)
self.chat: ChatProvider = ChatProvider(shared=self._shared)
self.account: AccountProvider = AccountProvider(shared=self._shared)
# TODO: Improve this hack
self._shared.presence_provider = self.presence
self._shared.thumbnail_provider = self.thumbnails
self._shared.delivery_provider = self.delivery
self._shared.chat_provider = self.chat
self._shared.account_provider = self.account
self.requests: Requests = self._requests
self.url_generator: URLGenerator = self._url_generator
if token:
self.set_token(token)
__repr__(self)
special
¶
Source code in roblox/client.py
def __repr__(self):
return f"<{self.__class__.__name__}>"
get_asset(self, asset_id: int) -> EconomyAsset
async
¶
Gets an asset with the passed ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
asset_id |
int |
A Roblox asset ID. |
required |
Returns:
Type | Description |
---|---|
EconomyAsset |
An Asset. |
Source code in roblox/client.py
async def get_asset(self, asset_id: int) -> EconomyAsset:
"""
Gets an asset with the passed ID.
Arguments:
asset_id: A Roblox asset ID.
Returns:
An Asset.
"""
try:
asset_response = await self._requests.get(
url=self._shared.url_generator.get_url(
"economy", f"v2/assets/{asset_id}/details"
)
)
except BadRequest as exception:
raise AssetNotFound(
message="Invalid asset.",
response=exception.response
) from None
asset_data = asset_response.json()
return EconomyAsset(shared=self._shared, data=asset_data)
get_authenticated_user(self, expand: bool = True) -> Union[roblox.users.User, roblox.partials.partialuser.PartialUser]
async
¶
Grabs the authenticated user.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
expand |
bool |
Whether to return a User (2 requests) rather than a PartialUser (1 request) |
True |
Returns:
Type | Description |
---|---|
Union[roblox.users.User, roblox.partials.partialuser.PartialUser] |
The authenticated user. |
Source code in roblox/client.py
async def get_authenticated_user(
self, expand: bool = True
) -> Union[User, PartialUser]:
"""
Grabs the authenticated user.
Arguments:
expand: Whether to return a User (2 requests) rather than a PartialUser (1 request)
Returns:
The authenticated user.
"""
authenticated_user_response = await self._requests.get(
url=self._shared.url_generator.get_url("users", f"v1/users/authenticated")
)
authenticated_user_data = authenticated_user_response.json()
if expand:
return await self.get_user(authenticated_user_data["id"])
else:
return PartialUser(shared=self._shared, data=authenticated_user_data)
get_badge(self, badge_id: int) -> Badge
async
¶
Gets a badge with the passed ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
badge_id |
int |
A Roblox badge ID. |
required |
Returns:
Type | Description |
---|---|
Badge |
A Badge. |
Source code in roblox/client.py
async def get_badge(self, badge_id: int) -> Badge:
"""
Gets a badge with the passed ID.
Arguments:
badge_id: A Roblox badge ID.
Returns:
A Badge.
"""
try:
badge_response = await self._requests.get(
url=self._shared.url_generator.get_url(
"badges", f"v1/badges/{badge_id}"
)
)
except NotFound as exception:
raise BadgeNotFound(
message="Invalid badge.",
response=exception.response
) from None
badge_data = badge_response.json()
return Badge(shared=self._shared, data=badge_data)
get_base_asset(self, asset_id: int) -> BaseAsset
¶
Gets a base asset.
Note
This method does not send any requests - it just generates an object. For more information on bases, please see Bases.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
asset_id |
int |
A Roblox asset ID. |
required |
Returns:
Type | Description |
---|---|
BaseAsset |
A BaseAsset. |
Source code in roblox/client.py
def get_base_asset(self, asset_id: int) -> BaseAsset:
"""
Gets a base asset.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
asset_id: A Roblox asset ID.
Returns:
A BaseAsset.
"""
return BaseAsset(shared=self._shared, asset_id=asset_id)
get_base_badge(self, badge_id: int) -> BaseBadge
¶
Gets a base badge.
Note
This method does not send any requests - it just generates an object. For more information on bases, please see Bases.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
badge_id |
int |
A Roblox badge ID. |
required |
Returns:
Type | Description |
---|---|
BaseBadge |
A BaseBadge. |
Source code in roblox/client.py
def get_base_badge(self, badge_id: int) -> BaseBadge:
"""
Gets a base badge.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
badge_id: A Roblox badge ID.
Returns:
A BaseBadge.
"""
return BaseBadge(shared=self._shared, badge_id=badge_id)
get_base_gamepass(self, gamepass_id: int) -> BaseGamePass
¶
Gets a base gamepass.
Note
This method does not send any requests - it just generates an object. For more information on bases, please see Bases.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
gamepass_id |
int |
A Roblox gamepass ID. |
required |
Source code in roblox/client.py
def get_base_gamepass(self, gamepass_id: int) -> BaseGamePass:
"""
Gets a base gamepass.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
gamepass_id: A Roblox gamepass ID.
Returns: A BaseGamePass.
"""
return BaseGamePass(shared=self._shared, gamepass_id=gamepass_id)
get_base_group(self, group_id: int) -> BaseGroup
¶
Gets a base group.
Note
This method does not send any requests - it just generates an object. For more information on bases, please see Bases.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
group_id |
int |
A Roblox group ID. |
required |
Returns:
Type | Description |
---|---|
BaseGroup |
A BaseGroup. |
Source code in roblox/client.py
def get_base_group(self, group_id: int) -> BaseGroup:
"""
Gets a base group.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
group_id: A Roblox group ID.
Returns:
A BaseGroup.
"""
return BaseGroup(shared=self._shared, group_id=group_id)
get_base_place(self, place_id: int) -> BasePlace
¶
Gets a base place.
Note
This method does not send any requests - it just generates an object. For more information on bases, please see Bases.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
place_id |
int |
A Roblox place ID. |
required |
Returns:
Type | Description |
---|---|
BasePlace |
A BasePlace. |
Source code in roblox/client.py
def get_base_place(self, place_id: int) -> BasePlace:
"""
Gets a base place.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
place_id: A Roblox place ID.
Returns:
A BasePlace.
"""
return BasePlace(shared=self._shared, place_id=place_id)
get_base_plugin(self, plugin_id: int) -> BasePlugin
¶
Gets a base plugin.
Note
This method does not send any requests - it just generates an object. For more information on bases, please see Bases.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
plugin_id |
int |
A Roblox plugin ID. |
required |
Returns:
Type | Description |
---|---|
BasePlugin |
A BasePlugin. |
Source code in roblox/client.py
def get_base_plugin(self, plugin_id: int) -> BasePlugin:
"""
Gets a base plugin.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
plugin_id: A Roblox plugin ID.
Returns:
A BasePlugin.
"""
return BasePlugin(shared=self._shared, plugin_id=plugin_id)
get_base_universe(self, universe_id: int) -> BaseUniverse
¶
Gets a base universe.
Note
This method does not send any requests - it just generates an object. For more information on bases, please see Bases.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
universe_id |
int |
A Roblox universe ID. |
required |
Returns:
Type | Description |
---|---|
BaseUniverse |
A BaseUniverse. |
Source code in roblox/client.py
def get_base_universe(self, universe_id: int) -> BaseUniverse:
"""
Gets a base universe.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
universe_id: A Roblox universe ID.
Returns:
A BaseUniverse.
"""
return BaseUniverse(shared=self._shared, universe_id=universe_id)
get_base_user(self, user_id: int) -> BaseUser
¶
Gets a base user.
Note
This method does not send any requests - it just generates an object. For more information on bases, please see Bases.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
user_id |
int |
A Roblox user ID. |
required |
Returns:
Type | Description |
---|---|
BaseUser |
A BaseUser. |
Source code in roblox/client.py
def get_base_user(self, user_id: int) -> BaseUser:
"""
Gets a base user.
!!! note
This method does not send any requests - it just generates an object.
For more information on bases, please see [Bases](/bases).
Arguments:
user_id: A Roblox user ID.
Returns:
A BaseUser.
"""
return BaseUser(shared=self._shared, user_id=user_id)
get_group(self, group_id: int) -> Group
async
¶
Gets a group by its ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
group_id |
int |
A Roblox group ID. |
required |
Returns:
Type | Description |
---|---|
Group |
A Group. |
Source code in roblox/client.py
async def get_group(self, group_id: int) -> Group:
"""
Gets a group by its ID.
Arguments:
group_id: A Roblox group ID.
Returns:
A Group.
"""
try:
group_response = await self._requests.get(
url=self._shared.url_generator.get_url("groups", f"v1/groups/{group_id}")
)
except BadRequest as exception:
raise GroupNotFound(
message="Invalid group.",
response=exception.response
) from None
group_data = group_response.json()
return Group(shared=self._shared, data=group_data)
get_place(self, place_id: int) -> Place
async
¶
Gets a place with the passed ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
place_id |
int |
A Roblox place ID. |
required |
Returns:
Type | Description |
---|---|
Place |
A Place. |
Source code in roblox/client.py
async def get_place(self, place_id: int) -> Place:
"""
Gets a place with the passed ID.
Arguments:
place_id: A Roblox place ID.
Returns:
A Place.
"""
places = await self.get_places(place_ids=[place_id])
try:
return places[0]
except IndexError:
raise PlaceNotFound("Invalid place.") from None
get_places(self, place_ids: List[int]) -> List[roblox.places.Place]
async
¶
Grabs a list of places corresponding to each ID in the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
place_ids |
List[int] |
A list of Roblox place IDs. |
required |
Returns:
Type | Description |
---|---|
List[roblox.places.Place] |
A list of Places. |
Source code in roblox/client.py
async def get_places(self, place_ids: List[int]) -> List[Place]:
"""
Grabs a list of places corresponding to each ID in the list.
Arguments:
place_ids: A list of Roblox place IDs.
Returns:
A list of Places.
"""
places_response = await self._requests.get(
url=self._shared.url_generator.get_url(
"games", f"v1/games/multiget-place-details"
),
params={"placeIds": place_ids},
)
places_data = places_response.json()
return [
Place(shared=self._shared, data=place_data) for place_data in places_data
]
get_plugin(self, plugin_id: int) -> Plugin
async
¶
Grabs a plugin with the passed ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
plugin_id |
int |
A Roblox plugin ID. |
required |
Returns:
Type | Description |
---|---|
Plugin |
A Plugin. |
Source code in roblox/client.py
async def get_plugin(self, plugin_id: int) -> Plugin:
"""
Grabs a plugin with the passed ID.
Arguments:
plugin_id: A Roblox plugin ID.
Returns:
A Plugin.
"""
plugins = await self.get_plugins([plugin_id])
try:
return plugins[0]
except IndexError:
raise PluginNotFound("Invalid plugin.") from None
get_plugins(self, plugin_ids: List[int]) -> List[roblox.plugins.Plugin]
async
¶
Grabs a list of plugins corresponding to each ID in the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
plugin_ids |
List[int] |
A list of Roblox plugin IDs. |
required |
Returns:
Type | Description |
---|---|
List[roblox.plugins.Plugin] |
A list of Plugins. |
Source code in roblox/client.py
async def get_plugins(self, plugin_ids: List[int]) -> List[Plugin]:
"""
Grabs a list of plugins corresponding to each ID in the list.
Arguments:
plugin_ids: A list of Roblox plugin IDs.
Returns:
A list of Plugins.
"""
plugins_response = await self._requests.get(
url=self._shared.url_generator.get_url(
"develop", "v1/plugins"
),
params={
"pluginIds": plugin_ids
}
)
plugins_data = plugins_response.json()["data"]
return [Plugin(shared=self._shared, data=plugin_data) for plugin_data in plugins_data]
get_universe(self, universe_id: int) -> Universe
async
¶
Gets a universe with the passed ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
universe_id |
int |
A Roblox universe ID. |
required |
Returns:
Type | Description |
---|---|
Universe |
A Universe. |
Source code in roblox/client.py
async def get_universe(self, universe_id: int) -> Universe:
"""
Gets a universe with the passed ID.
Arguments:
universe_id: A Roblox universe ID.
Returns:
A Universe.
"""
universes = await self.get_universes(universe_ids=[universe_id])
try:
return universes[0]
except IndexError:
raise UniverseNotFound("Invalid universe.") from None
get_universes(self, universe_ids: List[int]) -> List[roblox.universes.Universe]
async
¶
Grabs a list of universes corresponding to each ID in the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
universe_ids |
List[int] |
A list of Roblox universe IDs. |
required |
Returns:
Type | Description |
---|---|
List[roblox.universes.Universe] |
A list of Universes. |
Source code in roblox/client.py
async def get_universes(self, universe_ids: List[int]) -> List[Universe]:
"""
Grabs a list of universes corresponding to each ID in the list.
Arguments:
universe_ids: A list of Roblox universe IDs.
Returns:
A list of Universes.
"""
universes_response = await self._requests.get(
url=self._shared.url_generator.get_url("games", "v1/games"),
params={"universeIds": universe_ids},
)
universes_data = universes_response.json()["data"]
return [
Universe(shared=self._shared, data=universe_data)
for universe_data in universes_data
]
get_user(self, user_id: int) -> User
async
¶
Gets a user with the specified user ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
user_id |
int |
A Roblox user ID. |
required |
Returns:
Type | Description |
---|---|
User |
A user object. |
Source code in roblox/client.py
async def get_user(self, user_id: int) -> User:
"""
Gets a user with the specified user ID.
Arguments:
user_id: A Roblox user ID.
Returns:
A user object.
"""
try:
user_response = await self._requests.get(
url=self._shared.url_generator.get_url("users", f"v1/users/{user_id}")
)
except NotFound as exception:
raise UserNotFound(
message="Invalid user.",
response=exception.response
) from None
user_data = user_response.json()
return User(shared=self._shared, data=user_data)
get_user_by_username(self, username: str, exclude_banned_users: bool = False, expand: bool = True) -> Union[roblox.partials.partialuser.RequestedUsernamePartialUser, roblox.users.User]
async
¶
Grabs a user corresponding to the passed username.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
username |
str |
A Roblox username. |
required |
exclude_banned_users |
bool |
Whether to exclude banned users from the data. |
False |
expand |
bool |
Whether to return a User (2 requests) rather than a RequestedUsernamePartialUser (1 request) |
True |
Returns:
Type | Description |
---|---|
Union[roblox.partials.partialuser.RequestedUsernamePartialUser, roblox.users.User] |
A User or RequestedUsernamePartialUser depending on the expand argument. |
Source code in roblox/client.py
async def get_user_by_username(
self, username: str, exclude_banned_users: bool = False, expand: bool = True
) -> Union[RequestedUsernamePartialUser, User]:
"""
Grabs a user corresponding to the passed username.
Arguments:
username: A Roblox username.
exclude_banned_users: Whether to exclude banned users from the data.
expand: Whether to return a User (2 requests) rather than a RequestedUsernamePartialUser (1 request)
Returns:
A User or RequestedUsernamePartialUser depending on the expand argument.
"""
users = await self.get_users_by_usernames(
usernames=[username],
exclude_banned_users=exclude_banned_users,
expand=expand,
)
try:
return users[0]
except IndexError:
raise UserNotFound("Invalid username.") from None
get_users(self, user_ids: List[int], exclude_banned_users: bool = False, expand: bool = False) -> Union[List[roblox.partials.partialuser.PartialUser], List[roblox.users.User]]
async
¶
Grabs a list of users corresponding to each user ID in the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
user_ids |
List[int] |
A list of Roblox user IDs. |
required |
exclude_banned_users |
bool |
Whether to exclude banned users from the data. |
False |
expand |
bool |
Whether to return a list of Users (2 requests) rather than PartialUsers (1 request) |
False |
Returns:
Type | Description |
---|---|
Union[List[roblox.partials.partialuser.PartialUser], List[roblox.users.User]] |
A List of Users or partial users. |
Source code in roblox/client.py
async def get_users(
self,
user_ids: List[int],
exclude_banned_users: bool = False,
expand: bool = False,
) -> Union[List[PartialUser], List[User]]:
"""
Grabs a list of users corresponding to each user ID in the list.
Arguments:
user_ids: A list of Roblox user IDs.
exclude_banned_users: Whether to exclude banned users from the data.
expand: Whether to return a list of Users (2 requests) rather than PartialUsers (1 request)
Returns:
A List of Users or partial users.
"""
users_response = await self._requests.post(
url=self._shared.url_generator.get_url("users", f"v1/users"),
json={"userIds": user_ids, "excludeBannedUsers": exclude_banned_users},
)
users_data = users_response.json()["data"]
if expand:
return [await self.get_user(user_data["id"]) for user_data in users_data]
else:
return [
PartialUser(shared=self._shared, data=user_data)
for user_data in users_data
]
get_users_by_usernames(self, usernames: List[str], exclude_banned_users: bool = False, expand: bool = False) -> Union[List[roblox.partials.partialuser.RequestedUsernamePartialUser], List[roblox.users.User]]
async
¶
Grabs a list of users corresponding to each username in the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
usernames |
List[str] |
A list of Roblox usernames. |
required |
exclude_banned_users |
bool |
Whether to exclude banned users from the data. |
False |
expand |
bool |
Whether to return a list of Users (2 requests) rather than RequestedUsernamePartialUsers (1 request) |
False |
Returns:
Type | Description |
---|---|
Union[List[roblox.partials.partialuser.RequestedUsernamePartialUser], List[roblox.users.User]] |
A list of User or RequestedUsernamePartialUser, depending on the expand argument. |
Source code in roblox/client.py
async def get_users_by_usernames(
self,
usernames: List[str],
exclude_banned_users: bool = False,
expand: bool = False,
) -> Union[List[RequestedUsernamePartialUser], List[User]]:
"""
Grabs a list of users corresponding to each username in the list.
Arguments:
usernames: A list of Roblox usernames.
exclude_banned_users: Whether to exclude banned users from the data.
expand: Whether to return a list of Users (2 requests) rather than RequestedUsernamePartialUsers (1 request)
Returns:
A list of User or RequestedUsernamePartialUser, depending on the expand argument.
"""
users_response = await self._requests.post(
url=self._shared.url_generator.get_url("users", f"v1/usernames/users"),
json={"usernames": usernames, "excludeBannedUsers": exclude_banned_users},
)
users_data = users_response.json()["data"]
if expand:
return [await self.get_user(user_data["id"]) for user_data in users_data]
else:
return [
RequestedUsernamePartialUser(shared=self._shared, data=user_data)
for user_data in users_data
]
set_token(self, token: str) -> None
¶
Authenticates the client with the passed .ROBLOSECURITY token. This method does not send any requests and will not throw if the token is invalid.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
token |
str |
A .ROBLOSECURITY token to authenticate the client with. |
required |
Source code in roblox/client.py
def set_token(self, token: str) -> None:
"""
Authenticates the client with the passed .ROBLOSECURITY token.
This method does not send any requests and will not throw if the token is invalid.
Arguments:
token: A .ROBLOSECURITY token to authenticate the client with.
"""
self._requests.session.cookies[".ROBLOSECURITY"] = token
user_search(self, keyword: str, page_size: int = 10, max_items: int = None) -> PageIterator
¶
Search for users with a keyword.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
keyword |
str |
A keyword to search for. |
required |
page_size |
int |
How many members should be returned for each page. |
10 |
max_items |
int |
The maximum items to return when looping through this object. |
None |
Returns:
Type | Description |
---|---|
PageIterator |
A PageIterator containing RequestedUsernamePartialUser. |
Source code in roblox/client.py
def user_search(self, keyword: str, page_size: int = 10,
max_items: int = None) -> PageIterator:
"""
Search for users with a keyword.
Arguments:
keyword: A keyword to search for.
page_size: How many members should be returned for each page.
max_items: The maximum items to return when looping through this object.
Returns:
A PageIterator containing RequestedUsernamePartialUser.
"""
return PageIterator(
shared=self._shared,
url=self._shared.url_generator.get_url("users", f"v1/users/search"),
page_size=page_size,
max_items=max_items,
extra_parameters={"keyword": keyword},
handler=lambda shared, data: RequestedUsernamePartialUser(shared, data),
)