diff options
-rw-r--r-- | bot/cogs/antispam.py | 6 | ||||
-rw-r--r-- | bot/cogs/defcon.py | 6 | ||||
-rw-r--r-- | bot/cogs/doc.py | 6 | ||||
-rw-r--r-- | bot/cogs/logging.py | 6 | ||||
-rw-r--r-- | bot/cogs/moderation.py | 6 | ||||
-rw-r--r-- | bot/cogs/off_topic_names.py | 6 | ||||
-rw-r--r-- | bot/cogs/reddit.py | 6 | ||||
-rw-r--r-- | bot/cogs/reminders.py | 6 | ||||
-rw-r--r-- | bot/cogs/sync/cog.py | 6 |
9 files changed, 36 insertions, 18 deletions
diff --git a/bot/cogs/antispam.py b/bot/cogs/antispam.py index 8dfa0ad05..68b3cf91b 100644 --- a/bot/cogs/antispam.py +++ b/bot/cogs/antispam.py @@ -107,14 +107,16 @@ class AntiSpam(Cog): self.message_deletion_queue = dict() self.queue_consumption_tasks = dict() + bot.loop.create_task(self.prepare_cog()) + @property def mod_log(self) -> ModLog: """Allows for easy access of the ModLog cog.""" return self.bot.get_cog("ModLog") - @Cog.listener() - async def on_ready(self) -> None: + async def prepare_cog(self) -> None: """Unloads the cog and alerts admins if configuration validation failed.""" + await self.bot.wait_until_ready() if self.validation_errors: body = "**The following errors were encountered:**\n" body += "\n".join(f"- {error}" for error in self.validation_errors.values()) diff --git a/bot/cogs/defcon.py b/bot/cogs/defcon.py index 048d8a683..93d84e6b5 100644 --- a/bot/cogs/defcon.py +++ b/bot/cogs/defcon.py @@ -35,14 +35,16 @@ class Defcon(Cog): self.channel = None self.days = timedelta(days=0) + bot.loop.create_task(self.prepare_cog()) + @property def mod_log(self) -> ModLog: """Get currently loaded ModLog cog instance.""" return self.bot.get_cog("ModLog") - @Cog.listener() - async def on_ready(self) -> None: + async def prepare_cog(self) -> None: """On cog load, try to synchronize DEFCON settings to the API.""" + self.bot.wait_until_ready() self.channel = await self.bot.fetch_channel(Channels.defcon) try: response = await self.bot.api_client.get('bot/bot-settings/defcon') diff --git a/bot/cogs/doc.py b/bot/cogs/doc.py index e5c51748f..d503ea4c1 100644 --- a/bot/cogs/doc.py +++ b/bot/cogs/doc.py @@ -126,9 +126,11 @@ class Doc(commands.Cog): self.bot = bot self.inventories = {} - @commands.Cog.listener() - async def on_ready(self) -> None: + bot.loop.create_task(self.prepare_cog()) + + async def prepare_cog(self) -> None: """Refresh documentation inventory.""" + await self.bot.wait_until_ready() await self.refresh_inventory() async def update_single( diff --git a/bot/cogs/logging.py b/bot/cogs/logging.py index 8e47bcc36..25b7d77cc 100644 --- a/bot/cogs/logging.py +++ b/bot/cogs/logging.py @@ -15,9 +15,11 @@ class Logging(Cog): def __init__(self, bot: Bot): self.bot = bot - @Cog.listener() - async def on_ready(self) -> None: + bot.loop.create_task(self.prepare_cog()) + + async def prepare_cog(self) -> None: """Announce our presence to the configured devlog channel.""" + await self.bot.wait_until_ready() log.info("Bot connected!") embed = Embed(description="Connected!") diff --git a/bot/cogs/moderation.py b/bot/cogs/moderation.py index b596f36e6..79502ee1c 100644 --- a/bot/cogs/moderation.py +++ b/bot/cogs/moderation.py @@ -64,14 +64,16 @@ class Moderation(Scheduler, Cog): self._muted_role = Object(constants.Roles.muted) super().__init__() + bot.loop.create_task(self.prepare_cog()) + @property def mod_log(self) -> ModLog: """Get currently loaded ModLog cog instance.""" return self.bot.get_cog("ModLog") - @Cog.listener() - async def on_ready(self) -> None: + async def prepare_cog(self) -> None: """Schedule expiration for previous infractions.""" + await self.bot.wait_until_ready() # Schedule expiration for previous infractions infractions = await self.bot.api_client.get( 'bot/infractions', params={'active': 'true'} diff --git a/bot/cogs/off_topic_names.py b/bot/cogs/off_topic_names.py index 16717d523..eb966c737 100644 --- a/bot/cogs/off_topic_names.py +++ b/bot/cogs/off_topic_names.py @@ -75,14 +75,16 @@ class OffTopicNames(Cog): self.bot = bot self.updater_task = None + bot.loop.create_task(self.prepare_cog()) + def cog_unload(self) -> None: """Cancel any running updater tasks on cog unload.""" if self.updater_task is not None: self.updater_task.cancel() - @Cog.listener() - async def on_ready(self) -> None: + async def prepare_cog(self) -> None: """Start off-topic channel updating event loop if it hasn't already started.""" + self.bot.wait_until_ready() if self.updater_task is None: coro = update_names(self.bot) self.updater_task = self.bot.loop.create_task(coro) diff --git a/bot/cogs/reddit.py b/bot/cogs/reddit.py index 63a57c5c6..ba926e166 100644 --- a/bot/cogs/reddit.py +++ b/bot/cogs/reddit.py @@ -33,6 +33,8 @@ class Reddit(Cog): self.new_posts_task = None self.top_weekly_posts_task = None + bot.loop.create_task(self.prepare_cog()) + async def fetch_posts(self, route: str, *, amount: int = 25, params: dict = None) -> List[dict]: """A helper method to fetch a certain amount of Reddit posts at a given route.""" # Reddit's JSON responses only provide 25 posts at most. @@ -253,9 +255,9 @@ class Reddit(Cog): max_lines=15 ) - @Cog.listener() - async def on_ready(self) -> None: + async def prepare_cog(self) -> None: """Initiate reddit post event loop.""" + self.bot.wait_until_ready() self.reddit_channel = await self.bot.fetch_channel(Channels.reddit) if self.reddit_channel is not None: diff --git a/bot/cogs/reminders.py b/bot/cogs/reminders.py index 6e91d2c06..dc5536b12 100644 --- a/bot/cogs/reminders.py +++ b/bot/cogs/reminders.py @@ -30,9 +30,11 @@ class Reminders(Scheduler, Cog): self.bot = bot super().__init__() - @Cog.listener() - async def on_ready(self) -> None: + bot.loop.create_task(self.prepare_cog()) + + async def prepare_cog(self) -> None: """Get all current reminders from the API and reschedule them.""" + self.bot.wait_until_ready() response = await self.bot.api_client.get( 'bot/reminders', params={'active': 'true'} diff --git a/bot/cogs/sync/cog.py b/bot/cogs/sync/cog.py index b75fb26cd..15e671ab3 100644 --- a/bot/cogs/sync/cog.py +++ b/bot/cogs/sync/cog.py @@ -29,9 +29,11 @@ class Sync(Cog): def __init__(self, bot: Bot) -> None: self.bot = bot - @Cog.listener() - async def on_ready(self) -> None: + bot.loop.create_task(self.prepare_cog()) + + async def prepare_cog(self) -> None: """Syncs the roles/users of the guild with the database.""" + self.bot.wait_until_ready() guild = self.bot.get_guild(self.SYNC_SERVER_ID) if guild is not None: for syncer in self.ON_READY_SYNCERS: |