<reponame>ilyata76/dis-bot
######################################################################################################

from .command_separation import string_first_word
from .command_separation import string_another_word

from .prefix import prefix_handler
from .prefix import prefix_check
from .pathes import get_path_of_current_server

from .open_file import open_json

from .file_commands import commands_file_handler

from .help import help_handler

from .roll import roll_handler

from .collections import collection_handler

from .user import user_handler

######################################################################################################

def get_command(int_current_server_id : int, string_command : str) :
    """
        Возвращает команду и её синоним в виде [команда, синоним]
        
        Параметры функции:

            int_current_server_id:  текущий id сервера
            string_command:         заглавная команда, по которой создатся [,]
    """

    path = get_path_of_current_server(int_current_server_id)

    _json = open_json(path + '\\commands.json')

    return [string_command, _json[string_command]]


async def command_handler(message, client, int_current_server_id : int) :
    """
        ЗАГЛАВНАЯ ОБРАБОТКА: Функция, обеспечивающая обработку комманд PREFIX<всё последующее>

        Параметры:

            message:                discord.message объект
            client:                 discord.client объект
            int_current_server_id:  текущий ID сервера
    """

    if prefix_check(message.content, int_current_server_id) :

        string_command, int_j = string_first_word(message.content, "lower", int_current_server_id)

        if string_command in get_command(int_current_server_id, "pozhope") :
            string_target, int_j = string_another_word(message.content, "lower", int_current_server_id, int_j)
            if string_target != '' :
                await message.channel.send(string_target + ' получил по жопке нафик')

        elif string_command in get_command(int_current_server_id, "roll") :
            await roll_handler(message, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "prefix") :
            await prefix_handler(message, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "command") :
            await commands_file_handler(message, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "help") : 
            await help_handler(message, client, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "collection") :
            await collection_handler(message, client, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "user") :
            await user_handler(message, client, message.content, int_current_server_id, int_j)

        else : # ! string_command in lists
            return

    else : # ! prefix
        return



######################################################################################################

from .command_separation import string_first_word
from .command_separation import string_another_word

from .prefix import prefix_handler
from .prefix import prefix_check
from .pathes import get_path_of_current_server

from .open_file import open_json

from .file_commands import commands_file_handler

from .help import help_handler

from .roll import roll_handler

from .collections import collection_handler

from .user import user_handler

######################################################################################################

def get_command(int_current_server_id : int, string_command : str) :
    """
        Возвращает команду и её синоним в виде [команда, синоним]
        
        Параметры функции:

            int_current_server_id:  текущий id сервера
            string_command:         заглавная команда, по которой создатся [,]
    """

    path = get_path_of_current_server(int_current_server_id)

    _json = open_json(path + '\\commands.json')

    return [string_command, _json[string_command]]


async def command_handler(message, client, int_current_server_id : int) :
    """
        ЗАГЛАВНАЯ ОБРАБОТКА: Функция, обеспечивающая обработку комманд PREFIX<всё последующее>

        Параметры:

            message:                discord.message объект
            client:                 discord.client объект
            int_current_server_id:  текущий ID сервера
    """

    if prefix_check(message.content, int_current_server_id) :

        string_command, int_j = string_first_word(message.content, "lower", int_current_server_id)

        if string_command in get_command(int_current_server_id, "pozhope") :
            string_target, int_j = string_another_word(message.content, "lower", int_current_server_id, int_j)
            if string_target != '' :
                await message.channel.send(string_target + ' получил по жопке нафик')

        elif string_command in get_command(int_current_server_id, "roll") :
            await roll_handler(message, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "prefix") :
            await prefix_handler(message, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "command") :
            await commands_file_handler(message, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "help") : 
            await help_handler(message, client, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "collection") :
            await collection_handler(message, client, message.content, int_current_server_id, int_j)

        elif string_command in get_command(int_current_server_id, "user") :
            await user_handler(message, client, message.content, int_current_server_id, int_j)

        else : # ! string_command in lists
            return

    else : # ! prefix
        return
###################################################################################################### ###################################################################################################### Возвращает команду и её синоним в виде [команда, синоним]                  Параметры функции:              int_current_server_id:  текущий id сервера             string_command:         заглавная команда, по которой создатся [,] ЗАГЛАВНАЯ ОБРАБОТКА: Функция, обеспечивающая обработку комманд PREFIX<всё последующее>          Параметры:              message:                discord.message объект             client:                 discord.client объект             int_current_server_id:  текущий ID сервера # ! string_command in lists # ! prefix