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 random import choice
from discord.ext import commands from discord.ext import commands
from discord import Intents from discord import Intents, Embed
from settings.config import IMAGE_TYPES, PERMISSIONS from settings.config import IMAGE_TYPES, PERMISSIONS
from utils.database import get_by_id, get_quotes, remove_quote, set_quote, count_quotes 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) return await bot.send(msg)
@client.command(aliases=['w']) @client.command(aliases=['w'])
async def weather(bot: object, *location: str) -> str: 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) lat, lon = geocode(city, state, country)
weatherdata = getweatherdata(lat, lon) weatherdata = getweatherdata(lat, lon)
msg = displayweather(weatherdata) msg = displayweather(weatherdata)
default_msg = 'No data!'
return await bot.send(msg) 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']) @client.command(aliases=['qcontains', 'qsearch'])

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