From 5ed47cacc755a915ebb1475dd98794c62e76b79b Mon Sep 17 00:00:00 2001 From: Sebastian Law <44045823+SebbyLaw@users.noreply.github.com> Date: Tue, 30 Mar 2021 17:24:28 -0700 Subject: [PATCH] Update background_task example to use ext.tasks --- examples/background_task.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/examples/background_task.py b/examples/background_task.py index a72862fbe..f2da67509 100644 --- a/examples/background_task.py +++ b/examples/background_task.py @@ -1,12 +1,16 @@ +from discord.ext import tasks + import discord -import asyncio class MyClient(discord.Client): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - # create the background task and run it in the background - self.bg_task = self.loop.create_task(self.my_background_task()) + # an attribute we can access from our task + self.counter = 0 + + # start the task to run in the background + self.my_background_task.start() async def on_ready(self): print('Logged in as') @@ -14,14 +18,15 @@ class MyClient(discord.Client): print(self.user.id) print('------') + @my_background_task.before_loop + async def before_my_task(self): + await self.wait_until_ready() # wait until the bot logs in + + @tasks.loop(seconds=60) # task runs every 60 seconds async def my_background_task(self): - await self.wait_until_ready() - counter = 0 channel = self.get_channel(1234567) # channel ID goes here - while not self.is_closed(): - counter += 1 - await channel.send(counter) - await asyncio.sleep(60) # task runs every 60 seconds + self.counter += 1 + await channel.send(counter) client = MyClient()