Exemplo n.º 1
0
async def quote_info(ctx, row):
    em = Embed(title=row['invoke'], color=Colour.dark_blue())

    if row['text'].startswith("http") or row['text'].startswith(" http"):
        em.set_thumbnail(url=row["text"])
    else:
        em.description = (row["text"])

    if row['user_id']:

        member = ctx.guild.get_member(row['user_id'])

        if member:
            display = member.display_name
            em.set_author(name='Tag info', icon_url=member.avatar_url)
        else:
            display = row['created_by']

        em.add_field(name='Created by', value=display, inline=True)

    elif row['created_by']:
        em.add_field(name='Created by', value=row['created_by'], inline=True)

    if row['created_at']:
        date = row['created_at']
        em.add_field(name='Created at',
                     value=f'{date:%d. %B %Y : %H:%M:%S}',
                     inline=True)

    return em
Exemplo n.º 2
0
 async def latest(self, ctx):
     async with ctx.channel.typing():
         async with self.bot.session.get(
                 f"https://beatsaver.com/api/maps/latest") as resp:
             response = loads(await resp.text())
     embed = Embed(colour=Colour.dark_blue())
     embed.set_thumbnail(
         url=
         f"https://cdn.beatmaps.io/{response['docs'][0]['versions'][0]['hash']}.jpg"
     )
     embed.set_author(name="BeatSaver Latest",
                      url=f"https://beatsaver.com/")
     data = list()
     for result in response["docs"]:
         if result["automapper"] is True:
             author_emote = "🤖"
         else:
             author_emote = "🥰"
         diff_message = str()
         for diff in result["versions"][0]["diffs"]:
             diff_name = diff['difficulty']
             diff_message = f"{diff_message} {diff_emotes[diff_name]}"
         m, s = divmod(result["metadata"]["duration"], 60)
         message = f"""🔑 {result['id']}
         {author_emote} {result['metadata']['levelAuthorName']}
         💾 {result['stats']['downloads']:,}
         💯 {int(result['stats']['score']*100)}%
         ⏱ {m:02d}:{s:02d}
         📅 {(datetime.fromisoformat(result['uploaded'][:-1])).strftime('%Y/%m/%d')}
         {diff_message}
         [BS Page](https://beatsaver.com/maps/{result['id']})"""
         data.append((result["name"], message))
     pages = menus.MenuPages(source=SearchMenu(data, embed),
                             clear_reactions_after=True)
     await pages.start(ctx)
Exemplo n.º 3
0
async def element_color(element):
    switch = {
        'Light': Colour.gold(),
        'Dark': Colour.dark_purple(),
        'Fire': Colour.dark_red(),
        'Water': Colour.dark_blue(),
        'Forest': Colour.dark_green()
    }
    return switch.get(element)
Exemplo n.º 4
0
async def quote_embed(row):
    em = Embed(title=row['invoke'], color=Colour.dark_blue())

    if row['text'].startswith("http") or row['text'].startswith(" http"):
        em.set_image(url=row["text"])
    else:
        em.description = (row["text"])

    return em
