Merge pull request #15 from KevinCaires/vinke

ADD - Embed on weather command.
pull/3/head
Kevin Caires 3 years ago committed by GitHub
commit 08d63c93af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -5,7 +5,7 @@ import logging
from random import choice
from discord.ext import commands
from discord import Intents
from discord import Intents, Embed
from settings.config import IMAGE_TYPES, PERMISSIONS
from utils.database import get_by_id, get_quotes, remove_quote, set_quote, count_quotes
@ -186,6 +186,7 @@ async def info(bot: object) -> str:
return await bot.send(msg)
@client.command(aliases=['w'])
async def weather(bot: object, *location: str) -> str:
"""
@ -224,8 +225,42 @@ async def weather(bot: object, *location: str) -> str:
lat, lon = geocode(city, state, country)
weatherdata = getweatherdata(lat, lon)
msg = displayweather(weatherdata)
return await bot.send(msg)
default_msg = 'No data!'
embed = Embed(collor=0x623CA6, type='rich')
embed.add_field(
name='City',
value=msg.name,
)
embed.add_field(
name='Description',
value=msg.description if msg.description else default_msg,
)
embed.add_field(
name='Temperature ºC',
value=msg.temp if msg.temp else default_msg,
)
embed.add_field(
name='Feels like ºC',
value=msg.feels_like if msg.feels_like else default_msg,
)
embed.add_field(
name='Humidity %',
value=msg.humidity if msg.humidity else default_msg,
)
embed.add_field(
name='Cloud coverage %',
value=msg.cloud_coverage if msg.cloud_coverage else default_msg,
)
embed.add_field(
name='Wind gusts m/s',
value=msg.wind_gusts if msg.wind_gusts else default_msg,
)
embed.add_field(
name='Wind speed m/s',
value=msg.wind_speed if msg.wind_speed else default_msg,
)
return await bot.send('**`Weather`**', embed=embed)
@client.command(aliases=['qcontains', 'qsearch'])

@ -1,9 +1,10 @@
import json
import logging
import urllib.request
from collections import namedtuple
from settings.config import OW_API_CONFIG
import urllib.request
import json
def geocode(city = 'curitiba', state = 'parana', country = 'BR') -> str:
"""
@ -40,58 +41,64 @@ def getweatherdata(lat, lon):
return weatherdata
def displayweather(wdata):
def displayweather(wdata) -> object:
"""
"Prettifies" the output for discord
"""
try:
wdata['weather'][0]['description']
description = wdata['weather'][0]['description']
except:
description = "No data on description"
description = None
try:
wdata['main']['temp']
temp = wdata['main']['temp']
tempmsg = f"Temperature is {temp}ºC"
tempmsg = wdata['main']['temp']
except:
tempmsg = "No data on temperature"
tempmsg = None
try:
wdata['main']['feels_like']
feels_like = wdata['main']['feels_like']
feels_likemsg = f"Feels like {feels_like}ºC"
feels_likemsg = wdata['main']['feels_like']
except:
feels_likemsg = "No data on perceived temperature"
feels_likemsg = None
try:
wdata['main']['humidity']
humidity = wdata['main']['humidity']
humiditymsg = f"Humidity is {humidity}%"
humiditymsg = wdata['main']['humidity']
except:
humiditymsg = "No data on humidity"
humiditymsg = None
try:
wdata['wind']['speed']
wind_speed = wdata['wind']['speed']
wind_speedmsg = f"Wind speed is {wind_speed}m/s"
wind_speedmsg = wdata['wind']['speed']
except:
wind_speedmsg = "No data on wind speed"
wind_speedmsg = None
try:
wdata['wind']['gust']
wind_gusts = wdata['wind']['gust']
wind_gustsmsg = f"with gusts of {wind_gusts}m/s"
wind_gustsmsg = wdata['wind']['gust']
except:
wind_gustsmsg = "with no data on gusts"
wind_gustsmsg = None
try:
wdata['clouds']['all']
cloud_coverage = wdata['clouds']['all']
cloud_coveragemsg = f"Cloud coverage is {cloud_coverage}%"
cloud_coveragemsg = wdata['clouds']['all']
except:
cloud_coveragemsg = "No data on cloud coverage"
name = wdata['name']
cloud_coveragemsg = None
msg = f"""
```
Weather for {name}:
{description}, {tempmsg}. {feels_likemsg}. {humiditymsg}.
{wind_speedmsg}, {wind_gustsmsg}. {cloud_coveragemsg}.
```"""
name = wdata['name']
obj = namedtuple('Weather', [
'name',
'description',
'temp',
'feels_like',
'humidity',
'wind_speed',
'wind_gusts',
'cloud_coverage',
])
weather = obj(*(
name,
description,
tempmsg,
feels_likemsg,
humiditymsg,
wind_speedmsg,
wind_gustsmsg,
cloud_coveragemsg
))
return msg
return weather

Loading…
Cancel
Save