我不明白问题出在哪里(价格=数据[“USD”] KeyError:'USD')

问题描述 投票:0回答:1

当我启动 Telegram 机器人时,出现此错误

    response = await handler_obj.handler(*args, **partial_data)
  File "/root/Trade/bot.py", line 1265, in up_btn
    await result(call, int(callback_data.get("amount")), "\u0432\u0432\u0435\u0440\u0445")
  File "/root/Trade/bot.py", line 4499, in result
    results = await asyncio.gather(*tasks)
  File "/root/Trade/bot.py", line 290, in fetch_price
    price = data["USD"]
KeyError: 'USD'

1265线

    if up_btn:
        async with aiohttp.ClientSession() as session:
            cryptos = ["LUNA"]
            tasks = [fetch_price(session, crypto) for crypto in cryptos]
            results = await asyncio.gather(*tasks)

290线

async def fetch_price(session, crypto):
    url = f"https://min-api.cryptocompare.com/data/price?fsym={crypto}&tsyms=USD"
    async with session.get(url) as response:
        data = await response.json()
        price = data["USD"]
        return f"{price}"

第一个功能对于 BTC 有效,但对于 Luna 则不行。

我不知道如何解决这个问题

python telegram
1个回答
0
投票

试试这个

import aiohttp
import asyncio

async def fetch_price(session, crypto):
    url = f"https://min-api.cryptocompare.com/data/price?fsym={crypto}&tsyms=USD"
    async with session.get(url) as response:
        data = await response.json()
        price = data.get("USD", "Price not available")
        return f"{price}"

async def main():
    async with aiohttp.ClientSession() as session:
        crypto = "USD"
        price = await fetch_price(session, crypto)
        print(f"{crypto}: {price}")

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
© www.soinside.com 2019 - 2024. All rights reserved.