2020-05-19 16:46:49 +00:00
|
|
|
|
from typing import *
|
|
|
|
|
import royalnet.commands as rc
|
|
|
|
|
import aiohttp
|
|
|
|
|
import io
|
|
|
|
|
|
|
|
|
|
|
2020-07-18 14:29:43 +00:00
|
|
|
|
class DogCommand(rc.Command):
|
|
|
|
|
name: str = "dog"
|
2020-05-19 16:46:49 +00:00
|
|
|
|
|
2020-07-18 14:29:43 +00:00
|
|
|
|
description: str = "Invia un cane della razza specificata in chat."
|
2020-05-19 16:46:49 +00:00
|
|
|
|
|
2020-07-18 14:53:14 +00:00
|
|
|
|
syntax: str = "[razza|list]"
|
|
|
|
|
|
|
|
|
|
_breeds = [
|
|
|
|
|
"affenpinscher",
|
|
|
|
|
"african",
|
|
|
|
|
"airedale",
|
|
|
|
|
"akita",
|
|
|
|
|
"appenzeller",
|
|
|
|
|
"australian-shepherd",
|
|
|
|
|
"basenji",
|
|
|
|
|
"beagle",
|
|
|
|
|
"bluetick",
|
|
|
|
|
"borzoi",
|
|
|
|
|
"bouvier",
|
|
|
|
|
"boxer",
|
|
|
|
|
"brabancon",
|
|
|
|
|
"briard",
|
|
|
|
|
"buhund-norwegian",
|
|
|
|
|
"bulldog-boston",
|
|
|
|
|
"bulldog-english",
|
|
|
|
|
"bulldog-french",
|
|
|
|
|
"bullterrier-staffordshire",
|
|
|
|
|
"cairn",
|
|
|
|
|
"cattledog-australian",
|
|
|
|
|
"chihuahua",
|
|
|
|
|
"chow",
|
|
|
|
|
"clumber",
|
|
|
|
|
"cockapoo",
|
|
|
|
|
"collie-border",
|
|
|
|
|
"coonhound",
|
|
|
|
|
"corgi-cardigan",
|
|
|
|
|
"cotondetulear",
|
|
|
|
|
"dachshund",
|
|
|
|
|
"dalmatian",
|
|
|
|
|
"dane-great",
|
|
|
|
|
"deerhound-scottish",
|
|
|
|
|
"dhole",
|
|
|
|
|
"dingo",
|
|
|
|
|
"doberman",
|
|
|
|
|
"elkhound-norwegian",
|
|
|
|
|
"entlebucher",
|
|
|
|
|
"eskimo",
|
|
|
|
|
"finnish-lapphund",
|
|
|
|
|
"frise-bichon",
|
|
|
|
|
"germanshepherd",
|
|
|
|
|
"greyhound-italian",
|
|
|
|
|
"groenendael",
|
|
|
|
|
"havanese",
|
|
|
|
|
"hound-afghan",
|
|
|
|
|
"hound-basset",
|
|
|
|
|
"hound-blood",
|
|
|
|
|
"hound-english",
|
|
|
|
|
"hound-ibizan",
|
|
|
|
|
"hound-plott",
|
|
|
|
|
"hound-walker",
|
|
|
|
|
"husky",
|
|
|
|
|
"keeshond",
|
|
|
|
|
"kelpie",
|
|
|
|
|
"komondor",
|
|
|
|
|
"kuvasz",
|
|
|
|
|
"labrador",
|
|
|
|
|
"leonberg",
|
|
|
|
|
"lhasa",
|
|
|
|
|
"malamute",
|
|
|
|
|
"malinois",
|
|
|
|
|
"maltese",
|
|
|
|
|
"mastiff-bull",
|
|
|
|
|
"mastiff-english",
|
|
|
|
|
"mastiff-tibetan",
|
|
|
|
|
"mexicanhairless",
|
|
|
|
|
"mix",
|
|
|
|
|
"mountain-bernese",
|
|
|
|
|
"mountain-swiss",
|
|
|
|
|
"newfoundland",
|
|
|
|
|
"otterhound",
|
|
|
|
|
"ovcharka-caucasian",
|
|
|
|
|
"papillon",
|
|
|
|
|
"pekinese",
|
|
|
|
|
"pembroke",
|
|
|
|
|
"pinscher-miniature",
|
|
|
|
|
"pitbull",
|
|
|
|
|
"pointer-german",
|
|
|
|
|
"pointer-germanlonghair",
|
|
|
|
|
"pomeranian",
|
|
|
|
|
"poodle-miniature",
|
|
|
|
|
"poodle-standard",
|
|
|
|
|
"poodle-toy",
|
|
|
|
|
"pug",
|
|
|
|
|
"puggle",
|
|
|
|
|
"pyrenees",
|
|
|
|
|
"redbone",
|
|
|
|
|
"retriever-chesapeake",
|
|
|
|
|
"retriever-curly",
|
|
|
|
|
"retriever-flatcoated",
|
|
|
|
|
"retriever-golden",
|
|
|
|
|
"ridgeback-rhodesian",
|
|
|
|
|
"rottweiler",
|
|
|
|
|
"saluki",
|
|
|
|
|
"samoyed",
|
|
|
|
|
"schipperke",
|
|
|
|
|
"schnauzer-giant",
|
|
|
|
|
"schnauzer-miniature",
|
|
|
|
|
"setter-english",
|
|
|
|
|
"setter-gordon",
|
|
|
|
|
"setter-irish",
|
|
|
|
|
"sheepdog-english",
|
|
|
|
|
"sheepdog-shetland",
|
|
|
|
|
"shiba",
|
|
|
|
|
"shihtzu",
|
|
|
|
|
"spaniel-blenheim",
|
|
|
|
|
"spaniel-brittany",
|
|
|
|
|
"spaniel-cocker",
|
|
|
|
|
"spaniel-irish",
|
|
|
|
|
"spaniel-japanese",
|
|
|
|
|
"spaniel-sussex",
|
|
|
|
|
"spaniel-welsh",
|
|
|
|
|
"springer-english",
|
|
|
|
|
"stbernard",
|
|
|
|
|
"terrier-american",
|
|
|
|
|
"terrier-australian",
|
|
|
|
|
"terrier-bedlington",
|
|
|
|
|
"terrier-border",
|
|
|
|
|
"terrier-dandie",
|
|
|
|
|
"terrier-fox",
|
|
|
|
|
"terrier-irish",
|
|
|
|
|
"terrier-kerryblue",
|
|
|
|
|
"terrier-lakeland",
|
|
|
|
|
"terrier-norfolk",
|
|
|
|
|
"terrier-norwich",
|
|
|
|
|
"terrier-patterdale",
|
|
|
|
|
"terrier-russell",
|
|
|
|
|
"terrier-scottish",
|
|
|
|
|
"terrier-sealyham",
|
|
|
|
|
"terrier-silky",
|
|
|
|
|
"terrier-tibetan",
|
|
|
|
|
"terrier-toy",
|
|
|
|
|
"terrier-westhighland",
|
|
|
|
|
"terrier-wheaten",
|
|
|
|
|
"terrier-yorkshire",
|
|
|
|
|
"vizsla",
|
|
|
|
|
"waterdog-spanish",
|
|
|
|
|
"weimaraner",
|
|
|
|
|
"whippet",
|
|
|
|
|
"wolfhound-irish",
|
|
|
|
|
]
|
2020-05-19 16:46:49 +00:00
|
|
|
|
|
|
|
|
|
async def run(self, args: rc.CommandArgs, data: rc.CommandData) -> None:
|
2020-07-18 14:29:43 +00:00
|
|
|
|
breed = args.joined()
|
|
|
|
|
if breed:
|
2020-07-18 14:53:14 +00:00
|
|
|
|
if breed == "list":
|
|
|
|
|
await data.reply("\n".join(["ℹ️ Razze disponibili:", [f"[c]{breed}[/c]" for breed in self._breeds]]))
|
|
|
|
|
if breed in self._breeds:
|
|
|
|
|
url = f"https://dog.ceo/api/breed/{breed}/images/random"
|
|
|
|
|
else:
|
|
|
|
|
raise rc.InvalidInputError("Questa razza non è disponibile.\n")
|
2020-07-18 14:29:43 +00:00
|
|
|
|
else:
|
|
|
|
|
url = f"https://dog.ceo/api/breeds/image/random"
|
|
|
|
|
|
2020-05-19 16:46:49 +00:00
|
|
|
|
async with aiohttp.ClientSession() as session:
|
2020-07-18 14:29:43 +00:00
|
|
|
|
async with session.get(url) as response:
|
2020-05-28 14:57:10 +00:00
|
|
|
|
if response.status >= 400:
|
|
|
|
|
raise rc.ExternalError(f"Request returned {response.status}")
|
2020-05-19 16:46:49 +00:00
|
|
|
|
result = await response.json()
|
|
|
|
|
assert "status" in result
|
|
|
|
|
assert result["status"] == "success"
|
|
|
|
|
assert "message" in result
|
|
|
|
|
url = result["message"]
|
|
|
|
|
async with session.get(url) as response:
|
|
|
|
|
img = await response.content.read()
|
|
|
|
|
await data.reply_image(image=io.BytesIO(img))
|