当我启动 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 则不行。
我不知道如何解决这个问题
试试这个
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())