Module ro_py.wall
Expand source code
import iso8601
from typing import List
from ro_py.captcha import UnsolvedCaptcha
from ro_py.bases.baseuser import PartialUser
from ro_py.utilities.pages import Pages, SortOrder
from ro_py.utilities.url import url
endpoint = url("groups")
class WallPost:
"""
Represents a Roblox wall post.
"""
def __init__(self, cso, wall_data, group):
self.cso = cso
self.requests = cso.requests
self.group = group
self.id = wall_data['id']
self.body = wall_data['body']
self.created = iso8601.parse_date(wall_data['created'])
self.updated = iso8601.parse_date(wall_data['updated'])
if wall_data['poster']:
self.poster = PartialUser(self.cso, wall_data['poster']['user'])
else:
self.poster = None
async def delete(self):
wall_req = await self.requests.delete(
url=endpoint + f"/v1/groups/{self.id}/wall/posts/{self.id}"
)
return wall_req.status == 200
def wall_post_handler(requests, this_page, args) -> List[WallPost]:
wall_posts = []
for wall_post in this_page:
wall_posts.append(WallPost(requests, wall_post, args))
return wall_posts
class Wall:
def __init__(self, cso, group):
self.cso = cso
self.requests = cso.requests
self.group = group
async def get_posts(self, sort_order=SortOrder.Ascending, limit=100):
wall_req = Pages(
cso=self.cso,
url=endpoint + f"/v2/groups/{self.group.id}/wall/posts",
sort_order=sort_order,
limit=limit,
handler=wall_post_handler,
handler_args=self.group
)
await wall_req.get_page()
return wall_req
async def post(self, content, captcha_key=None):
data = {
"body": content
}
if captcha_key:
data['captchaProvider'] = "PROVIDER_ARKOSE_LABS"
data['captchaToken'] = captcha_key
post_req = await self.requests.post(
url=endpoint + f"/v1/groups/2695946/wall/posts",
data=data,
quickreturn=True
)
if post_req.status_code == 403:
return UnsolvedCaptcha(pkey="63E4117F-E727-42B4-6DAA-C8448E9B137F")
else:
return post_req.status_code == 200
Functions
def wall_post_handler(requests, this_page, args) ‑> List[WallPost]
-
Expand source code
def wall_post_handler(requests, this_page, args) -> List[WallPost]: wall_posts = [] for wall_post in this_page: wall_posts.append(WallPost(requests, wall_post, args)) return wall_posts
Classes
class Wall (cso, group)
-
Expand source code
class Wall: def __init__(self, cso, group): self.cso = cso self.requests = cso.requests self.group = group async def get_posts(self, sort_order=SortOrder.Ascending, limit=100): wall_req = Pages( cso=self.cso, url=endpoint + f"/v2/groups/{self.group.id}/wall/posts", sort_order=sort_order, limit=limit, handler=wall_post_handler, handler_args=self.group ) await wall_req.get_page() return wall_req async def post(self, content, captcha_key=None): data = { "body": content } if captcha_key: data['captchaProvider'] = "PROVIDER_ARKOSE_LABS" data['captchaToken'] = captcha_key post_req = await self.requests.post( url=endpoint + f"/v1/groups/2695946/wall/posts", data=data, quickreturn=True ) if post_req.status_code == 403: return UnsolvedCaptcha(pkey="63E4117F-E727-42B4-6DAA-C8448E9B137F") else: return post_req.status_code == 200
Methods
async def get_posts(self, sort_order=SortOrder.Ascending, limit=100)
-
Expand source code
async def get_posts(self, sort_order=SortOrder.Ascending, limit=100): wall_req = Pages( cso=self.cso, url=endpoint + f"/v2/groups/{self.group.id}/wall/posts", sort_order=sort_order, limit=limit, handler=wall_post_handler, handler_args=self.group ) await wall_req.get_page() return wall_req
async def post(self, content, captcha_key=None)
-
Expand source code
async def post(self, content, captcha_key=None): data = { "body": content } if captcha_key: data['captchaProvider'] = "PROVIDER_ARKOSE_LABS" data['captchaToken'] = captcha_key post_req = await self.requests.post( url=endpoint + f"/v1/groups/2695946/wall/posts", data=data, quickreturn=True ) if post_req.status_code == 403: return UnsolvedCaptcha(pkey="63E4117F-E727-42B4-6DAA-C8448E9B137F") else: return post_req.status_code == 200
class WallPost (cso, wall_data, group)
-
Represents a Roblox wall post.
Expand source code
class WallPost: """ Represents a Roblox wall post. """ def __init__(self, cso, wall_data, group): self.cso = cso self.requests = cso.requests self.group = group self.id = wall_data['id'] self.body = wall_data['body'] self.created = iso8601.parse_date(wall_data['created']) self.updated = iso8601.parse_date(wall_data['updated']) if wall_data['poster']: self.poster = PartialUser(self.cso, wall_data['poster']['user']) else: self.poster = None async def delete(self): wall_req = await self.requests.delete( url=endpoint + f"/v1/groups/{self.id}/wall/posts/{self.id}" ) return wall_req.status == 200
Methods
async def delete(self)
-
Expand source code
async def delete(self): wall_req = await self.requests.delete( url=endpoint + f"/v1/groups/{self.id}/wall/posts/{self.id}" ) return wall_req.status == 200