async def get_member_by_username(self, name): user = await self.cso.client.get_user_by_username(name) member_req = await self.requests.get( url=endpoint + f"/v2/users/{user.id}/groups/roles") data = member_req.json() # Find group in list. group_data = None for group in data['data']: if group['group']['id'] == self.id: group_data = group break # Check if user is in group. if not group_data: raise NotFound(f"The user {name} was not found in group {self.id}") # Create data to return. role = Role(self.cso, self, group_data['role']) member = Member(self.cso, user.id, user.name, self, role) return member
async def setrole(self, role_num): """ Sets the users role to specified role using role number (1-255). Parameters ---------- role_num : int Role number (1-255) Returns ------- bool """ roles = await self.group.get_roles() rank_role = None for role in roles: if role.rank == role_num: rank_role = role break if not rank_role: raise NotFound(f"Role {role_num} not found") return await self.setrank(rank_role.id)
async def get_member_by_id(self, roblox_id): # Get list of group user is in. member_req = await self.requests.get( url=endpoint + f"/v2/users/{roblox_id}/groups/roles" ) data = member_req.json() # Find group in list. group_data = None for group in data['data']: if group['group']['id'] == self.id: group_data = group break # Check if user is in group. if not group_data: raise NotFound(f"The user {roblox_id} was not found in group {self.id}") # Create data to return. role = Role(self.cso, self, group_data['role']) member = Member(self.cso, roblox_id, "", self, role) return member
async def change_rank(self, num) -> Tuple[Role, Role]: """ Changes the users rank specified by a number. If num is 1 the users role will go up by 1. If num is -1 the users role will go down by 1. Parameters ---------- num : int How much to change the rank by. """ await self.update_role() roles = await self.group.get_roles() old_role = copy.copy(self.role) role_counter = -1 for group_role in roles: role_counter += 1 if group_role.rank == self.role.rank: break if not roles: raise NotFound(f"User {self.id} is not in group {self.group.id}") await self.setrank(roles[role_counter + num].id) self.role = roles[role_counter + num].id return old_role, roles[role_counter + num]