blueprints.guilds: fix guild_owner_check

- blueprints.guilds: fix create_guild_role
 - blueprints.guilds: fix giving ints in the place of snowflakes in some
    events
This commit is contained in:
Luna Mendes 2018-10-26 16:35:00 -03:00
parent a08eb0d068
commit 956498ac65
1 changed files with 18 additions and 11 deletions

View File

@ -18,7 +18,7 @@ async def guild_owner_check(user_id: int, guild_id: int):
owner_id = await app.db.fetchval(""" owner_id = await app.db.fetchval("""
SELECT owner_id SELECT owner_id
FROM guilds FROM guilds
WHERE guild_id = $1 WHERE guilds.id = $1
""", guild_id) """, guild_id)
if not owner_id: if not owner_id:
@ -73,8 +73,6 @@ async def create_role(guild_id, name: str, **kwargs):
WHERE guild_id = $1 WHERE guild_id = $1
""", guild_id) """, guild_id)
max_pos = max_pos or 0
await app.db.execute( await app.db.execute(
""" """
INSERT INTO roles (id, guild_id, name, color, INSERT INTO roles (id, guild_id, name, color,
@ -86,7 +84,11 @@ async def create_role(guild_id, name: str, **kwargs):
name, name,
dict_get(kwargs, 'color', 0), dict_get(kwargs, 'color', 0),
dict_get(kwargs, 'hoist', False), dict_get(kwargs, 'hoist', False),
max_pos + 1,
# set position = 0 when there isn't any
# other role (when we're creating the
# @everyone role)
max_pos + 1 if max_pos else 0,
dict_get(kwargs, 'permissions', default_perms), dict_get(kwargs, 'permissions', default_perms),
False, False,
dict_get(kwargs, 'mentionable', False) dict_get(kwargs, 'mentionable', False)
@ -95,7 +97,7 @@ async def create_role(guild_id, name: str, **kwargs):
role = await app.storage.get_role(new_role_id, guild_id) role = await app.storage.get_role(new_role_id, guild_id)
await app.dispatcher.dispatch_guild( await app.dispatcher.dispatch_guild(
guild_id, 'GUILD_ROLE_CREATE', { guild_id, 'GUILD_ROLE_CREATE', {
'guild_id': guild_id, 'guild_id': str(guild_id),
'role': role, 'role': role,
}) })
@ -384,9 +386,13 @@ async def create_guild_role(guild_id: int):
# TODO: use check_guild and MANAGE_ROLES permission # TODO: use check_guild and MANAGE_ROLES permission
await guild_owner_check(user_id, guild_id) await guild_owner_check(user_id, guild_id)
j = validate(await request.get_json(), ROLE_CREATE) # client can just send null
j = validate(await request.get_json() or {}, ROLE_CREATE)
role = await create_role(guild_id, j.get('name', 'new role'), **j) role_name = j['name']
j.pop('name')
role = await create_role(guild_id, role_name, **j)
return jsonify(role) return jsonify(role)
@ -513,7 +519,7 @@ async def remove_member(guild_id: int, member_id: int):
await app.dispatcher.unsub('guild', guild_id, member_id) await app.dispatcher.unsub('guild', guild_id, member_id)
await app.dispatcher.dispatch_guild(guild_id, 'GUILD_MEMBER_REMOVE', { await app.dispatcher.dispatch_guild(guild_id, 'GUILD_MEMBER_REMOVE', {
'guild': guild_id, 'guild_id': str(guild_id),
'user': await app.storage.get_user(member_id), 'user': await app.storage.get_user(member_id),
}) })
@ -569,9 +575,10 @@ async def create_ban(guild_id, member_id):
await remove_member(guild_id, member_id) await remove_member(guild_id, member_id)
await app.dispatcher.dispatch_guild(guild_id, 'GUILD_BAN_ADD', {**{ await app.dispatcher.dispatch_guild(guild_id, 'GUILD_BAN_ADD', {
'guild': guild_id, 'guild_id': str(guild_id),
}, **(await app.storage.get_user(member_id))}) 'user': await app.storage.get_user(member_id)
})
return '', 204 return '', 204