# import functools
import logging

# import discord
from discord.ext import commands

#
# from tuxbot.cogs.Crypto.functions.extractor import extract
# from tuxbot.cogs.Crypto.functions.sync import encode
from tuxbot.core.bot import Tux
from tuxbot.core.i18n import (
    Translator,
)

# from tuxbot.core.utils.functions.extra import group_extra, ContextPlus


log = logging.getLogger("tuxbot.cogs.Crypto")
_ = Translator("Crypto", __file__)


class Crypto(commands.Cog):
    def __init__(self, bot: Tux):
        self.bot = bot

    # @group_extra(name="ralgo")
    # async def _ralgo(self, ctx: commands.Context):
    #     if ctx.invoked_subcommand is None:
    #         await ctx.send_help("ralgo")
    #
    # @_ralgo.command(name="encode")
    # async def _ralgo_encode(self, ctx: ContextPlus, *, data: str = None):
    #     try:
    #         params = await extract(ctx.message.attachments, data, 10000)
    #     except ValueError:
    #         return await ctx.send("Invalid data provided")
    #
    #     async with ctx.typing():
    #         output = await self.bot.loop.run_in_executor(
    #             None, functools.partial(encode, params)
    #         )
    #
    #     if params["graphical"]:
    #         return await ctx.send(file=output)
    #
    #     await ctx.send(output)
    #
    # @_ralgo.command(name="decode")
    # async def _ralgo_decode(self, ctx: ContextPlus, *, data: str = None):
    #     try:
    #         params = await extract(ctx.message.attachments, data, 100000)
    #     except ValueError:
    #         return await ctx.send("Invalid data provided")
    #
    #     async with ctx.typing():
    #         output = await self.bot.loop.run_in_executor(
    #             None, functools.partial(encode, params)
    #         )
    #
    #     if isinstance(output, discord.File):
    #         return await ctx.send(file=output)
    #
    #     await ctx.send(output)