Авто загрузка файлов с Яндекс Диска

Мне нужно как-то реализовать функцию авто загрузки определенного файла с яндекс диска, имеющее такое название : "<завтрашняя дата>.docx", и нужно чтобы она вызывалась каждый день кроме субботы в 00:10 часов вместе с работай телеграм бота, работающего на библиотеке aiogram версии 3.1.1 . Я испробывал много методов, как от обычного schedule.every().monday.at("00:10").do(download_tomorrow), так и такого-же способа, но на асинхронной библиотеке aioschedule, но ни один из способов не позволяет мне скачивать файл с таким названием параллельно работы бота. Есть ли какой либо способ решить эту проблему? мой код функции выглядит так:

def download_tomorrow():
    with yadisk:
        yadisk.download(f"/ДТК/Расписание занятий/Расписание занятий 2023-2024/Февраль/Расписание " + str(tomorrow_date) + ".docx", f"schedule/" + tomorrow_date + ".docx")

#download tomorrow every day (синхронная библеотека)
schedule.every().sunday.at("00:10").do(download_tomorrow)
schedule.every().monday.at("00:10").do(download_tomorrow)
schedule.every().tuesday.at("00:10").do(download_tomorrow)
schedule.every().wednesday.at("00:10").do(download_tomorrow)
schedule.every().thursday.at("00:10").do(download_tomorrow)
schedule.every().friday.at("00:10").do(download_tomorrow)

#на асинхронной библиотеке 

async def download_tomorrow():
    with yadisk:
        yadisk.download(f"/ДТК/Расписание занятий/Расписание занятий 2023-2024/Февраль/Расписание " + str(tomorrow_date) + ".docx", f"schedule/" + tomorrow_date + ".11.docx")
    asyncio.sleep(1)
for i in range(1,3):
    schedule.every().sunday.at("00:10").do(download_tomorrow)
loop = asyncio.get_event_loop()

while True:
    loop.run_until_complete(schedule.run_pending())
    time.sleep(0.1)

пишу на питоне, из всей основной работы бота осталось сделать только это и авто рассылку утром каждого дня кроме воскресения файла с именованием "<сегодняшняя дата>.docx", а также каждый вечер кроме субботы файл с именем "<завтрашняя дата>.docx" Буду благодарен если поможете с написанием


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

Автор решения: Сергей Ш

минимально-воспроизводимый пример:

import asyncio
import aioschedule
from aiogram import Bot, Dispatcher

bot = Bot(token="214584065")
dp = Dispatcher(bot)

async def download_tomorrow():
    print('download_tomorrow')

async def scheduler():
    aioschedule.every().minutes.do(download_tomorrow)
    while True:
        await aioschedule.run_pending()
        await asyncio.sleep(1)

async def main():
    asyncio.create_task(scheduler())
    await dp.start_polling(bot)

asyncio.run(main())
→ Ссылка