Не запускается прослушивание ссылок asyncio

я пишу бота, который прослушивает ссылки в обработчике сообщений и закидывает ссылки в список, при запуске приложения включается шедулер, который для каждой ссылки создает таску и дожидается выполнения всех задач в списке, после чего шедулер засыпает на определенное количество времени. Код:

# Bot initializations.
parser = Bot(TOKEN)
dp = Dispatcher(parser)

# HTML session for data crawling.
session = AsyncHTMLSession()

# List of the tasks.
links = []
tasks = []


async def wait_for_bookmaker(link: str):
    response = await session.get(link)
    await response.html.arender()

    now_date = datetime.datetime.now().strftime('%d.%m.%Y - %H:%M')
    deadline_for_match = response.html.find('.list-details__item__date', first=True).text

    if now_date < deadline_for_match:
        bookmakers_absence_inscription = response.html.find('.nodata', first=True)

        if not bookmakers_absence_inscription:
            table_contains_bookmakers = response.html.find('tbody', first=True)
            bookmakers = table_contains_bookmakers.find('a')

            for bookmaker in bookmakers:
                if bookmaker.text == LOOKING_BOOKMAKER:
                    command_names = response.html.find('.list-breadcrumb__item__in')[-1].text

                    return await send_message_with_link_and_command_names(
                        {'command_names': command_names, 'link': link}
                    )
    else:
        return PINNACLE_LATE


async def send_message_with_link_and_command_names(data: dict):
    message_text = data['command_names'] = '\n\n' + data['link']
    await parser.send_message(chat_id=OWNER_ID, text=message_text)


async def scheduler(wait_duration: int):
    while True:
        for link in links:
            task = asyncio.create_task(wait_for_bookmaker(link))
            tasks.append(task)
    
        await asyncio.gather(*tasks)
        await asyncio.sleep(wait_duration)


@dp.message_handler(commands=['check'])
async def start_handler(message: Message):
    await message.answer(text='Бот в исправном состоянии.')


@dp.message_handler()
async def listening_to_links(message: Message):
    links.append(message.text)


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
    asyncio.run(scheduler(60))

Это должно работать так:

Пользователь отправил боту ссылку с матчем - программа ее мониторит раз в какое-то время, ожидая необходимый элемент на странице, если он появился, то бот отсылает пользователю об этом уведомление. Если же матч уже начался, то смысл искать этот элемент пропадает и мы закрываем таску.


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