# Created by romain at 04/01/2020

import logging

import discord
from discord.ext import commands

from bot import TuxBot
from utils import Texts

log = logging.getLogger(__name__)


class HelpCommand(commands.HelpCommand):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.ignore_cogs = ["Monitoring", "Help", "Logs"]
        self.owner_cogs = []

    async def send_bot_help(self, mapping):
        owners = self.context.bot.owners
        owners_name = [
            f"{owner.name}#{owner.discriminator}"
            for owner in owners
        ]

        e = discord.Embed(
            color=discord.colour.Color.blue(),
            description=Texts(
                'help', self.context
            ).get(
                'main_page.description'
            ).format(
                ', '.join(owners_name[:-1]) + ' & ' + owners_name[-1]
            )
        )

        e.set_author(
            icon_url=self.context.author.avatar_url_as(format='png'),
            name=self.context.author
        )

        cogs = ""
        for extension in self.context.bot.cogs.values():
            if self.context.author not in owners \
                    and extension.qualified_name in self.owner_cogs:
                continue
            if self.context.author in owners \
                    and extension.qualified_name in self.ignore_cogs:
                continue
            if extension.qualified_name == "Jishaku":
                continue
            cogs += f"• {extension.icon} **{extension.qualified_name}**\n"

        e.add_field(
            name=Texts(
                'help', self.context
            ).get(
                'main_page.categories'
            ),
            value=cogs
        )

        await self.context.send(embed=e)


class Help(commands.Cog):
    def __init__(self, bot: TuxBot):
        bot.help_command = HelpCommand()


def setup(bot: TuxBot):
    bot.add_cog(Help(bot))