def set_attributes(login: Roll20Login, character_id: str,
attributes: Mapping[str, Union[str, int]],
attribute_position: AttributePosition = AttributePosition.current) -> None:
attribute_ids = get_attributes_ids(login=login, character_id=character_id)
for attribute_name, attribute_value in attributes.items():
# Cast int values to str.
attribute_value = str(attribute_value)
attribute_id = attribute_ids[attribute_name]
url = (f'{login.firebase_root}{login.campaign_path}/char-attribs/char/{character_id}/'
f'{attribute_id}/.json?auth={login.auth_token}')
response = requests.patch(url,
data=json.dumps({attribute_position.value: attribute_value}))
if response.status_code == requests.status_codes.codes.UNAUTHORIZED:
raise Roll20PermissionError('Permission denied trying to set attribute.')
else:
updated_attribute = json.loads(response.text)[attribute_position.value]
logger.debug(f'New {attribute_name}: {updated_attribute}')
评论列表
文章目录