Exemplo n.º 5
0
 async def beatsaver(self, ctx, beatmap_key, difficulty=None):
     async with self.bot.session.get(
             f"https://beatsaver.com/api/maps/id/{beatmap_key}") as resp:
         try:
             response = loads(await resp.text())
         except JSONDecodeError:
             raise commands.BadArgument
     if "error" in response:
         if response["error"] != "Not Found":
             logging.error(response["error"])
         raise commands.BadArgument
     m, s = divmod(response["metadata"]["duration"], 60)
     embed = Embed(title=response["name"],
                   url=f"https://beatsaver.com/maps/{beatmap_key}",
                   colour=Colour.dark_blue())
     if difficulty is None:
         diff_stats = response["versions"][0]["diffs"][-1]
     else:
         for diff in response["versions"][0]["diffs"]:
             if diff["difficulty"].lower() == difficulty.lower():
                 diff_stats = diff
                 break
         if not diff_stats:
             raise BadArgument
     # Could be improved, logic errors if map has more than one characteristic
     # Low prioty issue though since majority of maps now a days all use the standard characteristic
     diff_emotes_message = str()
     for diff in response["versions"][0]["diffs"]:
         diff_name = diff['difficulty']
         diff_emotes_message = f"{diff_emotes_message} {diff_emotes[diff_name]}"
     embed.add_field(
         name="Map Stats",
         value=
         f"Duration: {m:02d}:{s:02d}\nBPM: {response['metadata']['bpm']}\nMapper: {response['metadata']['levelAuthorName']}\n{diff_emotes_message}",
         inline=True)
     embed.add_field(
         name="BeatSaver Stats",
         value=
         f"🔑: {response['id']}\n💾: {response['stats']['downloads']:,}\n💯: {int(response['stats']['score']*100)}%\n📅: {(datetime.fromisoformat(response['uploaded'][:-1])).strftime('%Y/%m/%d')}",
         inline=True)
     embed.add_field(name="\u200B", value="\u200B", inline=True)
     value = f"{diff_stats_emotes['nps']}: {round(diff_stats['nps'],2)}\n{diff_stats_emotes['njs']}: {diff_stats['njs']}\n{diff_stats_emotes['notes']}: {diff_stats['notes']}\n{diff_stats_emotes['bombs']}: {diff_stats['bombs']}"
     if "stars" in diff_stats:
         value = f"{diff_stats_emotes['star']}: {diff_stats['stars']}\n" + value
     embed.add_field(
         name=f"Difficulty Stats {diff_emotes[(diff_stats['difficulty'])]}",
         value=value,
         inline=True)
     embed.add_field(
         name="Links",
         value=
         f"[Preview Map](https://skystudioapps.com/bs-viewer/?id={response['id']})\n[Download Map]({response['versions'][0]['downloadURL']})\n[Song on Youtube](https://www.youtube.com/results?search_query={response['metadata']['songAuthorName'].replace(' ','+')}+{response['name'].replace(' ','+')})\n[Song on Spotify](https://open.spotify.com/search/{response['name'].replace(' ','%20')})",
         inline=True)
     embed.add_field(name="\u200B", value="\u200B", inline=True)
     embed.set_image(url=response['versions'][0]['coverURL'])
     await ctx.reply(embed=embed)
Exemplo n.º 6
0
    def get_random_color() -> Colour:

        """
        TODO: Add more colors that look good
        :return:
        """

        colors = [
            Colour.blurple(), Colour.dark_blue(), Colour.dark_orange(),
            Colour.dark_magenta(), Colour.teal(), Colour.magenta(),
            Colour.dark_gold(), Colour.blurple()
        ]

        return random.choice(colors)
Exemplo n.º 7
0
async def _axs_count(ctx, *, event_id):
    url = f'{API_BASE_URL}/axsstockchecker?access_code={API_ACCESS_CODE}&event_id={event_id}'
    json_response = await http_get(url)
    if not json_response or "sections" not in json_response:
        await ctx.send("Error fetching info from AXS")
        return

    # create the embed
    bot_msg = BotResponse("AXS Inventory Count", event_id, Colour.dark_blue())
    bot_msg.set_name("Event Link")
    bot_msg.set_url(f"https://tix.axs.com/{event_id}")
    for section in json_response["sections"]:
        bot_msg.add_section(section["section"], section["count"])
    bot_msg.build_display()
    await ctx.send(embed=bot_msg)
Exemplo n.º 8
0
    async def _generate_embed(self, event: Event) -> Embed:
        embed = Embed(
            title=f'`Neuer Termin: {event.summary}`',
            type='rich',
            colour=Colour.dark_blue(),
        )

        if event.description:
            embed.add_field(name='Beschreibung', value=event.description)
        embed.add_field(name='Start',
                        value=event.dateStart.strftime('%m/%d/%Y %H:%M'))
        embed.add_field(name='Ende',
                        value=event.dateEnd.strftime('%m/%d/%Y %H:%M'))
        embed.add_field(name='Erstellt',
                        value=event.createdAt.strftime('%m/%d/%Y %H:%M'),
                        inline=False)
        embed.set_footer(text=self.bot.signature)

        return embed
Exemplo n.º 9
0
async def encounter(ctx):
    embedded_enc = Embed(color=Colour.dark_blue(),
                         description='Random Encounter: \n' +
                         enc.get_random_encounter())
    await ctx.send(embed=embedded_enc)
