diff --git a/litecord/blueprints/guild/members.py b/litecord/blueprints/guild/members.py index c31e86a..fd875ca 100644 --- a/litecord/blueprints/guild/members.py +++ b/litecord/blueprints/guild/members.py @@ -170,13 +170,17 @@ async def update_nickname(guild_id): user_id = await token_check() await guild_check(user_id, guild_id) - j = await request.get_json() + j = validate(await request.get_json(), { + 'nick': {'type': 'nickname'} + }) + + nick = j['nick'] or None await app.db.execute(""" UPDATE members SET nickname = $1 WHERE user_id = $2 AND guild_id = $3 - """, j['nick'], user_id, guild_id) + """, nick, user_id, guild_id) member = await app.storage.get_member_data_one(guild_id, user_id) member.pop('joined_at') diff --git a/litecord/schemas.py b/litecord/schemas.py index 5daf249..4fc8910 100644 --- a/litecord/schemas.py +++ b/litecord/schemas.py @@ -127,6 +127,9 @@ class LitecordValidator(Validator): def _validate_type_theme(self, value: str) -> bool: return value in ['light', 'dark'] + def _validate_type_nickname(self, value: str) -> bool: + return isinstance(value, str) and len(value) in range(1, 32) + def validate(reqjson: Union[Dict, List], schema: Dict, raise_err: bool = True) -> Union[Dict, List]: @@ -350,10 +353,7 @@ ROLE_UPDATE_POSITION = { MEMBER_UPDATE = { 'nick': { - 'type': 'username', - 'minlength': 1, 'maxlength': 100, - 'required': False, - }, + 'type': 'nickname', 'required': False}, 'roles': {'type': 'list', 'required': False, 'schema': {'coerce': int}}, 'mute': {'type': 'boolean', 'required': False},