def ani_character_page_1(title, data, char_media): url = data["siteUrl"] id = data["id"] desc = f"Details for character with id **{id}**:\n[Link to page]({url})" pic_url = data["image"]["large"] voice_actors, media = char_media va_str = "" for va in voice_actors: row = va + ", " if len(va_str) + len(row) > 1000: va_str += "[...]" break va_str += row name_full = data["name"]["full"] name_alternative = ", ".join(data["name"]["alternative"]) about = data["description"] if about and len(about) > 1000: about = about[:1000] + "[...]" fields = [["Name", name_full], ["Nickname", name_alternative], ["Favourites", data["favourites"]], ["About", about, False], ["Voice actors", va_str[:-2], False]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_image(url=pic_url) emb.set_footer(text="1/2 - Powered by AniList API") return emb
def ani_person_page_2(title, data): url = data["siteUrl"] id = data["id"] desc = f"Details for person with id **{id}**:\n[Link to page]({url})" pic_url = data["image"]["large"] media = "" for n in data["staffMedia"]["nodes"]: title = n["title"]["romaji"] url = n["siteUrl"] row = f"[{title}]({url})\n" if len(media) + len(row) > 1000: media += "[...]" break media += row chars = "" for n in data["characters"]["nodes"]: name = n["name"]["full"] url = n["siteUrl"] row = f"[{name}]({url})\n" if len(chars) + len(row) > 1000: chars += "[...]" break chars += row fields = [["Staff positions", media], ["Voice acting roles", chars, False]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_thumbnail(url=pic_url) emb.set_footer(text="2/2 - Powered by AniList API") return emb
def ani_manga_page_1(title, data): url = data["siteUrl"] id = data["id"] desc = f"Details for manga with id **{id}**:\n[Link to page]({url})" pic_url = data["coverImage"]["large"] title_romaji = data["title"]["romaji"] title_english = data["title"]["english"] explicit = "Yes" if data["isAdult"] else "No" average_score = data["averageScore"] mean_score = data["meanScore"] rank = None for r in data["rankings"]: if r["type"] == "POPULAR" and r["allTime"]: rank = r["rank"] break fields = [["Title", f"{title_romaji},\n{title_english}"], ["Type", data["format"]], ["Status", data["status"]], ["Chapters", data["chapters"]], ["Volumes", data["volumes"]], ["Explicit", explicit], ["Score", f"{average_score} ({mean_score})"], ["Rank", rank]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_image(url=pic_url) emb.set_footer(text="1/5 - Powered by AniList API") return emb
async def xp(self, ctx): """Info|Shows the top 10 people with the highest level & XP.|""" script = "select user_id, xp from amathy.stats" data = await self.bot.funx.fetch_many(script) top = dict() for elem in data: user_id, xp = elem top[user_id] = xp sorted_top = sorted(top, key=top.get, reverse=True) emb = Embed().make_emb( "Global top - Level & XP", "To get xp, use commands or vote for me ([here](https://tiny.cc/voteama))." ) max_range = 10 if len(sorted_top) < max_range: max_range = len(sorted_top) for index in range(0, max_range): user_id = sorted_top[index] xp = top[user_id] lvl = Level().from_xp(xp) xp = self.bot.funx.group_digit(xp) if user_id == ctx.author.id: text = "Author position >>> No. {}: {} - Level {} - {} XP <<<" emb.set_footer(text=text.format(index + 1, ctx.author.name, lvl, xp)) user = self.bot.get_user(user_id) if user: emb.add_field(name=f"No. {index + 1}: {user.name}", value=f"Level {lvl} - {xp} XP") await ctx.send(embed=emb)
async def coins(self, ctx): """Info|Shows the top 10 people with the most MC.|""" script = "select user_id, pocket, bank from amathy.coins" data = await self.bot.funx.fetch_many(script) top = dict() for elem in data: user_id, pocket, bank = elem top[user_id] = pocket + bank sorted_top = sorted(top, key=top.get, reverse=True) emb = Embed().make_emb( "Global top - MC", "To get coins, use `a daily` or vote for me ([here](https://tiny.cc/voteama))." ) max_range = 10 if len(sorted_top) < max_range: max_range = len(sorted_top) for index in range(0, max_range): user_id = sorted_top[index] coins = self.bot.funx.group_digit(top[user_id]) if user_id == ctx.author.id: text = "Author position >>> No. {}: {} - {} MC <<<" emb.set_footer(text=text.format(index + 1, ctx.author.name, coins)) user = self.bot.get_user(user_id) if user: emb.add_field(name="No. {}: {}".format(index + 1, user.name), value="{} {}".format(coins, self.mc_emoji)) await ctx.send(embed=emb)
async def check(self, ctx, username: str): name, uuid = await fetch_uuid_uname(username) cs = aiohttp.ClientSession() jerry_resp = await cs.get( "https://raw.githubusercontent.com/skyblockz/pricecheckbot/master/scammer.json" ) jerry_data = await json.loads(await jerry_resp.text()) if not uuid: return await ctx.send("Could not find that username") scammer = await self.bot.scammer_db["scammer_list"].find_one( {"_id": uuid}) if not scammer and uuid not in jerry_data: embed = Embed( title="Safe", description= "This user is not in our database or the jerry database as a scammer. Proceed with caution", bot=self.bot, user=ctx.author) embed.color = 0x00FF00 await embed.set_requested_by_footer() return await ctx.send(embed=embed) if uuid in jerry_data: scam = jerry_data[uuid] embed = Embed( title="SCAMMER", description= "This user has been found on the Jerry Scammer List! Do not trade with this user!" ) embed.add_field(name="Details", value=f"""**Reason:** {scam['reason']} **User's UUID:** {uuid} **DISCLAIMER:** This report has not been handled by us! This report has been provided by SkyBlockZ/Jerry the Skyblock Bot so it may not be 100% accurate!""" ) embed.set_author( name=f"JERRY SCAMMER LIST", url= "https://raw.githubusercontent.com/skyblockz/pricecheckbot/master/scammer.json" ) embed.set_footer(text=f"Added by: {scam[uuid]['operated_staff']}") embed.color = 0xff0000 return await ctx.send(embed=embed) if scammer["report_id"] and not scammer["anonymous"]: report = await self.bot.scammer_db["reports"].find_one( {"_id": scammer["report_id"]}) if not report["anonymous"]: footer_text = f"reported by {report['reporter']}, confirmed by {scammer['mod']}" else: footer_text = f"reported anonymously, confirmed by {scammer['mod']}" else: footer_text = f"added by {scammer['mod']}" embed = discord.Embed(title="SCAMMER", description=scammer["reason"], color=0xff0000).set_footer(text=footer_text) await ctx.send(embed=embed)
def ani_character_page_2(self, title, data, char_media): url = data["siteUrl"] id = data["id"] desc = f"Details for character with id **{id}**:\n[Link to page]({url})" pic_url = data["image"]["large"] voice_actors, media = char_media fields = [["Animeography", media["ANIME"]], ["Mangaography", media["MANGA"], False]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_thumbnail(url=pic_url) emb.set_footer(text="2/2 - Powered by AniList API") return emb
def ani_manga_page_5(self, title, data, relations): url = data["siteUrl"] id = data["id"] desc = f"Details for manga with id **{id}**:\n[Link to page]({url})" pic_url = data["coverImage"]["large"] get_rel_str = self.get_relation_str fields = [["Spin-off", get_rel_str(relations, "SPIN_OFF"), False], ["Character", get_rel_str(relations, "CHARACTER"), False], ["Other", get_rel_str(relations, "OTHER")]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_thumbnail(url=pic_url) emb.set_footer(text="5/5 - Powered by AniList API") return emb
def ani_manga_page_4(self, title, data, relations): url = data["siteUrl"] id = data["id"] desc = f"Details for manga with id **{id}**:\n[Link to page]({url})" pic_url = data["coverImage"]["large"] get_rel_str = self.get_relation_str fields = [["Side story", get_rel_str(relations, "SIDE_STORY"), False], ["Summary", get_rel_str(relations, "SUMMARY"), False], ["Parent", get_rel_str(relations, "PARENT")]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_thumbnail(url=pic_url) emb.set_footer(text="4/5 - Powered by AniList API") return emb
def ani_person_page_1(title, data): url = data["siteUrl"] id = data["id"] desc = f"Details for person with id **{id}**:\n[Link to page]({url})" pic_url = data["image"]["large"] name_full = data["name"]["full"] name_alternative = ", ".join(data["name"]["alternative"]) about = data["description"] if about and len(about) > 1000: about = about[:1000] + "[...]" fields = [["Name", name_full], ["Nickname", name_alternative], ["Favourites", data["favourites"]], ["About", about, False]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_image(url=pic_url) emb.set_footer(text="1/2 - Powered by AniList API") return emb
def ani_manga_page_3(self, title, data, relations): url = data["siteUrl"] id = data["id"] desc = f"Details for manga with id **{id}**:\n[Link to page]({url})" pic_url = data["coverImage"]["large"] get_rel_str = self.get_relation_str fields = [["Adaptation", get_rel_str(relations, "ADAPTATION"), False], ["Prequel", get_rel_str(relations, "PREQUEL"), False], ["Sequel", get_rel_str(relations, "SEQUEL"), False], ["Alternative", get_rel_str(relations, "ALTERNATIVE")]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_thumbnail(url=pic_url) emb.set_footer(text="3/5 - Powered by AniList API") return emb
def ani_user_page_3(title, desc, data): avatar = data["avatar"]["large"] fav = dict() for f in data["favourites"]: if f in ["characters", "staff"]: fav[f] = str() for n in data["favourites"][f]["nodes"]: title = n["name"]["full"] url = n["siteUrl"] row = f"[{title}]({url})\n" if len(fav[f]) + len(row) > 1000: fav[f] += "[...]" break fav[f] += row chars_str = fav["characters"] if fav["characters"] else "None" staff_str = fav["staff"] if fav["staff"] else "None" fields = [["Favourite characters", chars_str], ["Favourite people", staff_str]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_thumbnail(url=avatar) emb.set_footer(text="3/3 - Powered by AniList API") return emb
def ani_user_page_2(title, desc, data): avatar = data["avatar"]["large"] fav = dict() for f in data["favourites"]: if f in ["anime", "manga"]: fav[f] = str() for n in data["favourites"][f]["nodes"]: title = n["title"]["romaji"] url = n["siteUrl"] row = f"[{title}]({url})\n" if len(fav[f]) + len(row) > 1000: fav[f] += "[...]" break fav[f] += row anime_str = fav["anime"] if fav["anime"] else "None" manga_str = fav["manga"] if fav["manga"] else "None" fields = [["Favourite anime", anime_str], ["Favourite manga", manga_str]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_thumbnail(url=avatar) emb.set_footer(text="2/3 - Powered by AniList API") return emb
def ani_user_page_1(title, desc, data): name = data["name"] about = data["about"] if about and len(about) > 1000: about = about[:1000] + "[...]" avatar = data["avatar"]["large"] banner = data["bannerImage"] score_format = data["mediaListOptions"]["scoreFormat"] anime = data["statistics"]["anime"] anime_str = "```Episodes watched: {}\nMean score: {}" anime_str = anime_str.format(anime["episodesWatched"], anime["meanScore"]) for s in anime["statuses"]: st = s["status"] c = s["count"] anime_str += f"\n{st.title()}: {c}" anime_str += "\nTotal entries: {}```".format(anime["count"]) manga = data["statistics"]["manga"] manga_str = "```Chapters read: {}\nMean score: {}" manga_str = manga_str.format(manga["chaptersRead"], manga["meanScore"]) for s in manga["statuses"]: st = s["status"] c = s["count"] manga_str += f"\n{st.title()}: {c}" manga_str += "\nTotal entries: {}```".format(manga["count"]) fields = [["Name", name], ["Score format", score_format], ["About", about, False], ["Anime stats", anime_str, False], ["Manga stats", manga_str]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_image(url=avatar) if banner: emb.set_thumbnail(url=banner) emb.set_footer(text="1/3 - Powered by AniList API") return emb
def ani_manga_page_2(title, data): url = data["siteUrl"] id = data["id"] desc = f"Details for manga with id **{id}**:\n[Link to page]({url})" pic_url = data["coverImage"]["large"] synopsis = data["description"] if synopsis and len(synopsis) > 1000: synopsis = synopsis[:1000] + "[...]" producers = list() studios = list() for s in data["studios"]["nodes"]: if s["isAnimationStudio"]: studios.append(s["name"]) else: producers.append(s["name"]) fields = [["Synopsis", synopsis, False], ["Genres", ", ".join(data["genres"])], ["Studios", ", ".join(studios)], ["Producers/Licensors", ", ".join(producers)]] emb = Embed().make_emb(title=title, desc=desc, fields=fields) emb.set_thumbnail(url=pic_url) emb.set_footer(text="2/5 - Powered by AniList API") return emb
async def votes(self, ctx): """Info|Shows the top 10 people with the most votes.|""" script = "select user_id, monthly_votes, total_votes from amathy.votes" data = await self.bot.funx.fetch_many(script) top = {"monthly": {}, "total": {}} for elem in data: user_id, monthly_votes, total_votes = elem top["monthly"][user_id] = monthly_votes top["total"][user_id] = total_votes embeds = list() for page in ["monthly", "total"]: sorted_top = sorted(top[page], key=top[page].get, reverse=True) emb = Embed().make_emb( f"Global top - {page.title()} votes", "To get listed, vote for me ([here](https://tiny.cc/voteama))." ) max_range = 10 if len(sorted_top) < max_range: max_range = len(sorted_top) for index in range(0, max_range): user_id = sorted_top[index] votes = top[page][user_id] if votes == 0: continue votes = self.bot.funx.group_digit(votes) if user_id == ctx.author.id: text = "Author position >>> No. {}: {} - {} votes <<<" emb.set_footer(text=text.format(index + 1, ctx.author.name, votes)) user = self.bot.get_user(user_id) if user: emb.add_field(name="No. {}: {}".format( index + 1, user.name), value="{} votes".format(votes)) embeds.append(emb) await self.bot.funx.embed_menu(ctx, embeds)