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
async def s_info(self, ctx): """Info|Returns some server information.|""" embed = Embed().make_emb(title="Guild details:", desc="") embed.set_author(name="{} ({})".format(ctx.guild.name, ctx.guild.id)) embed.set_thumbnail(url=ctx.guild.icon_url) embed.add_field(name="Owner", value=ctx.guild.owner, inline=True) embed.add_field(name="Region", value=ctx.guild.region, inline=True) embed.add_field(name="Created at", value=str(ctx.guild.created_at).split('.', 1)[0], inline=True) members = 0 bots = 0 online_members = 0 if not ctx.guild.chunked: await self.bot.request_offline_members(ctx.guild) for member in ctx.guild.members: if member.bot: bots += 1 else: members += 1 status = str(member.status) if not status == "offline": online_members += 1 embed.add_field(name="Members", value=members, inline=True) embed.add_field(name="Bots", value=bots, inline=True) embed.add_field(name="Online members", value=online_members, inline=True) embed.add_field(name="Text channels", value=len(ctx.guild.text_channels), inline=True) embed.add_field(name="Voice channels", value=len(ctx.guild.voice_channels), inline=True) embed.add_field(name="Nitro boost level", value=ctx.guild.premium_tier, inline=True) embed.add_field(name="Members boosting this guild", value=ctx.guild.premium_subscription_count, inline=True) g_boost_stats = "```Emoji limit: {} emojis\nBitrate limit: {} kbps\nFilesize limit: {} MB```" g_boost_stats = g_boost_stats.format( ctx.guild.emoji_limit, int(ctx.guild.bitrate_limit / 1000), int(ctx.guild.filesize_limit / 1048576)) embed.add_field(name="Guild boost stats", value=g_boost_stats, inline=True) emoji_list = await ctx.guild.fetch_emojis() random.shuffle(emoji_list) emoji_string = "" maxlen = len(emoji_list) if maxlen > 20: maxlen = 20 for i in range(0, maxlen): emoji_string += str(emoji_list[i]) if len(emoji_string) > 0: embed.add_field(name="Some emojis", value=emoji_string, inline=True) 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
async def get_dungeon_embed(self, ctx, player: skypy.Player): if not player.load_dungeon_stats(): return await Embed(self.bot, ctx.author, title="Error", description="Couldn't find any dungeon stats for this player.").set_requested_by_footer() class_emojis = {"healer": ":heart:", "mage": ":sparkler:", "berserk": ":crossed_swords:", "archer": ":bow_and_arrow:", "tank": ":shield:"} embed = Embed(self.bot, ctx.author, title=f"{self.format_name(player.uname)} Catacombs stats on {player.profile_name}", description=f"**Catacombs level: {player.catacomb_level[0]}\nXP to next level: {round(player.catacomb_level[1])}**") embed.add_field(name=":arrows_counterclockwise: Times played", value="\n".join([f"**Floor {z}:** {round(player.catacomb_times_floor_played[z])}" for z in player.catacomb_times_floor_played]), inline=False) embed.add_field(name=":clock1: Fastest times", value="\n".join([f"**Floor {z}:** {timedelta(seconds=round(player.catacomb_fasted_times[z] / 1000))}" for z in player.catacomb_fasted_times]), inline=True) embed.add_field(name=":1234: Best scores", value="\n".join([f"**Floor {z}:** {round(player.catacomb_best_scores[z]):,}" for z in player.catacomb_best_scores]), inline=True) embed.add_field(name=":drop_of_blood: Mobs killed", value="\n".join([f"**Floor {z}:** {round(player.catacomb_mobs_killed[z])}" for z in player.catacomb_mobs_killed]), inline=True) embed.add_field(name=u"\u200b", value="**Class Levels**", inline=False) for _class in player.catacomb_class_levels: embed.add_field(name=f"{class_emojis[_class.lower()]} {_class}", value=f"**Level:** {player.catacomb_class_levels[_class][0]}\n**XP to next level:** {round(player.catacomb_class_levels[_class][1])}\n", inline=True) embed.add_field(name=u"\u200b", value=u"\u200b", inline=True) embed.set_thumbnail(url=player.avatar()) await embed.set_made_with_love_footer() return embed
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
async def get_event_embed(self, ctx, event): event = self.get_event(event) if not event.event_name and not event.event_in: try: await event.set_data() except Exception: await asyncio.sleep(2) await event.set_data() event_in, event_on = self.get_times(event) embed = Embed(self.bot, ctx.author, title=event.event_name) await embed.set_requested_by_footer() embed.set_thumbnail(url=TimedEvent.icons[event.event_url]) embed.add_field(name=f"{event.event_name} in:", value=event_in, inline=False) embed.add_field(name=f"{event.event_name} on (utc+0):", value=event_on, inline=False) return embed
async def get_stats_embed(self, ctx, player : skypy.Player): player.load_banking(False) player.load_misc(False) player.load_skills_slayers(False) name = self.format_name(player.uname) percentages = ["crit_chance", "speed", "crit_damage", "bonus_attack_speed", "sea_creature_chance"] icons = { 'health': "❤️", 'defense': "🛡️", 'effective_health': "💕", 'strength': "⚔️", 'speed': "🏃♂️", 'crit_chance': "🎲", 'crit_damage': "☠️", 'bonus_attack_speed': "🗯️", 'intelligence': "🧠", 'sea_creature_chance': "🎣", 'magic_find': "⭐", 'pet_luck': "🦜"} if player.enabled_api["skills"]: description = f"Average skill level: {player.skill_average}" else: description = "Average skill level: Skills Api disabled" embed = Embed(self.bot, ctx.author, title=f"{name} Stats on {player.profile_name}", description=description) await embed.set_patron_footer() embed.set_thumbnail(url=player.avatar()) for name, stat in player.stats.items(): if name == "damage" or name == "damage_increase": continue if name in percentages: stat = str(stat) + "%" else: stat = f"{stat:,}" embed.add_field(name=f"{icons[name]} " + name.replace("_", " ").capitalize(), value=stat) embed.add_field(name="🌈 Fairy souls", value=player.fairy_souls_collected) if player.enabled_api["banking"]: embed.add_field(name="🏦 Bank Balance", value=f"{round(player.bank_balance):,}") embed.add_field(name="💰 Purse", value=f"{round(player.purse):,}") online = await player.is_online() embed.add_field(name="🟢 Currently online" if online else "🔴Currently online", value="Yes" if online else "No") embed.add_field(name="🚪 Join date", value=str(player.join_date.strftime("%Y-%m-%d"))) embed.add_field(name="⏰ Last update", value=str(player.last_save.strftime("%Y-%m-%d"))) embed.add_field(name=":money_with_wings: Estimated networth", value=f"{round(player.networth['total'] + player.slayer_total_spend):,}") return embed
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 stats(self, ctx, target: MemberConverter = None): """Info|Shows information concerning your current stats.|""" if not target: target = ctx.message.author joined_at = str(target.joined_at).split('.', 1)[0] created_at = str(target.created_at).split('.', 1)[0] nick = target.name if hasattr(target, "nick"): if target.nick: nick = target.nick title = f"• Nickname: {nick}" desc = f"Some details about {target.name}:" author = {"name": "{} ({})".format(target, target.id), "icon_url": ""} xp, gems, vip_days = await self.bot.funx.get_stats(target.id) lvl = Level().from_xp(xp) next_xp = Level().to_xp(lvl) progress = f"{lvl} [{xp} XP/{next_xp} XP]" pocket_coins, bank_coins = await self.bot.funx.get_coins(target.id) total_coins = pocket_coins + bank_coins pocket_coins = self.bot.funx.group_digit(pocket_coins) bank_coins = self.bot.funx.group_digit(bank_coins) total_coins = self.bot.funx.group_digit(total_coins) fields = [["• Created:", created_at, False], ["• Joined:", joined_at, False], ["• Level:", progress, False], ["• Gems:", str(gems), False], ["• VIP days:", str(vip_days), False], ["• Pocket:", f"{pocket_coins} {self.mc_emoji}", False], ["• Bank: ", f"{bank_coins} {self.mc_emoji}", False], ["• Total: ", f"{total_coins} {self.mc_emoji}", False]] embed = Embed().make_emb(title, desc, author, fields) embed.set_thumbnail(url=target.avatar_url) await ctx.send(embed=embed)