Создание таймера с помощью discord.ext.tasks

Я хочу сделать систему создания приватных каналов. Когда пользователь заходит в спец. канал, то создаётся приватный голосовой канал и текстовый, где создатель может давать разрешение на подключение. А после выхода хозяина из голосового привата запускается таймер в минуту, если в течении минуты хозяин не зайдёт, то каналы удалятся.

Я почти сделал нужный код, но если создатель вернётся в канал, то он всё равно удалится, мне сказали сделать с помощью discord.ext.tasks, но я не умею этим пользоваться.

@bot.event
async def on_voice_state_update(member, before, after):
    if after.channel is not None:
        if after.channel.id == 992120556256247808:
            guild = bot.get_guild(642681537284014080)
            category = discord.utils.get(guild.categories, name='Приват')
            v_channel = await guild.create_voice_channel(name=f'Приват ({member.display_name})', category=category)
            t_channel = await guild.create_text_channel(name=f'Выдача прав ({member.display_name})', category=category)

            embed = discord.Embed(
                title='',
                description='Вы успешно создали свой приватный канал!\nЧтобы дать возможность заходить к вам используйте команду `/perm <user>`\nЧтобы забрать права используйте команду `/unperm <user>`',
                color=0x000000
            )
            await t_channel.send(embed=embed)

            await v_channel.set_permissions(member, connect=True, speak=True, view_channel=True, stream=True, kick_members=True, mute_members=True, priority_speaker=True)
            role = discord.utils.get(guild.roles, id=642681537284014080)
            await v_channel.set_permissions(role, view_channel=False)
            await t_channel.set_permissions(role, view_channel=False)

            await member.move_to(v_channel)
            private_post = {
                '_id': member.id,
                'text_id':t_channel.id,
                'voice_id':v_channel.id,
            }
            private.insert_one(private_post)

    if before.channel is not None and after.channel is None:
        channels = private.find_one({'_id':member.id})
        t_channel = bot.get_channel(channels['text_id'])
        v_channel = bot.get_channel(channels['voice_id'])
        if before.channel.id != v_channel.id:
            return
        await t_channel.send(f'`[PRIVATE]`: {member.mention}, ваш приват будет удалён через 1 минуту!')
        await asyncio.sleep(60)
        await t_channel.delete()
        await v_channel.delete()
        private.delete_one({'_id': member.id})

@bot.command()
async def perm(ctx, member: discord.Member):
    if ctx.channel.id == private.find_one({'text_id': ctx.channel.id})['text_id']:
        v_channel = bot.get_channel(private.find_one({'text_id': ctx.channel.id})['voice_id'])
        await v_channel.set_permissions(member, connect=True, speak=True, view_channel=True, stream=True)
        await ctx.send(f'`[PRIVATE]`: {ctx.author.mention}, вы выдали права пользователю {member.mention}')

@bot.command()
async def unperm(ctx, member: discord.Member):
    if ctx.channel.id == private.find_one({'text_id': ctx.channel.id})['text_id']:
        v_channel = bot.get_channel(private.find_one({'text_id': ctx.channel.id})['voice_id'])
        await v_channel.set_permissions(member, connect=False, speak=False, view_channel=False, stream=False)
        if member in v_channel.members:
            await member.move_to(None)
        await ctx.send(f'`[PRIVATE]`: {ctx.author.mention}, вы забрали права у пользователя {member.mention}')

Ответы (0 шт):