Properly handle locked channel being deleted

This commit is contained in:
Zeva Rose 2022-04-19 12:05:15 -06:00
parent b8c64bae31
commit 7dcfd1aaf7

View file

@ -14,22 +14,22 @@ from jarvis_tasks.util import runat
async def _unlock(channel: GuildChannel, lock: Lock, logger: Logger) -> None: async def _unlock(channel: GuildChannel, lock: Lock, logger: Logger) -> None:
logger.debug(f"Deactivating lock {lock.id}") logger.debug(f"Deactivating lock {lock.id}")
overwrite = get(channel.permission_overwrites, id=lock.guild) try:
if overwrite and lock.original_perms: overwrite = get(channel.permission_overwrites, id=lock.guild)
overwrite.allow = lock.original_perms.allow if overwrite and lock.original_perms:
overwrite.deny = lock.original_perms.deny overwrite.allow = lock.original_perms.allow
try: overwrite.deny = lock.original_perms.deny
await channel.edit_permission(overwrite, reason="Automatic unlock") try:
except Exception: await channel.edit_permission(overwrite, reason="Automatic unlock")
logger.debug("Locked channel deleted, ignoring error") except Exception:
elif overwrite and not lock.original_perms: logger.debug("Locked channel deleted, ignoring error")
try: elif overwrite and not lock.original_perms:
await channel.delete_permission(target=overwrite, reason="Automatic unlock") await channel.delete_permission(target=overwrite, reason="Automatic unlock")
except Exception: else:
logger.debug("Locked channel deleted, ignoring error") logger.debug("Permission neither exists not existed")
else: lock.active = False
logger.debug("Permission neither exists not existed") except Exception:
lock.active = False logger.debug("Locked channel deleted, ignoring error")
await lock.commit() await lock.commit()