diff --git a/litecord/blueprints/admin_api/features.py b/litecord/blueprints/admin_api/features.py index 980016a..08898a6 100644 --- a/litecord/blueprints/admin_api/features.py +++ b/litecord/blueprints/admin_api/features.py @@ -23,6 +23,7 @@ from quart import Blueprint, current_app as app, jsonify, request from litecord.auth import admin_check from litecord.errors import BadRequest from litecord.schemas import validate, FEATURES +from litecord.blueprints.guilds import vanity_invite bp = Blueprint('features_admin', __name__) @@ -39,6 +40,19 @@ async def _features(guild_id: int): async def _update_features(guild_id: int, features: list): + if 'VANITY_URL' not in features: + existing_inv = await vanity_invite(guild_id) + + await app.db.execute(""" + DELETE FROM vanity_invites + WHERE guild_id = $1 + """, guild_id) + + await app.db.execute(""" + DELETE FROM invites + WHERE code = $1 + """, existing_inv) + await app.db.execute(""" UPDATE guilds SET features = $1 diff --git a/litecord/blueprints/guilds.py b/litecord/blueprints/guilds.py index 4c94953..29a479e 100644 --- a/litecord/blueprints/guilds.py +++ b/litecord/blueprints/guilds.py @@ -376,7 +376,8 @@ async def ack_guild(guild_id): return '', 204 -async def _vanity_inv(guild_id) -> Optional[str]: +async def vanity_invite(guild_id: int) -> Optional[str]: + """Get the vanity invite for a guild.""" return await app.db.fetchval(""" SELECT code FROM vanity_invites WHERE guild_id = $1 @@ -389,7 +390,7 @@ async def get_vanity_url(guild_id: int): user_id = await token_check() await guild_perm_check(user_id, guild_id, 'manage_guild') - inv_code = await _vanity_inv(guild_id) + inv_code = await vanity_invite(guild_id) if inv_code is None: return jsonify({'code': None}) @@ -415,7 +416,7 @@ async def change_vanity_url(guild_id: int): # store old vanity in a variable to delete it from # invites table - old_vanity = await _vanity_inv(guild_id) + old_vanity = await vanity_invite(guild_id) if old_vanity == inv_code: raise BadRequest('can not change to same invite')