Exemplo n.º 10
0
    async def on_message(self, message, **kwargs):
        client = self.client
        trans = self.trans

        prefix = kwargs.get("prefix")
        lang = kwargs.get("lang")

        # Check if this is a valid command
        if not is_valid_command(message.content, commands, prefix):
            return
        else:
            self.stats.add(MESSAGE)

        def startswith(*matches):
            for match in matches:
                if message.content.startswith(match):
                    return True

            return False

        # !status
        if startswith(prefix + "status"):
            server_count = 0
            members = 0
            channels = 0

            # Iterate though servers and add up things
            for guild in client.guilds:

                server_count += 1
                members += int(guild.member_count)
                channels += len(guild.channels)

            embed = Embed(name=trans.get("MSG_STATUS_STATS", lang),
                          colour=Colour.dark_blue())

            embed.add_field(name=trans.get("MSG_STATUS_SERVERS", lang),
                            value=trans.get("MSG_STATUS_SERVERS_L",
                                            lang).format(server_count),
                            inline=True)
            embed.add_field(name=trans.get("MSG_STATUS_USERS", lang),
                            value=trans.get("MSG_STATUS_USERS_L",
                                            lang).format(members),
                            inline=True)
            embed.add_field(name=trans.get("MSG_STATUS_CHANNELS", lang),
                            value=trans.get("MSG_STATUS_CHANNELS_L",
                                            lang).format(channels),
                            inline=True)

            await message.channel.send("**Stats**", embed=embed)

        # !debug
        elif startswith(prefix + "debug", prefix + "stats more"):
            # Some more debug data

            # Ratelimit every 360 seconds
            if ((self.lt - time.time()) <
                    360) and not self.handler.is_bot_owner(message.author.id):
                await message.channel.send(
                    trans.get("MSG_STATUS_RATELIMIT", lang))
                return

            self.lt = time.time()

            # CPU
            cpu = psutil.cpu_percent(interval=0.3)

            # RAM
            def get_ram_usage():
                nano_process = psutil.Process(os.getpid())
                return round(nano_process.memory_info()[0] / float(2**20),
                             1)  # Converts to MB

            mem_before = get_ram_usage()
            # Attempt garbage collection
            gc.collect()

            mem_after = get_ram_usage()
            garbage = round(mem_after - mem_before, 2)

            # OTHER
            nano_version = self.nano.version
            discord_version = d_version

            reminders = self.nano.get_plugin(
                "reminder").instance.reminder.get_reminder_amount()
            polls = self.nano.get_plugin(
                "voting").instance.vote.get_vote_amount()

            # Redis db stats
            redis_mem = self.handler.db_info("memory").get("used_memory_human")
            redis_size = self.handler.db_size()

            fields = trans.get("MSG_DEBUG_MULTI",
                               lang).format(nano_version,
                                            discord_version, mem_after,
                                            abs(garbage), cpu, reminders,
                                            polls, redis_mem, redis_size)

            total_shards = len(self.client.shards.keys())
            current_shard = message.guild.shard_id

            additional = trans.get("MSG_DEBUG_MULTI_2",
                                   lang).format(total_shards, current_shard)

            await message.channel.send(fields + "\n" + additional)

        # !prefix
        elif startswith(prefix + "prefix"):
            await message.channel.send(trans.get("MSG_PREFIX_OHYEAH", lang))

        # nano.prefix
        elif startswith("nano.prefix"):
            await message.channel.send(
                trans.get("MSG_PREFIX", lang).format(prefix))

        # !members
        elif startswith(prefix + "members"):
            ls = [member.name for member in message.guild.members]
            amount = len(ls)

            members = trans.get("MSG_MEMBERS_LIST", lang).format(", ".join(["`{}`".format(mem) for mem in ls])) + \
                      trans.get("MSG_MEMBERS_TOTAL", lang).format(amount)

            if len(members) > 2000:
                # Only send the number if the message is too long.
                await message.channel.send(
                    trans.get("MSG_MEMBERS_AMOUNT", lang).format(amount))

            else:
                await message.channel.send(members)

        # !server
        elif startswith(prefix + "server"):
            user_count = message.guild.member_count
            users_online = len([
                user.id for user in message.guild.members
                if user.status == user.status.online
            ])

            v_level = message.guild.verification_level
            if v_level == v_level.none:
                v_level = trans.get("MSG_SERVER_VL_NONE", lang)
            elif v_level == v_level.low:
                v_level = trans.get("MSG_SERVER_VL_LOW", lang)
            elif v_level == v_level.medium:
                v_level = trans.get("MSG_SERVER_VL_MEDIUM", lang)
            else:
                v_level = trans.get("MSG_SERVER_VL_HIGH", lang)

            text_chan = len(message.guild.text_channels)
            voice_chan = len(message.guild.voice_channels)
            channels = text_chan + voice_chan

            # Teal Blue
            embed = Embed(colour=Colour(0x3F51B5),
                          description=trans.get("MSG_SERVER_ID",
                                                lang).format(message.guild.id))

            if message.guild.icon:
                embed.set_author(name=message.guild.name,
                                 icon_url=message.guild.icon_url)
                embed.set_thumbnail(url=message.guild.icon_url)
            else:
                embed.set_author(name=message.guild.name)

            embed.set_footer(text=trans.get("MSG_SERVER_DATE_CREATED", lang).
                             format(message.guild.created_at))

            embed.add_field(name=trans.get("MSG_SERVER_MEMBERS",
                                           lang).format(user_count),
                            value=trans.get("MSG_SERVER_MEMBERS_L",
                                            lang).format(users_online))

            embed.add_field(name=trans.get("MSG_SERVER_CHANNELS",
                                           lang).format(channels),
                            value=trans.get("MSG_SERVER_CHANNELS_L",
                                            lang).format(
                                                voice_chan, text_chan))

            embed.add_field(name=trans.get("MSG_SERVER_VL", lang),
                            value=v_level)
            embed.add_field(
                name=trans.get("MSG_SERVER_ROLES", lang),
                value=trans.get("MSG_SERVER_ROLES_L",
                                lang).format(len(message.guild.roles) - 1))

            owner = message.guild.owner

            embed.add_field(name=trans.get("MSG_SERVER_OWNER", lang),
                            value=trans.get("MSG_SERVER_OWNER_L", lang).format(
                                owner.name, owner.discriminator, owner.id))

            await message.channel.send(trans.get("MSG_SERVER_INFO", lang),
                                       embed=embed)
