diff --git a/linux-install.sh b/linux-install.sh index 3bfd347..524b060 100644 --- a/linux-install.sh +++ b/linux-install.sh @@ -53,10 +53,7 @@ git clone https://github.com/NightStrang6r/FunPayVertex echo -e "${GREEN}Переход в директорию проекта...${NC}" cd FunPayVertex -echo -e "${GREEN}Установка зависимостей бота...${NC}" -sudo python3.11 setup.py - -echo -e "${GREEN}Сейчас необходимо выполнить первичную установку${NC}" +echo -e "${GREEN}Установка зависимостей и первичная установка${NC}" sudo python3.11 main.py echo -e "${GREEN}Ок, теперь добавим бота как фоновый процесс${NC}" @@ -80,4 +77,4 @@ pm2 startup echo -e "\n${CYAN}Установка FunPayVertex завершена!${NC}" echo -e "${CYAN}Для просмотра логов используйте команду: pm2 logs FunPayVertex${NC}" -pm2 logs FunPayVertex \ No newline at end of file +pm2 logs FunPayVertex diff --git a/main.py b/main.py index dd1fc7c..10df4e7 100644 --- a/main.py +++ b/main.py @@ -1,114 +1,143 @@ -import Utils.config_loader as cfg_loader -from first_setup import first_setup -from colorama import Fore, Style -import Utils.logger -from Utils.logger import LOGGER_CONFIG -import logging.config -import colorama -import sys -import os -from vertex import Vertex -import Utils.exceptions as excs -from locales.localizer import Localizer - -logo = f""" -{Fore.CYAN}{Style.BRIGHT}███████╗██╗ ██╗███╗ ██╗██████╗ █████╗ ██╗ ██╗ -██╔════╝██║ ██║████╗ ██║██╔══██╗██╔══██╗╚██╗ ██╔╝ -█████╗ ██║ ██║██╔██╗ ██║██████╔╝███████║ ╚████╔╝ -██╔══╝ ██║ ██║██║╚██╗██║██╔═══╝ ██╔══██║ ╚██╔╝ -██║ ╚██████╔╝██║ ╚████║██║ ██║ ██║ ██║ -╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝ ╚═╝{Style.RESET_ALL} - - {Fore.RED}{Style.BRIGHT}██╗ ██╗███████╗██████╗ ████████╗███████╗██╗ ██╗ - ██║ ██║██╔════╝██╔══██╗╚══██╔══╝██╔════╝╚██╗██╔╝ - ██║ ██║█████╗ ██████╔╝ ██║ █████╗ ╚███╔╝ - ╚██╗ ██╔╝██╔══╝ ██╔══██╗ ██║ ██╔══╝ ██╔██╗ - ╚████╔╝ ███████╗██║ ██║ ██║ ███████╗██╔╝ ██╗ - ╚═══╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝{Style.RESET_ALL} -""" - -VERSION = "0.1.6" - -if getattr(sys, 'frozen', False): - os.chdir(os.path.dirname(sys.executable)) -else: - os.chdir(os.path.dirname(__file__)) - -folders = ["configs", "logs", "storage", "storage/cache", "storage/products"] -for i in folders: - if not os.path.exists(i): - os.makedirs(i) - -files = ["configs/auto_delivery.cfg", "configs/auto_response.cfg"] -for i in files: - if not os.path.exists(i): - with open(i, "w", encoding="utf-8") as f: - ... - -# UPDATE 0.0.9 -if os.path.exists("storage/cache/block_list.json"): - os.rename("storage/cache/block_list.json", "storage/cache/blacklist.json") -# UPDATE 0.0.9 - - -colorama.init() - - -logging.config.dictConfig(LOGGER_CONFIG) -logging.raiseExceptions = False -logger = logging.getLogger("main") -logger.debug("------------------------------------------------------------------") - - -print(logo) -print(f"{Fore.RED}{Style.BRIGHT}v{VERSION}{Style.RESET_ALL}\n") -print(f"{Fore.MAGENTA}{Style.BRIGHT}By {Fore.BLUE}{Style.BRIGHT}NightStranger, Lemarty{Style.RESET_ALL}") -print(f"{Fore.MAGENTA}{Style.BRIGHT} * GitHub: {Fore.BLUE}{Style.BRIGHT}https://github.com/NightStrang6r/FunPayVertex{Style.RESET_ALL}") -print(f"{Fore.MAGENTA}{Style.BRIGHT} * Telegram: {Fore.BLUE}{Style.BRIGHT}https://t.me/funpayplace") -print(f"{Fore.MAGENTA}{Style.BRIGHT} * Discord: {Fore.BLUE}{Style.BRIGHT}https://dsc.gg/funpay\n") - - -if not os.path.exists("configs/_main.cfg"): - first_setup() - sys.exit() - - -try: - logger.info("$MAGENTAЗагружаю конфиг _main.cfg...") - MAIN_CFG = cfg_loader.load_main_config("configs/_main.cfg") - localizer = Localizer(MAIN_CFG["Other"]["language"]) - _ = localizer.translate - - logger.info("$MAGENTAЗагружаю конфиг auto_response.cfg...") - AR_CFG = cfg_loader.load_auto_response_config("configs/auto_response.cfg") - RAW_AR_CFG = cfg_loader.load_raw_auto_response_config("configs/auto_response.cfg") - - logger.info("$MAGENTAЗагружаю конфиг auto_delivery.cfg...") - AD_CFG = cfg_loader.load_auto_delivery_config("configs/auto_delivery.cfg") -except excs.ConfigParseError as e: - logger.error(e) - logger.error("Завершаю программу...") - sys.exit() -except UnicodeDecodeError: - logger.error("Произошла ошибка при расшифровке UTF-8. Убедитесь, что кодировка файла = UTF-8, " - "а формат конца строк = LF.") - logger.error("Завершаю программу...") - sys.exit() -except: - logger.critical("Произошла непредвиденная ошибка.") - logger.debug("TRACEBACK", exc_info=True) - logger.error("Завершаю программу...") - sys.exit() - -localizer = Localizer(MAIN_CFG["Other"]["language"]) - -try: - Vertex(MAIN_CFG, AD_CFG, AR_CFG, RAW_AR_CFG, VERSION).init().run() -except KeyboardInterrupt: - logger.info("Завершаю программу...") - sys.exit() -except: - logger.critical("При работе Вертекса произошла необработанная ошибка.") - logger.debug("TRACEBACK", exc_info=True) - logger.critical("Завершаю программу...") - sys.exit() +import os +import subprocess + +def check_and_install_libraries(libraries): + missing_libraries = [] + for library in libraries: + try: + __import__(library) + except ImportError: + missing_libraries.append(library) + + if missing_libraries: + print(f'Отсутствующие библиотеки: {missing_libraries}') + choice = input('Хотите установить их? (y/n): ') + if choice.lower() == 'y': + for library in missing_libraries: + install_command = f'pip install {library}' + subprocess.call(install_command, shell=True) + try: + __import__(library) + except ImportError: + print(f'Не удалось установить {library}. Пожалуйста, установите его вручную.') + +# Список библиотек, которые вы хотите проверить и установить при необходимости +required_libraries = ['requests', 'telebot', 'colorama', 'requests_toolbelt', 'psutil', 'bs4', 'aiohttp'] + +check_and_install_libraries(required_libraries) + +# Теперь можно импортировать остальные модули и продолжить выполнение скрипта +import Utils.config_loader as cfg_loader +from first_setup import first_setup +from colorama import Fore, Style +import Utils.logger +from Utils.logger import LOGGER_CONFIG +import logging.config +import colorama +import sys +import os +from vertex import Vertex +import Utils.exceptions as excs +from locales.localizer import Localizer + +logo = f""" +{Fore.CYAN}{Style.BRIGHT}███████╗██╗ ██╗███╗ ██╗██████╗ █████╗ ██╗ ██╗ +██╔════╝██║ ██║████╗ ██║██╔══██╗██╔══██╗╚██╗ ██╔╝ +█████╗ ██║ ██║██╔██╗ ██║██████╔╝███████║ ╚████╔╝ +██╔══╝ ██║ ██║██║╚██╗██║██╔═══╝ ██╔══██║ ╚██╔╝ +██║ ╚██████╔╝██║ ╚████║██║ ██║ ██║ ██║ +╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝ ╚═╝{Style.RESET_ALL} + + {Fore.RED}{Style.BRIGHT}██╗ ██╗███████╗██████╗ ████████╗███████╗██╗ ██╗ + ██║ ██║██╔════╝██╔══██╗╚══██╔══╝██╔════╝╚██╗██╔╝ + ██║ ██║█████╗ ██████╔╝ ██║ █████╗ ╚███╔╝ + ╚██╗ ██╔╝██╔══╝ ██╔══██╗ ██║ ██╔══╝ ██╔██╗ + ╚████╔╝ ███████╗██║ ██║ ██║ ███████╗██╔╝ ██╗ + ╚═══╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝{Style.RESET_ALL} +""" + +VERSION = "0.1.6" + +if getattr(sys, 'frozen', False): + os.chdir(os.path.dirname(sys.executable)) +else: + os.chdir(os.path.dirname(__file__)) + +folders = ["configs", "logs", "storage", "storage/cache", "storage/products"] +for i in folders: + if not os.path.exists(i): + os.makedirs(i) + +files = ["configs/auto_delivery.cfg", "configs/auto_response.cfg"] +for i in files: + if not os.path.exists(i): + with open(i, "w", encoding="utf-8") as f: + ... + +# UPDATE 0.0.9 +if os.path.exists("storage/cache/block_list.json"): + os.rename("storage/cache/block_list.json", "storage/cache/blacklist.json") +# UPDATE 0.0.9 + + +colorama.init() + + +logging.config.dictConfig(LOGGER_CONFIG) +logging.raiseExceptions = False +logger = logging.getLogger("main") +logger.debug("------------------------------------------------------------------") + + +print(logo) +print(f"{Fore.RED}{Style.BRIGHT}v{VERSION}{Style.RESET_ALL}\n") +print(f"{Fore.MAGENTA}{Style.BRIGHT}By {Fore.BLUE}{Style.BRIGHT}NightStranger, Lemarty{Style.RESET_ALL}") +print(f"{Fore.MAGENTA}{Style.BRIGHT} * GitHub: {Fore.BLUE}{Style.BRIGHT}https://github.com/NightStrang6r/FunPayVertex{Style.RESET_ALL}") +print(f"{Fore.MAGENTA}{Style.BRIGHT} * Telegram: {Fore.BLUE}{Style.BRIGHT}https://t.me/funpayplace") +print(f"{Fore.MAGENTA}{Style.BRIGHT} * Discord: {Fore.BLUE}{Style.BRIGHT}https://dsc.gg/funpay\n") + + +if not os.path.exists("configs/_main.cfg"): + first_setup() + sys.exit() + + +try: + logger.info("$MAGENTAЗагружаю конфиг _main.cfg...") + MAIN_CFG = cfg_loader.load_main_config("configs/_main.cfg") + localizer = Localizer(MAIN_CFG["Other"]["language"]) + _ = localizer.translate + + logger.info("$MAGENTAЗагружаю конфиг auto_response.cfg...") + AR_CFG = cfg_loader.load_auto_response_config("configs/auto_response.cfg") + RAW_AR_CFG = cfg_loader.load_raw_auto_response_config("configs/auto_response.cfg") + + logger.info("$MAGENTAЗагружаю конфиг auto_delivery.cfg...") + AD_CFG = cfg_loader.load_auto_delivery_config("configs/auto_delivery.cfg") +except excs.ConfigParseError as e: + logger.error(e) + logger.error("Завершаю программу...") + sys.exit() +except UnicodeDecodeError: + logger.error("Произошла ошибка при расшифровке UTF-8. Убедитесь, что кодировка файла = UTF-8, " + "а формат конца строк = LF.") + logger.error("Завершаю программу...") + sys.exit() +except: + logger.critical("Произошла непредвиденная ошибка.") + logger.debug("TRACEBACK", exc_info=True) + logger.error("Завершаю программу...") + sys.exit() + +localizer = Localizer(MAIN_CFG["Other"]["language"]) + +try: + Vertex(MAIN_CFG, AD_CFG, AR_CFG, RAW_AR_CFG, VERSION).init().run() +except KeyboardInterrupt: + logger.info("Завершаю программу...") + sys.exit() +except: + logger.critical("При работе Вертекса произошла необработанная ошибка.") + logger.debug("TRACEBACK", exc_info=True) + logger.critical("Завершаю программу...") + sys.exit() \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index b240ad9..0000000 --- a/setup.py +++ /dev/null @@ -1,22 +0,0 @@ -from pip._internal.cli.main import main - - -common_packages = [ - "psutil>=5.9.4", - "beautifulsoup4>=4.11.1", - "colorama>=0.4.6", - "requests==2.28.1", - "pytelegrambotapi==4.8.0", - "pillow>=9.3.0", - "aiohttp==3.8.3", - "requests_toolbelt==0.10.1" -] - - -def install_packages(packages_list: list[str]): - for pkg in packages_list: - main(["install", "-U", pkg]) - - -if __name__ == '__main__': - install_packages(common_packages)