При вызове функции не хватает аргумента

При вызове функции не хватает аргумента. Нужно что-то передать, а я без понятия, что нужно передать.

url = "https://www.olx.ua/uk/"
a = 5000-7000

params = {
   'q': 'iPhone 11',  # пошук
   'category_id': 25,  # ID категорії
   'per_page': 10, # кількість результатів на сторінці
   'price': a, #Ціна
}
response = requests.get(url, params=params)


@dp.message_handler(commands=['start'])
async def cmd_start(message: types.Message):
    await message.answer("BOT START")


def get_olx_offers():
    headerss = {'Authorization': f'Bearer {api_key}'}
    response = requests.get(url, params=params, headers=headerss)

    if response.status_code == 200:
        return response.text
    else:
        print(f"Error: {response.status_code}")

async def process_offers(offers):
    for offer in offers.get('data', []):
        # Перевірка, чи підходить оголошення вашим критеріям
        if 'iPhone' in offer.get('title', '').lower() and offer.get('price', 0) <= 10000:
            print("Знайдено підходяще оголошення:")
            print(f"Назва: {offer['title']}")
            print(f"Ціна: {offer['price']} грн")
            print(f"Посилання: {offer['url']}")
            print("\n")
    await asyncio.sleep(60)



async def vidpravka(vidpravkaa):
    for vidpravkaa in vidpravkaa.get('data', []):
        if 'iPhone 11' in vidpravkaa.get('title', '').lower() and vidpravkaa.get('price', 0) <= 10000:
            message = (
                f"Знайдено підходяще оголошення:\n"
                f"Назва: {vidpravkaa['title']}\n"
                f"Ціна: {vidpravkaa['price']} грн\n"
                f"Посилання: {vidpravkaa['url']}"
            )
            await bot.send_message(chat_id=message.from_user.id, text=message)
            await asyncio.sleep(10)


process_offers()
TypeError: process_offers() missing 1 required positional argument: 'offer]

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

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

В вашем коде функция process_offers принимает один аргумент offers, но при вызове функции у вас отсутствует передача этого аргумента. Вы должны передать какой-то объект типа, ожидаемого функцией process_offers.

Например, если у вас есть словарь с ключом 'data', который содержит список предложений, вы можете вызвать функцию следующим образом:

import asyncio

# Предположим, что у вас есть переменная offers_dict, содержащая данные
offers_dict = {
    'data': [
        {'title': 'Iphone X', 'price': 9500, 'url': 'http://example.com/iphone-x'},
        # Другие предложения
    ]
}

async def process_offers(offers):
    for offer in offers.get('data', []):
        if 'Iphone' in offer.get('title', '').lower() and offer.get('price', 0) <= 10000:
            print("Знайдено пiдходяще оголошення")
            print(f"Назва: {offer['title']}")
            print(f"Цiна: {offer['price']}")
            print(f"Посилання: {offer['url']}")
            print("\n")
    await asyncio.sleep(60)

# Передача словаря в качестве аргумента
asyncio.run(process_offers(offers_dict))

Здесь offers_dict передается в качестве аргумента функции process_offers. Пожалуйста, замените offers_dict на ваш фактический объект данных, который вы хотите обработать в функции.

→ Ссылка