Exemplo n.º 11
0
    "neutral":
    "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/twitter/248/rocket_1f680.png",
    "void":
    "https://cdn.discordapp.com/attachments/700683544103747594/711013699841687602/void.png"
}

errorIcon = "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/twitter/248/exclamation-mark_2757.png"
winIcon = "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/twitter/248/trophy_1f3c6.png"
rocketIcon = "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/twitter/248/rocket_1f680.png"

# colours to use in faction-related embed strips
factionColours = {
    "terran": Colour.gold(),
    "vossk": Colour.dark_green(),
    "midorian": Colour.dark_red(),
    "nivelian": Colour.dark_blue(),
    "neutral": Colour.purple()
}

# Data representing all ship items in the game. These are used to create bbShip objects,
# which are stored in builtInShipObjs in a similar dict format.
# Ships to not have tech levels in GOF2, so tech levels will be automaticaly generated
# for the sake of the bot during bot.on_ready.
builtInShipData = {}

# Data representing all module items in the game. These are used to create bbModule objects,
# which are stored in builtInModuleObjs in a similar dict format.
builtInModuleData = {}

# Data representing all primary weapon items in the game. These are used to create bbWeapon objects,
# which are stored in builtInWeaponObjs in a similar dict format.
Exemplo n.º 12
0
    description='',
    colour=Colour.red(),
)

general_help_embed = Embed(
    title="Commands",
    type="rich",
    description='',
    colour=Colour.blue(),
)

gags_embed = Embed(
    title='Gags',
    type='rich',
    description='',
    colour=Colour.dark_blue()
)

# Claiming Help --------------------------------------------------
claiming_help_embed.add_field(
    name='!claim',
    value="Claim a toon or group of toons. e.g. `!claim zen` or `!claim 2x`",
    inline=True
)

