Ошибка "missing 1 required positional argument"

Рейтинг: -1Ответов: 1Опубликовано: 31.03.2023

Пишу напоминалку дней рождения

async def check_birthday(message: types.Messageessage):
    try:
        df = pd.read_excel(r'f:\1.xlsx', sheet_name='Лист1', usecols=['Дата рождения', 'ФИО'])
        current_date = date.today()
        birthday_people = []
        for index, row in df.iterrows():
            if current_date.strftime('%m-%d') == row['Дата рождения'].strftime('%m-%d'):
                birthday_people.append(row['ФИО'])
        if len(birthday_people) > 0:
            message_text = f'Сегодня день рождения у: {", ".join(birthday_people)}! Поздравляем!'
            await message.answer(message_text)
        else:
            await message.answer('Сегодня нет именинников.')
    except Exception as e:
        await message.answer(f'Произошла ошибка: {e}.')

async def scheduler():
    aioschedule.every().day.at("14:04").do(check_birthday)
    while True:
        await aioschedule.run_pending()
        await asyncio.sleep(1)
async def on_startup(_):
    asyncio.create_task(scheduler())

при тестовом запуске по шедулеру получаю ошибку

  ret = await self.job_func()
TypeError: check_birthday() missing 1 required positional argument: 'message'

Что делаю не так?

Ответы

▲ 1

В функции check_birthday ожидается аргумент message, который не был передан, можно использовать явное ожидание сообщения с помощью bot.send_message

async def check_birthday():
    try:
        # получение даты рождения и имени из Excel файла
        df = pd.read_excel(r'f:\1.xlsx', sheet_name='Лист1', usecols=['Дата рождения', 'ФИО'])
        current_date = date.today()
        birthday_people = []
        # поиск именинников
        for index, row in df.iterrows():
            if current_date.strftime('%m-%d') == row['Дата рождения'].strftime('%m-%d'):
                birthday_people.append(row['ФИО'])
        # отправка сообщения
        if len(birthday_people) > 0:
            message_text = f'Сегодня день рождения у: {", ".join(birthday_people)}! Поздравляем!'
            await bot.send_message(chat_id, message_text)
        else:
            await bot.send_message(chat_id, 'Сегодня нет именинников.')
    except Exception as e:
        await bot.send_message(chat_id, f'Произошла ошибка: {e}.')