tasks.loop проблема с ctx

@tasks.loop(seconds=15)
async def startgame(ctx):
    amount = random.randint(5, 20)
    num1 = random.randint(1, 10)
    num2 = random.randint(1, 10)
    operator = random.choice(['+', '-', '*', '/'])
    
    embed = disnake.Embed(color=0x00ebed, title=f'Чат игра!')
    embed.add_field(name=F'Реши пример и получи {amount} билетиков ! У вас ровно 1 минута!\n', 
                        value=f'{num1} {operator} {num2}=?\n')
    embed.add_field(name=f'Решил пример?\n', 
                        value=f'Напиши правильный ответ в чат!\n')
    await ctx.send(embed=embed)



    correct_answer = eval(f'{num1}{operator}{num2}')

    async def check(message):
        return message.author == ctx.author and message.content()

    try:
        message = await bot.wait_for('message', check=check, timeout=60.0)
    except asyncio.TimeoutError:
        embed = disnake.Embed(color=0xff0000, title=f'Чат игра!')
        embed.add_field(name=F'Ой!\n', 
                        value=f'Вы не успели ответить на пример!\n' , inline=True)
        embed.add_field(name=f'Ожидайте следующей чат-игры!\n', 
                        value=f'Правильный ответ:\n'  + str(correct_answer)  , inline=True)
        await ctx.send(embed=embed)
    if message.content == str(correct_answer):
        member = message.author
        await bot.db.create_table()
        await bot.db.add_user(member)
        await bot.db.update_money(member, amount, 0)
        embed = disnake.Embed(color=0x00ff00, title=f'Чат игра!')
        embed.add_field(name=F'Правильно!\n', 
                        value=f'Вы правильно ответили на пример!\n' , inline=True)
        embed.add_field(name=f'Ваша награда: {amount} билетиков, поздравляем!\n', 
                        value=f'/balance - просмотреть свой баланс.\n' , inline=True)
        await ctx.send(embed=embed)
    else:
        embed = disnake.Embed(color=0xff0000, title=f'Чат игра!')
        embed.add_field(name=F'Ой!\n', 
                        value=f'Вы ошиблись!\n' , inline=True)
        embed.add_field(name=f'Ожидайте следующей чат-игры!\n', 
                        value=f'Правильный ответ:\n'  + str(correct_answer)  , inline=True)
        await ctx.send(embed=embed)

@bot.event
async def on_ready():
    startgame.start()

Ошибка: Unhandled exception in internal background task 'startgame'. Traceback (most recent call last): File "C:\Users\kazti\AppData\Local\Programs\Python\Python38\lib\site-packages\disnake\ext\tasks\__init__.py", line 162, in _loop await self.coro(*args, **kwargs) TypeError: startgame() missing 1 required positional argument: 'ctx'


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

Автор решения: q r t s

Функции startgame, при запуске, нужен аргумент который вы указали ctx:

async def startgame(ctx):

Соответственно, его необходимо передать:

    startgame.start(ctx)

Но, у Вас возникнет ошибка, т.к. ctx в принципе нет у функции запуска бота.

→ Ссылка