claiming_help_embed.add_field(
    name='!unclaim',
    value="Unclaim a toon, group of toons, or all toons. e.g. `!unclaim all`",
    inline=True
)
Exemplo n.º 13
0
async def coin_embed(url):
    em = Embed(colour=Colour.dark_blue())
    em.set_image(url=url)
    return em
Exemplo n.º 14
0
async def on_message(message):
    if message.author == client.user:
        return
    # hello command
    elif message.content.startswith('*hello'):
        await message.channel.send("Hello <@" + str(message.author.id) + "> ! " + ":slight_smile:")
    # help command*
    elif message.content.startswith('*help'):
        embed = discord.Embed(title='Help', description='help for you :slight_smile:', colour=Colour.blue())
        embed.add_field(name="For server admins (more info *info_server_admins)", value="nothing(yet)", inline=False)
        embed.add_field(name="not nice stuff (more info *info_not_nice)", value="`roast` `kill` `insane_detection`",
                        inline=False)
        embed.add_field(name="Miscellaneous (more info *info_miscellaneous)",
                        value="`coinflip` `hello` `credits` `hi bot`(creators only)", inline=False)
        embed.add_field(name="epic gifs (more info *info_gifs)", value="`table_flip` `fish_artillery` `nani`",
                        inline=False)
        embed.add_field(name="made by SunnyJimBob#7082 ever since 07/27/2020", value="_ ", inline=False)

        await message.channel.send(message.channel, embed=embed)

    # more info about not nice stuff
    elif message.content.startswith("*info_not_nice"):
        embed = discord.Embed(title="More info about not nice stuff", description='info for you :slight_smile:',
                              colour=Colour.red())
        embed.add_field(name="roast", value="*roast @user will roast anyone you put after *roast", inline=False)
        embed.add_field(name="kill", value="*kill @user will make anyone you put after *kill die in a funny way",
                        inline=False)
        embed.add_field(name="insane_detection", value="*insane_detection tells you how sane you are")

        await message.channel.send(message.channel, embed=embed)

    # more info about Miscellaneous

    elif message.content.startswith('*info_miscellaneous'):
        embed = discord.Embed(title='More info about miscellaneous', description='help for you :slight_smile:', colour=Colour.gold())
        embed.add_field(name="hello", value="*hello makes the bot say hello back to you", inline=False)
        embed.add_field(name="coinflip", value="*coinflip randomly chooses between heads and tails ",inline=False)
        embed.add_field(name="credits",value="*credits gives you the list of people who worked on this bot", inline=False)
        embed.add_field(name="hi bot",value="only for creators",inline=False)
        await message.channel.send(embed=embed)

    # more info about gifs

    elif message.content.startswith('*info_gifs'):
        embed = discord.Embed(title="more info about gifs", description='info for you :slight_smile:',
                              colour=Colour.green())
        embed.add_field(
            name="*table_flip",
            value="will give you a table flip gif (credit to https://tenor.com/view/table-flip-machine-kaomoji-gif-17427776)",
            inline=False)
        embed.add_field(
            name="*fish_artillery",
            value="will give you a gif of a fish cannon (credit to https://tenor.com/view/fishy-explosion-human-fish-cannon-gif-17822939)",
            inline=False)
        embed.add_field(
            name="*nani",
            value=" will give you a nani gif (credit to https://media.giphy.com/media/1NVugSXiJGJZvWMOud/giphy.gif)",
            inline=False)

        await message.channel.send(message.channel, embed=embed)

        # coinflip
    elif message.content.startswith('*coinflip'):
        ok = random.randint(1, 100)
        if ok > 50:
            text = "heads"
        else:
            text = "tails"
        await message.channel.send(text)
    # credits
    elif message.content.startswith('*credits'):
        embed = discord.Embed(title='Credits', colour=Colour.blue())
        embed.add_field(name="creator", value="SunnyJimBob#7082", inline=False)
        embed.add_field(name="contributor", value="Meow.#6462", inline=False)
        embed.add_field(name="sponsors", value="None(yet)", inline=False)

        await message.channel.send(message.channel, embed=embed)
    # hi bot
    elif message.content.startswith('*hi bot'):
        if str(message.author) == "SunnyJimBob#7082":
            await message.channel.send("hello creator")
        else:
            await message.channel.send("***ew your a normie, not a creator*** :rage: ")


    # gifs

    elif message.content.startswith('*table_flip'):
        await message.channel.send("https://tenor.com/view/table-flip-machine-kaomoji-gif-17427776")
    elif message.content.startswith('*fish_artillery'):
        await message.channel.send("https://tenor.com/view/fishy-explosion-human-fish-cannon-gif-17822939")
    elif message.content.startswith('*nani'):
        await message.channel.send("https://media.giphy.com/media/1NVugSXiJGJZvWMOud/giphy.gif")

    # insane_detection

    elif message.content.startswith('*insane_detection'):
        sane = random.randint(1, 100)
        if sane > 50:
            await message.channel.send("<@"+str(message.author.id) + ">")
            embed = discord.Embed(title='Your insane!', colour=Colour.dark_red())
            embed.add_field(name="you are " + str(sane) + "% insane", value=":zany_face:")
            embed.add_field(name="Should you see a doctor?", value="Um duh your insane!!!", inline=False)
        elif sane < 50:
            message.channel.send("<@"+str(message.author.id)+">")
            embed = discord.Embed(title='Your sane!', colour=Colour.dark_blue())
            embed.add_field(name="you are " + str(sane) + "% insane", value=":slight_smile:")
            embed.add_field(name="Should you see a doctor?", value="No, but you should still get it checked",
                            inline=False)
        await message.channel.send(message.channel, embed=embed)

    # roast
    elif message.content.startswith('*roast'):
        hi = random.randint(1, 7)
        if hi == 1:
            await message.channel.send('Mirrors cant talk, luckly for you, they cant laugh either :rofl:')
        elif hi == 2:
            await message.channel.send('Some day youll go far... and i hope you stay there :rofl:')
        elif hi == 3:
            await message.channel.send('If laughter is the best medicine, your face must be curing the world. :rofl:')
        elif hi == 4:
            await message.channel.send(
                'When i see your face theres not a thing i would change... except the direction i was walking in :rofl:')
        elif hi == 5:
            await message.channel.send('Hey, you have something on your chin... no, the 3rd one down :rofl:')
        elif hi == 6:
            await message.channel.send('you :rofl:')
        elif hi == 7:
            await message.channel.send('Everyone when you fall: OMG is the floor ok?')
