|
|
|
@ -1,6 +1,5 @@
|
|
|
|
|
import datetime
|
|
|
|
|
import random
|
|
|
|
|
import string
|
|
|
|
|
from typing import Optional
|
|
|
|
|
|
|
|
|
|
import aiohttp
|
|
|
|
@ -118,10 +117,14 @@ def husbandos():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def store_waifus(waifus_dict, waifu, value):
|
|
|
|
|
"""Method to store waifu's in the new dict"""
|
|
|
|
|
|
|
|
|
|
waifus_dict[waifu["name"]][value] = waifu[value]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def embed_generator(waifus_dict):
|
|
|
|
|
def multiple_waifu_generator(waifus_dict):
|
|
|
|
|
"""Method to generate embed of multiple waifu's"""
|
|
|
|
|
|
|
|
|
|
embeds = []
|
|
|
|
|
for key in waifus_dict.values():
|
|
|
|
|
embed = Embed(title=key["name"], description=f"{key['original_name']} | {key['type']}",
|
|
|
|
@ -135,8 +138,26 @@ def embed_generator(waifus_dict):
|
|
|
|
|
return embeds
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_dict(waifus_dict):
|
|
|
|
|
return waifus_dict
|
|
|
|
|
def single_waifu_generator(waifu):
|
|
|
|
|
"""Method to generate embed of single waifu's"""
|
|
|
|
|
|
|
|
|
|
# Get all the data to be displayed in the embed
|
|
|
|
|
name = waifu["name"]
|
|
|
|
|
og_name = waifu["original_name"]
|
|
|
|
|
picture = waifu["display_picture"]
|
|
|
|
|
url = waifu["url"]
|
|
|
|
|
likes = waifu["likes"]
|
|
|
|
|
trash = waifu["trash"]
|
|
|
|
|
waifu_type = waifu["type"]
|
|
|
|
|
|
|
|
|
|
# Set up the embed
|
|
|
|
|
embed = Embed(title=name, description=f"{og_name} | {waifu_type}",
|
|
|
|
|
colour=rndColour(),
|
|
|
|
|
url=url)
|
|
|
|
|
embed.set_image(url=picture)
|
|
|
|
|
embed.set_footer(text=f"❤️ {likes} 🗑️ {trash} | Powered by MyWaifuList")
|
|
|
|
|
|
|
|
|
|
return embed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Set up the Cog
|
|
|
|
@ -145,7 +166,7 @@ class HelpMenu(menus.Menu):
|
|
|
|
|
super().__init__(timeout=125.0, clear_reactions_after=True)
|
|
|
|
|
self.waifus_dict = waifu
|
|
|
|
|
self.i = i
|
|
|
|
|
self.waifu = embed_generator(self.waifus_dict)
|
|
|
|
|
self.waifu = multiple_waifu_generator(self.waifus_dict)
|
|
|
|
|
self.bot = bot
|
|
|
|
|
self.botter = botter
|
|
|
|
|
|
|
|
|
@ -153,7 +174,7 @@ class HelpMenu(menus.Menu):
|
|
|
|
|
async def send_initial_message(self, ctx, channel):
|
|
|
|
|
# Set the first embed to the first element in the pages[]
|
|
|
|
|
|
|
|
|
|
initial = embed_generator(self.waifus_dict)[self.i]
|
|
|
|
|
initial = multiple_waifu_generator(self.waifus_dict)[self.i]
|
|
|
|
|
|
|
|
|
|
cur_page = self.i + 1
|
|
|
|
|
pages = len(self.waifu)
|
|
|
|
@ -173,8 +194,8 @@ class HelpMenu(menus.Menu):
|
|
|
|
|
# Do nothing if the check does not return true
|
|
|
|
|
if check(self.ctx):
|
|
|
|
|
# Set self.i to (i - 1) remainder length of the array
|
|
|
|
|
self.i = (self.i - 1) % len(embed_generator(self.waifus_dict))
|
|
|
|
|
prev_page = embed_generator(self.waifus_dict)[self.i]
|
|
|
|
|
self.i = (self.i - 1) % len(multiple_waifu_generator(self.waifus_dict))
|
|
|
|
|
prev_page = multiple_waifu_generator(self.waifus_dict)[self.i]
|
|
|
|
|
|
|
|
|
|
cur_page = self.i + 1
|
|
|
|
|
pages = len(self.waifu)
|
|
|
|
@ -196,8 +217,8 @@ class HelpMenu(menus.Menu):
|
|
|
|
|
# Do nothing if the check does not return true
|
|
|
|
|
if check(self.ctx):
|
|
|
|
|
# Set self.i to (i + 1) remainder length of the array
|
|
|
|
|
self.i = (self.i + 1) % len(embed_generator(self.waifus_dict))
|
|
|
|
|
next_page = embed_generator(self.waifus_dict)[self.i]
|
|
|
|
|
self.i = (self.i + 1) % len(multiple_waifu_generator(self.waifus_dict))
|
|
|
|
|
next_page = multiple_waifu_generator(self.waifus_dict)[self.i]
|
|
|
|
|
|
|
|
|
|
cur_page = self.i + 1
|
|
|
|
|
pages = len(self.waifu)
|
|
|
|
@ -233,7 +254,7 @@ class Anime(Cog):
|
|
|
|
|
"""Printing out that Cog is ready on startup"""
|
|
|
|
|
print(f"{self.__class__.__name__} Cog has been loaded!\n-----")
|
|
|
|
|
|
|
|
|
|
@group(invoke_without_command=True, aliases=["Waifu"])
|
|
|
|
|
@group(name="waifu", invoke_without_command=True, aliases=["Waifu"])
|
|
|
|
|
@bot_has_permissions(embed_links=True, add_reactions=True)
|
|
|
|
|
async def waifu(self, ctx, *, waifu2: Optional[str] = None):
|
|
|
|
|
"""
|
|
|
|
@ -290,21 +311,6 @@ class Anime(Cog):
|
|
|
|
|
menu = HelpMenu(i, waifus_dict, self, bot)
|
|
|
|
|
await menu.start(ctx)
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
name = waifu["name"]
|
|
|
|
|
og_name = waifu["original_name"]
|
|
|
|
|
picture = waifu["display_picture"]
|
|
|
|
|
url = waifu["url"]
|
|
|
|
|
likes = waifu["likes"]
|
|
|
|
|
trash = waifu["trash"]
|
|
|
|
|
|
|
|
|
|
embed = Embed(title=name, description=og_name,
|
|
|
|
|
colour=rndColour(),
|
|
|
|
|
url=url)
|
|
|
|
|
embed.set_image(url=picture)
|
|
|
|
|
embed.set_footer(text=f"❤️ {likes} 🗑️ {trash} | Powered by MyWaifuList")
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
|
|
# Set variables to retrieve data from the API
|
|
|
|
@ -323,86 +329,28 @@ class Anime(Cog):
|
|
|
|
|
else:
|
|
|
|
|
await ctx.send("Something went wrong!")
|
|
|
|
|
|
|
|
|
|
# Get all the data to be displayed in the embed
|
|
|
|
|
name = waifu["name"]
|
|
|
|
|
og_name = waifu["original_name"]
|
|
|
|
|
picture = waifu["display_picture"]
|
|
|
|
|
url = waifu["url"]
|
|
|
|
|
likes = waifu["likes"]
|
|
|
|
|
trash = waifu["trash"]
|
|
|
|
|
waifu_type = waifu["type"]
|
|
|
|
|
|
|
|
|
|
embed = Embed(title=name, description=f"{og_name} | {waifu_type}",
|
|
|
|
|
colour=rndColour(),
|
|
|
|
|
url=url)
|
|
|
|
|
embed.set_image(url=picture)
|
|
|
|
|
embed.set_footer(text=f"❤️ {likes} 🗑️ {trash} | Powered by MyWaifuList")
|
|
|
|
|
|
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
@group(invoke_without_command=True, aliases=["Husbando"])
|
|
|
|
|
@bot_has_permissions(embed_links=True)
|
|
|
|
|
async def husbando(self, ctx, husbando: Optional[str] = None):
|
|
|
|
|
"""Shows a Husbando"""
|
|
|
|
|
|
|
|
|
|
if husbando:
|
|
|
|
|
# Get the lowercase
|
|
|
|
|
lcase_husbando = husbando.lower()
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
# Retrieve image of the husbando specified
|
|
|
|
|
with open(f'images/AnimeImages/Husbandos/{lcase_husbando}.txt') as file:
|
|
|
|
|
h_array = file.readlines()
|
|
|
|
|
|
|
|
|
|
# Get the full name of the husbando
|
|
|
|
|
full_name = Abbrev(lcase_husbando)
|
|
|
|
|
|
|
|
|
|
# Embed the image into a message and send it to the channel
|
|
|
|
|
embed = displayAnimeImage(h_array, ctx, full_name)
|
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
except FileNotFoundError as e:
|
|
|
|
|
print(e)
|
|
|
|
|
|
|
|
|
|
# Send error message saying that the Husbando isn't recognised
|
|
|
|
|
embed = Embed(
|
|
|
|
|
description="Sorry! That Husbando Doesn't Exist!"
|
|
|
|
|
f"\nPlease Do **{ctx.prefix}husbando list** To View The List Of Husbando's Available",
|
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
|
|
# Get embed from randomHusbando() and send it to the channel
|
|
|
|
|
embed = randomHusbando(ctx, husbandos())
|
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
|
|
|
|
|
|
@waifu.command(name="list", aliases=["List"])
|
|
|
|
|
async def wlist(self, ctx):
|
|
|
|
|
"""Returns a list of Waifu's Available"""
|
|
|
|
|
|
|
|
|
|
# Send the list of waifus in the bot to the channel
|
|
|
|
|
waifu_list = string.capwords(', '.join(map(str, waifus())))
|
|
|
|
|
await ctx.send(embed=single_waifu_generator(waifu))
|
|
|
|
|
|
|
|
|
|
# Tell the user to try the waifus in the array
|
|
|
|
|
embed = Embed(description="Try The Waifu's Listed Below!"
|
|
|
|
|
f"\n**{waifu_list}**",
|
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
|
@waifu.command(name="daily", aliases=["Daily"])
|
|
|
|
|
async def daily_waifu(self, ctx):
|
|
|
|
|
"""Returns the daily Waifu from MyWaifuList"""
|
|
|
|
|
|
|
|
|
|
@husbando.command(name="list", aliases=["List"])
|
|
|
|
|
async def hlist(self, ctx):
|
|
|
|
|
"""Returns a list of Husbando's Available"""
|
|
|
|
|
url = "https://mywaifulist.moe/api/v1/meta/daily"
|
|
|
|
|
headers = {'apikey': my_waifu_list_auth}
|
|
|
|
|
|
|
|
|
|
# Send the list of waifus in the bot to the channel
|
|
|
|
|
husbando_list = string.capwords(', '.join(map(str, husbandos())))
|
|
|
|
|
# Retrieve a random waifu from the API
|
|
|
|
|
async with aiohttp.ClientSession() as session:
|
|
|
|
|
async with session.get(url, headers=headers) as resp:
|
|
|
|
|
# Store waifu's in dict when request is successful, else send an error
|
|
|
|
|
if resp.status == 200:
|
|
|
|
|
waifu_dict = await resp.json()
|
|
|
|
|
waifu = waifu_dict["data"]
|
|
|
|
|
|
|
|
|
|
# Tell the user to try the husbando's in the array
|
|
|
|
|
embed = Embed(description="Try The Husbando's Listed Below!"
|
|
|
|
|
f"\n**{husbando_list}**",
|
|
|
|
|
colour=enso_embedmod_colours)
|
|
|
|
|
# Send error if something went wrong internally/while grabbing data from API
|
|
|
|
|
else:
|
|
|
|
|
await ctx.send("Something went wrong!")
|
|
|
|
|
|
|
|
|
|
await ctx.send(embed=embed)
|
|
|
|
|
await ctx.send(embed=single_waifu_generator(waifu))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def setup(bot):
|
|
|
|
|