This repository has been archived on 2020-01-26. You can view files and clone it, but cannot push or open issues or pull requests.
robo-rat/dogs.py

68 lines
2.3 KiB
Python
Raw Normal View History

2018-07-07 23:25:54 +12:00
import discord
from discord.ext import commands
import requests
import aiohttp
import random
import asyncio
durls = {"random": "https://dog.ceo/api/breeds/image/random",
"list": "https://dog.ceo/api/breeds/list",
"breed": "https://dog.ceo/api/breed/{}/images/random"}
class wp:
@staticmethod
async def jsondecoder(url, req):
req = req.replace(' ', '%20')
url = url.format(req)
async with aiohttp.ClientSession() as session:
async with session.get(url) as r:
if r.status == 200:
return await r.json()
class dogs:
def __init__(self, bot, breeds):
self.bot = bot
self.bot.breeds = breeds
@commands.command()
async def pug(self):
'''generates a random pug'''
em = discord.Embed(color=discord.Color(value=random.randint(000000,
999999)))
p = await wp.jsondecoder(durls["breed"], "pug")
em.set_image(url=p["message"])
await self.bot.say(embed=em)
@commands.command()
async def dog(self, breed=None):
"""generates a random picture of a dog use:
'&dog' to see a random dog of any bread,
'&dog list' will give u a list of callable breads and finally
'&dog [breedname]' will give u a dog of the selected bread"""
if breed is None:
color = discord.Color(value=random.randint(000000, 999999))
em = discord.Embed(color=color)
u = await wp.jsondecoder(durls["random"], "")
em.set_image(url=u["message"])
await self.bot.say(embed=em)
elif breed == "list":
await self.bot.say("**Here is a list of the valid breeds:**")
await self.bot.say(self.bot.breeds)
else:
if breed not in self.bot.breeds:
await self.bot.say("Learn to spell noob!")
else:
color = discord.Color(value=random.randint(000000, 999999))
em = discord.Embed(color=color)
d = await wp.jsondecoder(durls["breed"], breed)
em.set_image(url=d["message"])
await self.bot.say(embed=em)
def setup(bot):
breeds = requests.get(url=durls['list']).json()
bot.add_cog(dogs(bot, breeds["message"]))