diff options
author | 2019-12-25 13:49:35 -0800 | |
---|---|---|
committer | 2020-02-12 10:07:46 -0800 | |
commit | e1c4471e4497db8918d27195ed4485893bc1b4e9 (patch) | |
tree | e0c6eda9fd3030dca9ad039d128b6a85f48d9a9b | |
parent | Sync: fix confirmation reaction check (diff) |
Sync: add trace and debug logging
-rw-r--r-- | bot/cogs/sync/syncers.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/bot/cogs/sync/syncers.py b/bot/cogs/sync/syncers.py index 2bf551bc7..08da569d8 100644 --- a/bot/cogs/sync/syncers.py +++ b/bot/cogs/sync/syncers.py @@ -40,6 +40,8 @@ class Syncer(abc.ABC): If a message is given, it is edited to display the prompt and reactions. Otherwise, a new message is sent to the dev-core channel and mentions the core developers role. """ + log.trace(f"Sending {self.name} sync confirmation prompt.") + allowed_emoji = (constants.Emojis.check_mark, constants.Emojis.cross_mark) msg_content = ( f'Possible cache issue while syncing {self.name}s. ' @@ -49,9 +51,11 @@ class Syncer(abc.ABC): # Send to core developers if it's an automatic sync. if not message: + log.trace("Message not provided for confirmation; creating a new one in dev-core.") channel = self.bot.get_channel(constants.Channels.devcore) if not channel: + log.debug("Failed to get the dev-core channel from cache; attempting to fetch it.") try: channel = await self.bot.fetch_channel(constants.Channels.devcore) except HTTPException: @@ -66,6 +70,7 @@ class Syncer(abc.ABC): await message.edit(content=msg_content) # Add the initial reactions. + log.trace(f"Adding reactions to {self.name} syncer confirmation prompt.") for emoji in allowed_emoji: await message.add_reaction(emoji) @@ -81,6 +86,7 @@ class Syncer(abc.ABC): reaction = None try: + log.trace(f"Waiting for a reaction to the {self.name} syncer confirmation prompt.") reaction, _ = await self.bot.wait_for( 'reaction_add', check=check, @@ -88,9 +94,10 @@ class Syncer(abc.ABC): ) except TimeoutError: # reaction will remain none thus sync will be aborted in the finally block below. - pass + log.debug(f"The {self.name} syncer confirmation prompt timed out.") finally: if str(reaction) == constants.Emojis.check_mark: + log.trace(f"The {self.name} syncer was confirmed.") await message.edit(content=f':ok_hand: {self.name} sync will proceed.') return True else: @@ -127,6 +134,7 @@ class Syncer(abc.ABC): diff = await self._get_diff(guild) totals = {k: len(v) for k, v in diff._asdict().items() if v is not None} + log.trace(f"Determining if confirmation prompt should be sent for {self.name} syncer.") if sum(totals.values()) > self.MAX_DIFF and not await self._confirm(author, message): return # Sync aborted. @@ -147,6 +155,7 @@ class RoleSyncer(Syncer): async def _get_diff(self, guild: Guild) -> _Diff: """Return the difference of roles between the cache of `guild` and the database.""" + log.trace("Getting the diff for roles.") roles = await self.bot.api_client.get('bot/roles') # Pack DB roles and guild roles into one common, hashable format. @@ -178,12 +187,15 @@ class RoleSyncer(Syncer): async def _sync(self, diff: _Diff) -> None: """Synchronise the database with the role cache of `guild`.""" + log.trace("Syncing created roles...") for role in diff.created: await self.bot.api_client.post('bot/roles', json={**role._asdict()}) + log.trace("Syncing updated roles...") for role in diff.updated: await self.bot.api_client.put(f'bot/roles/{role.id}', json={**role._asdict()}) + log.trace("Syncing deleted roles...") for role in diff.deleted: await self.bot.api_client.delete(f'bot/roles/{role.id}') @@ -195,6 +207,7 @@ class UserSyncer(Syncer): async def _get_diff(self, guild: Guild) -> _Diff: """Return the difference of users between the cache of `guild` and the database.""" + log.trace("Getting the diff for users.") users = await self.bot.api_client.get('bot/users') # Pack DB roles and guild roles into one common, hashable format. @@ -247,8 +260,10 @@ class UserSyncer(Syncer): async def _sync(self, diff: _Diff) -> None: """Synchronise the database with the user cache of `guild`.""" + log.trace("Syncing created users...") for user in diff.created: await self.bot.api_client.post('bot/users', json={**user._asdict()}) + log.trace("Syncing updated users...") for user in diff.updated: await self.bot.api_client.put(f'bot/users/{user.id}', json={**user._asdict()}) |