首页 > 解决方案 > Discord Python - OpenWeatherAPI 解析天气数据

问题描述

我正在为我的机器人制作天气命令,但我无法使用请求解析天气部分,(是的,我做了 .json() 它),代码:

import requests
import discord
import random

from discord import Embed
from discord.ext import commands

colour = random.randint(0x000000, 0xffffff)

class Weather(commands.Cog):
    def __init__(self, client):
        self.client = client

    @commands.command()
    async def weather(self, ctx, *, location: str=None):
        if location:
            result = requests.get(f"http://api.openweathermap.org/data/2.5/weather?q={location}&APPID=APP ID").json()
            embed = (discord.Embed(title=f"{location} Weather",
                                    description=result,
                                    colour=colour))
            location = result["name"]
            temp = result["main"]["temp"]
            wind_speed = result["wind"]["speed"]
            visibility = result["visibility"]
            weather = result["weather"]["main"]
            description = result["weather"]["description"]
            feels_like = result["main"]["feels_like"]

            await ctx.send(f"{location}\n{temp}\n{wind_speed}\n{visibility}\n{weather}\n{description}\n{feels_like}\n")
        else:
            await ctx.send("Please provide me with a location.")

def setup(client):
    client.add_cog(Weather(client))

当我尝试解析天气时,它引发了一个错误。

discord.ext.commands.errors.CommandInvokeError:命令引发异常:TypeError:列表索引必须是整数或切片,而不是 str

我不知道为什么。但是当我尝试格式化它时,天气部分有一个“[]”在此处输入图像描述

而且我不知道如何解析它。

标签: pythonjsondiscord.pydiscord.py-rewrite

解决方案


@arundeepchohan 提供。我只需要将其编入索引(在第二个之前添加 [0])再次感谢@arundeepchohan


推荐阅读