Как сделать чтобы бот от игрока мог выполнять две команды одновременно

Делаю мини-игру в боте. Когда я пытаюсь сделать доход с бизнесов возникает ошибка в том, что при выполнении одной команды, а она должна работать всегда - невозможно активировать другую. Мне нужно, чтобы человек мог активировать функцию dd командой start и спокойно продолжать работать с ботом, используя другие команды.

Привёл к примеру две команды:

    @commands.command()
    async def givemedd(self, ctx):
        await ctx.channel.purge(limit=1)
        db = sqlite3.connect('bomj.db')
        cursor = db.cursor()
        cursor.execute(f"SELECT user_id, guild_id, dd FROM bomj WHERE guild_id = '{ctx.message.guild.id}' and user_id = '{ctx.message.author.id}'")
        result2 = cursor.fetchone()
        sql = ("UPDATE bomj SET dd = ? WHERE guild_id = ? and user_id = ?")
        val = (500, str(ctx.message.guild.id), str(ctx.message.author.id))
        cursor.execute(sql, val)
        db.commit()
        cursor.close()
        db.close()


    @commands.command()
    async def start(self, ctx):
        dd.dd()
# Эту функцию вызывает команда start в другом файле
def dd():
    db = sqlite3.connect('bomj.db')
    cursor = db.cursor()
    cursor.execute(f"SELECT user_id FROM bomj")
    result1 = cursor.fetchone()
    cursor.execute(f"SELECT user_id, guild_id, moneyy, dd FROM bomj")
    result = cursor.fetchone()
    if result1 is None:
        return
    if result[2] is None:
        return
    if result[3] is None: 
        return
    else:
        new_money = float(result[2] + result[3])
        sql = ("UPDATE bomj SET moneyy = ? WHERE guild_id = ? and user_id = ?")
        val = (new_money, str(result[2]), str(result[3]))
        cursor.execute(sql, val)
        db.commit()
        cursor.close()
        db.close()
        print('f')
        print(new_money)
        time.sleep(10)
    dd()

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

Автор решения: eri

Вместо рекурсии с time.sleep используйте

loop = asyncio.get_event_loop()
loop.call_later(10, dd)

Там где без сна

loop.call_soon(dd)
→ Ссылка