1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-27 13:34:28 +00:00
royalnet/royalpack/commands/dog.py

182 lines
4.7 KiB
Python
Raw Normal View History

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":
2020-07-31 14:17:28 +00:00
await data.reply("\n".join([" Razze disponibili:", *[f"[c]{breed}[/c]" for breed in self._breeds]]))
2020-07-18 14:53:14 +00:00
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:
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))