Ошибка в Aiogram пишет "AttributeError: 'Dispatcher' object has no attribute 'answer' " почему?

Рейтинг: 0Ответов: 0Опубликовано: 25.07.2023

Код бота, который откликается на новые вакансии на сайте. Использовал асинхронную версию schedule - aioschedule, чтобы действие функции повторялось каждые 3 минуты. Однако, после первого выполнения возникает ошибка "AttributeError: 'Dispatcher' object has no attribute 'answer' " подскажите как исправить.

@dp.message_handler(commands="start")
async def start(message: types):
    await bot.send_message(message.chat.id, 'Выберите специальность')


@dp.message_handler()
async def launch(message: types.Message):
              await message.answer('Запрос обрабатывается...')
"""Отправка запроса на сервер"""
opt = Options()
opt.add_experimental_option("debuggerAddress", "localhost:8989")
driver = webdriver.Chrome(executable_path=r"C:\Users\vusi4\Desktop\chromedriver_win32 (1)",
                          chrome_options=opt)
driver.get("https://spb.hh.ru/")
     """Переданный пользователем текст"""
user_msg = message.text
"""Парсинг данных"""
input_tab = driver.find_element(By.XPATH, "//*[@id='a11y-search-input']")
input_tab.send_keys(user_msg)
input_tab.send_keys(Keys.ENTER)

with open('vacancy.json', encoding='utf-8') as f:
    data = json.load(f)

    respond = {}
    jobs = driver.find_elements(By.CSS_SELECTOR, "[class='serp-item']")
    for job in jobs:
        link = job.find_element(By.CSS_SELECTOR, "[data-qa='serp- 
                                                 item__title']").get_attribute('href')
        post_id = re.sub(r'\D', '', link)

        if post_id in data:
            continue

        else:
            link = job.find_element(By.CSS_SELECTOR, "[data-qa='serp- 
                                                  item__title']").get_attribute('href')
            post_id = re.sub(r'\D', '', link)

            title = job.find_element(By.CSS_SELECTOR, "[data-qa='serp- 
                                                                 item__title']").text
            experience = job.find_element(By.CSS_SELECTOR,
                                          "[data-qa='vacancy-serp__vacancy-work- 
                                                                    experience']").text

            data[post_id] = {'наименование': title,
                             'ссылка': link,
                             'опыт': experience
                             }

            respond[post_id] = {'наименование': title,
                                'ссылка': link,
                                'опыт': experience
                                }

            sleep(4)
            #код, который откликается на новые вакансии
            job.find_element(By.CSS_SELECTOR, "[data-qa='vacancy- 
                                                     serp__vacancy_response']").click()
            sleep(2)
            await message.answer('Есть новый отклик')
     
 with open("vacancy.json", "w", encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)

    await message.answer(
        'Новых вакансий еще не найдено. Можете посмотреть на ранее отправленные отклики 
                                                             по ссылке внизу',
                                                 reply_markup=go_to_responses)


  async def scheduler(message: types.Message):
       aioschedule.every(3).minutes.do(launch, message=message)
     while True:
          await aioschedule.run_pending()
          await asyncio.sleep(2)



 async def on_startup(message: types.Message):
      asyncio.create_task(scheduler(message=message))


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=False, on_startup=on_startup)

Ответы

Ответов пока нет.