Soy nuevo en stack overflow y programación en su conjunto, así que por favor ayuda, sería muy apreciado: D. así que tengo un bot de discordia y quiero hacer un comando que te dé una imagen de gato al azar. aquí está el código que tengo para el comando:

@client.command()
async def catpics(ctx):
  response = requests.get('https://api.thecatapi.com/v1/images/search')
  data = response.json()
  embed=discord.Embed(title="Your Requested Cat Pic! <:cat:840334556133589042>", description="Here's your cat pic.", color=discord.Color.blue())
  embed.set_image(url=data['url'])
  await ctx.send(embed=embed)

Cuando ejecuto el código, me da este error: "Archivo" main.py ", línea 112, en catpics embed.set_image (url = data ['url']) TypeError: los índices de lista deben ser enteros o rebanadas, no str " , ¿Qué significa esto? ¿Cómo puedo solucionar esto?

-1
Splode 8 may. 2021 a las 00:37

1 respuesta

La mejor respuesta

Eso es porque response.json() devuelve una lista de diccionarios y no puede indexar una lista con una cadena.

>>> response = requests.get('https://api.thecatapi.com/v1/images/search')
>>> response.json()
[{'breeds': [], 'id': 'dn7', 'url': 'https://cdn2.thecatapi.com/images/dn7.jpg', 'width': 795, 'height': 1200}]

Simplemente reemplace embed.set_image(url=data['url']) con embed.set_image(url=data[0]['url']).

0
Enzo 7 may. 2021 a las 21:41