Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
    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)
Esempio n. 7
0
    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
Esempio n. 8
0
    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
Esempio n. 9
0
    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
Esempio n. 10
0
    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
Esempio n. 11
0
    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
Esempio n. 12
0
 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
Esempio n. 13
0
 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
Esempio n. 14
0
    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
Esempio n. 15
0
    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
Esempio n. 16
0
 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)