Exemplo n.º 15
0
from discord import Colour
from random import seed, randint
from datetime import datetime

seed(datetime.now())

colours = [
    Colour.teal(),
    Colour.dark_teal(),
    Colour.green(),
    Colour.dark_green(),
    Colour.blue(),
    Colour.dark_blue(),
    Colour.purple(),
    Colour.dark_purple(),
    Colour.magenta(),
    Colour.dark_magenta(),
    Colour.gold(),
    Colour.dark_gold(),
    Colour.orange(),
    Colour.dark_orange(),
    Colour.red(),
    Colour.dark_red(),
    Colour.lighter_grey(),
    Colour.light_grey(),
    Colour.dark_grey(),
    Colour.darker_grey(),
    Colour.blurple(),
    Colour.greyple(),
    Colour.from_rgb(randint(0, 255), randint(0, 255), randint(0, 255))
]
Exemplo n.º 16
0
async def user_account_info(ctx, data, bot_avatar_url):
    """
    Send user account details from network for Layer 2
    """
    signers = " ".join([
        f':map:`{signer["key"]}`\n:key:`{signer["type"]}` | :scales:`{signer["weight"]}`\n================'
        for signer in data["signers"]
    ])
    dt_format = datetime.strptime(data["last_modified_time"],
                                  '%Y-%m-%dT%H:%M:%SZ')
    account_info = Embed(
        title=f':office_worker: Current On-Chain Wallet State :office_worker:',
        colour=Colour.dark_blue(),
        timestamp=datetime.utcnow())
    account_info.set_author(
        name=f'{ctx.message.author} (ID: {ctx.message.author.id})',
        icon_url=bot_avatar_url,
        url=data["_links"]["self"]['href'])
    account_info.set_thumbnail(url=ctx.message.author.avatar_url)
    account_info.add_field(name=":map: Account Address :map:",
                           value=f'```{data["account_id"]}```',
                           inline=False)
    account_info.add_field(name=":calendar: Last Updated :calendar: ",
                           value=f'`{dt_format}`',
                           inline=True)
    account_info.add_field(name=":ledger: Last Ledger :ledger:",
                           value=f'`{data["last_modified_ledger"]}`',
                           inline=True)
    account_info.add_field(
        name="Thresholds",
        value=f'High: `{data["thresholds"]["high_threshold"]}`\n'
        f'Medium: `{data["thresholds"]["med_threshold"]}`\n'
        f'Low: `{data["thresholds"]["low_threshold"]}`')
    account_info.add_field(
        name=":money_with_wings: Sponsorship :money_with_wings: ",
        value=f'Sponsored: `{data["num_sponsored"]}`\n'
        f'Sponsoring: `{data["num_sponsoring"]}`')
    account_info.add_field(
        name=":triangular_flag_on_post:  Flags :triangular_flag_on_post: ",
        value=f'Immutable: `{data["flags"]["auth_immutable"]}`\n'
        f'Required: `{data["flags"]["auth_required"]}`\n'
        f'Revocable: `{data["flags"]["auth_revocable"]}`\n')
    account_info.add_field(
        name=f':pen_ballpoint: Account Signers :pen_ballpoint: ',
        value=signers,
        inline=False)
    account_info.add_field(
        name=f':sunrise:  Horizon Access :sunrise: ',
        value=f'[Effects]({data["_links"]["effects"]["href"]}) | '
        f'[Offers]({data["_links"]["offers"]["href"]}) | '
        f'[Operations]({data["_links"]["operations"]["href"]}) | '
        f'[Payments]({data["_links"]["payments"]["href"]}) | '
        f'[Trades]({data["_links"]["payments"]["href"]}) | '
        f'[Transactions]({data["_links"]["transactions"]["href"]})',
        inline=False)
    await ctx.author.send(embed=account_info)

    gems_nfo = Embed(title=f'Account balances', color=Colour.dark_blue())
    for coin in data["balances"]:
        if not coin.get('asset_code'):
            cn = 'XLM'
        else:
            cn = coin["asset_code"]

        if cn == "XLM":
            rates = get_rates(coin_name=f'stellar')
            in_eur = rate_converter(float(coin['balance']),
                                    rates["stellar"]["eur"])
            in_usd = rate_converter(float(coin['balance']),
                                    rates["stellar"]["usd"])
            in_btc = rate_converter(float(coin['balance']),
                                    rates["stellar"]["btc"])
            in_eth = rate_converter(float(coin['balance']),
                                    rates["stellar"]["eth"])
            in_rub = rate_converter(float(coin['balance']),
                                    rates["stellar"]["rub"])
            in_ltc = rate_converter(float(coin['balance']),
                                    rates["stellar"]["ltc"])

            xlm_nfo = Embed(title=f'XLM Wallet Balance Details',
                            description=f'```{coin["balance"]} XLM```',
                            color=Colour.dark_blue())
            xlm_nfo.add_field(name=f':flag_us: USA', value=f'$ {in_usd:.4f}')
            xlm_nfo.add_field(name=f':flag_eu: EUR', value=f'€ {in_eur:.4f}')
            xlm_nfo.add_field(name=f':flag_ru:  RUB', value=f'₽ {in_rub}')
            xlm_nfo.add_field(name=f'BTC', value=f'₿ {in_btc:.8f}')
            xlm_nfo.add_field(name=f'ETH', value=f'Ξ {in_eth:.8f}')
            xlm_nfo.add_field(name=f'LTC', value=f'Ł {in_ltc:.8f}')
            xlm_nfo.set_footer(
                text='Conversion rates provided by CoinGecko',
                icon_url=
                "https://static.coingecko.com/s/thumbnail-007177f3eca19695592f0b8b0eabbdae282b54154e1be912285c9034ea6cbaf2.png"
            )
            await ctx.author.send(embed=xlm_nfo)

        else:
            gems_nfo.add_field(name=f':gem: {cn} :gem:',
                               value=f"{coin['balance']}")
            await ctx.author.send(embed=gems_nfo)