изменили запуск, проверку карт+названия карт
This commit is contained in:
		
							
								
								
									
										122
									
								
								hlna.py
									
									
									
									
									
								
							
							
						
						
									
										122
									
								
								hlna.py
									
									
									
									
									
								
							| @@ -1,6 +1,5 @@ | ||||
| #!/usr/bin/env python3 | ||||
| import os | ||||
| import re | ||||
| import threading | ||||
|  | ||||
| from pathlib import Path | ||||
| @@ -46,11 +45,12 @@ delist_config = find_file(config_hlna+"deactivated") | ||||
| def print_line(text): | ||||
|     """Добавление тире вокруг текста, покраска""" | ||||
|     print(colorama.Fore.YELLOW + "-"*30) | ||||
|     print(colorama.Fore.GREEN + text) | ||||
|     print(f"{colorama.Fore.GREEN} + {text}") | ||||
|     print(colorama.Fore.YELLOW + "-"*30 + colorama.Style.RESET_ALL) | ||||
|  | ||||
| print_line(f"list_config=, {list_config}") | ||||
|  | ||||
|  | ||||
| def create_dir(directory): | ||||
|     """Проверка и создание директории""" | ||||
|     if not os.path.exists(directory): | ||||
| @@ -103,8 +103,6 @@ def config(name_server=list_config): | ||||
|         for i in name_server: | ||||
|             data = read_yaml(i) | ||||
|             print(f"{i} : {data['map']}") | ||||
|             port_s.append(data['Port']) | ||||
|             query_p.append(data['QueryPort']) | ||||
|             id_srv[data['SessionName']] = data['id_server'] | ||||
|  | ||||
|     count_maps = check_int("Укажите количество карт: \n") | ||||
| @@ -135,6 +133,12 @@ def config(name_server=list_config): | ||||
|             if 0 < amount_map <= 12: | ||||
|                 break | ||||
|  | ||||
|         if name_server != []: | ||||
|             for i in name_server: | ||||
|                 data = read_yaml(i) | ||||
|                 port_s.append(data['Port']) | ||||
|                 query_p.append(data['QueryPort']) | ||||
|  | ||||
|         if amount_map == 1: | ||||
|             map_s = "TheIsland" | ||||
|         elif amount_map == 2: | ||||
| @@ -165,34 +169,32 @@ def config(name_server=list_config): | ||||
|  | ||||
|         if name_server != []: | ||||
|             data = read_yaml(name_server[-1]) | ||||
|         h = (input("Укажите название Сервера: \n")) | ||||
|         if h == '': | ||||
|         name_server.append(input("Укажите название Сервера: \n")) | ||||
|         if name_server[-1] == '': | ||||
|             if map_s in name_server: | ||||
|                 name_server.pop(); name_server.append(map_s + str(name_server.count(map_s))) | ||||
|             else: | ||||
|                 name_server.pop(); name_server.append(map_s)  # если enter, то ставим последним элементом карту | ||||
|         else: | ||||
|             name_server.append(h) | ||||
|  | ||||
|  | ||||
|  | ||||
|         while True: | ||||
|             id_server = input("Укажите метку для запуска или конфигурирования этой карты") | ||||
|             if id_server == "": | ||||
|                 if id_srv == {}: | ||||
|                     print_line("Значение по умолчанию") | ||||
|             else: | ||||
|                 if id_srv != {}:  # Если есть хоть какой-то id | ||||
|                     if id_server in id_srv[name_server[-1]]: # тут ошибка ! | ||||
|                         break | ||||
|                     if id_server in id_srv.values():  # Если введёное уже есть в списке меток | ||||
|                         print_line("Метка уже занята") | ||||
|                     else: | ||||
|                         id_srv[name_server[-1]] = id_server | ||||
|                         break | ||||
|                 else: | ||||
|                     id_srv[name_server[-1]] = id_server | ||||
|                     break | ||||
|         # while True: | ||||
|         #     id_server = input("Укажите метку для запуска или конфигурирования этой карты\n") | ||||
|         #     if id_server == "": | ||||
|         #         if id_srv == {}: | ||||
|         #             print_line("Значение по умолчанию") | ||||
|         #     else: | ||||
|         # | ||||
|         # | ||||
|         #         if id_srv != {}:  # Если есть хоть какой-то id | ||||
|         #             # if id_server == id_srv[name_server[-1]]:  # тут ошибка ! | ||||
|         #             #     break | ||||
|         #             if id_server in id_srv.values():  # Если введёное уже есть в списке меток | ||||
|         #                 print_line("Метка уже занята") | ||||
|         #             else: | ||||
|         #                 id_srv[name_server[-1]] = id_server | ||||
|         #                 break | ||||
|         #         else: | ||||
|         #             id_srv[name_server[-1]] = id_server | ||||
|         #             break | ||||
|  | ||||
|         while True: | ||||
|             port_server = check_int("Укажите порт Сервера <7777>: \n") | ||||
| @@ -223,14 +225,13 @@ def config(name_server=list_config): | ||||
|         if max_players == 0: | ||||
|             max_players = 70 | ||||
|      | ||||
|         yaml_create(cluster_server, map_s, name_server[-1], port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override, id_srv[name_server[-1]]) | ||||
|         yaml_create(cluster_server, map_s, name_server[-1], port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override) | ||||
|          | ||||
|          | ||||
| def yaml_create(cluster_server, map_s, name_server, port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override, id_srv): | ||||
| def yaml_create(cluster_server, map_s, name_server, port_server, query_port, password_server, max_players, cluster_id, cluster_dir_override): | ||||
|     settings_hlna = [ | ||||
|         { | ||||
|             'map'            : map_s, | ||||
|             'id_server'      : id_srv, | ||||
|             'Cluster'        : cluster_server, | ||||
|             'SessionName'    : name_server, | ||||
|             'Port'           : port_server, | ||||
| @@ -255,7 +256,7 @@ def yaml_create(cluster_server, map_s, name_server, port_server, query_port, pas | ||||
| def enablemap(m,e): | ||||
|     """Тут переписать надо""" | ||||
|     m = m.split(",")  | ||||
|     m = check_name_map(m, False) | ||||
|     # m = check_name_map(m, False) | ||||
|     create_dir(config_hlna + "deactivated") | ||||
|     if e == True: | ||||
|         port_s = [] | ||||
| @@ -312,7 +313,8 @@ def servers(map_server=list_config): | ||||
|             else: | ||||
|                 print(colorama.Fore.RED + "Сервер не запущен" + colorama.Style.RESET_ALL) | ||||
|             print(f""" | ||||
|             Сервер: {i} | ||||
|             Имя сервера: {i} | ||||
|             Карта: {data['map']} | ||||
|             Моды: {data['ModsId']} | ||||
|             Пароль: {data['ServerPassword']} | ||||
|             Кластер: {data['Cluster']} | ||||
| @@ -328,7 +330,8 @@ def servers(map_server=list_config): | ||||
|             for i in delist_config: | ||||
|                 data = read_yaml(i, False) | ||||
|                 print(f""" | ||||
|                 Сервер: {i} | ||||
|                 Имя сервера: {i} | ||||
|                 Карта: {data['map']} | ||||
|                 Моды: {data['ModsId']} | ||||
|                 Пароль: {data['ServerPassword']} | ||||
|                 Кластер: {data['Cluster']} | ||||
| @@ -341,22 +344,31 @@ def servers(map_server=list_config): | ||||
|      | ||||
| @hlna.command(help='Для запуска, сконфигурированного сервера или кластера') | ||||
| @click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт") | ||||
| def start(m, map_server=list_config): | ||||
|     if map_server != []: | ||||
| def start(m, name_server=list_config): | ||||
|     dict_mapname = {} | ||||
|     for i in name_server: | ||||
|         data = read_yaml(i) | ||||
|         print_line(f"Название сервера: {i} | Карта: {data['map']} | Кластер: {data['clusterid']}") | ||||
|         dict_mapname[data['SessionName']] = data['map'] | ||||
|     print_line(f"Словарь названия сервера и карты {dict_mapname}") | ||||
|     names_serverstart = [] | ||||
|     for ns, v in dict_mapname.items(): | ||||
|         print_line(f"переменные v и m {v} & {m}") | ||||
|         if v in m: | ||||
|             names_serverstart.append(ns) | ||||
|             print_line(f"Карта которая запускается {ns}") | ||||
|     if name_server != []: | ||||
|         if m == "all": | ||||
|             print("Запускаем все активные карты") | ||||
|         else: | ||||
|             m = m.split(",") | ||||
|             m = check_name_map(m) | ||||
|             map_server = m | ||||
|  | ||||
|         for i in map_server: | ||||
|         for i in names_serverstart: | ||||
|             data = read_yaml(i) | ||||
|             create_dir(data['ServerPath'] + i) | ||||
|             print_line("Качаем карту: " + i) | ||||
|             starting_map = dict_mapname[i] | ||||
|             x = os.system( | ||||
|                 f"steamcmd +force_install_dir {data['ServerPath'] + i} +login anonymous +app_update 376030 +quit") | ||||
|             print_line("Карта скачана: " + i) | ||||
|  | ||||
|  | ||||
|             def start(i): | ||||
|                 os.chdir(data['ServerPath'] + i + "/ShooterGame/Binaries/Linux/") | ||||
| @@ -364,7 +376,8 @@ def start(m, map_server=list_config): | ||||
|                     f"./ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?MaxPlayers={data['MaxPlayers']}?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']}") | ||||
|  | ||||
|             if x == 0: | ||||
|                 threads = threading.Thread(target=start, args=(i,)) | ||||
|                 print_line("Карта скачана: " + i) | ||||
|                 threads = threading.Thread(target=start, args=(starting_map,)) | ||||
|                 threads.start() | ||||
|             else: | ||||
|                 print(f"Карта {i} не установлена") | ||||
| @@ -387,35 +400,16 @@ def delete(m, list_config=list_config): | ||||
|                 continue | ||||
|  | ||||
|  | ||||
| def read_yaml(map_server, flag=True): | ||||
| def read_yaml(name_server, flag=True): | ||||
|     # Читаем конфиги активных или неактивных карт в зависимости от флага | ||||
|     if flag == True: | ||||
|         dirs = f"{home_dir}/.config/hlna/{map_server}" | ||||
|         dirs = f"{home_dir}/.config/hlna/{name_server}" | ||||
|     else: | ||||
|         dirs = f"{home_dir}/.config/hlna/deactivated/{map_server}" | ||||
|         dirs = f"{home_dir}/.config/hlna/deactivated/{name_server}" | ||||
|     with open(dirs, "r") as yamlfile: | ||||
|         data = yaml.load(yamlfile, Loader=yaml.FullLoader) | ||||
|     return data[0]  # возвращаем словарь со всеми значениями | ||||
|  | ||||
|  | ||||
| def check_name_map(maps, flag=True): | ||||
|     map_choise = [] | ||||
|     for i in maps: | ||||
|         if flag == True: | ||||
|             if map_choise[-1] in list_config: | ||||
|                 print_line(f"{i} - Подготавливаем карту {map_choise[-1]}") | ||||
|             else: | ||||
|                 map_choise.pop() | ||||
|                 print("Карта-", i, "не установлена") | ||||
|         else: | ||||
|             if map_choise[-1] in delist_config or map_choise[-1] in list_config: | ||||
|                 print_line(f"{i} - Подготавливаем карту {map_choise[-1]}") | ||||
|             else: | ||||
|                 map_choise.pop() | ||||
|                 print("Карта -", i, "не установлена") | ||||
|                  | ||||
|     return map_choise | ||||
|      | ||||
|                  | ||||
| if __name__ == '__main__': | ||||
|     hlna() | ||||
|   | ||||
							
								
								
									
										27
									
								
								hlna_bot.py
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								hlna_bot.py
									
									
									
									
									
								
							| @@ -3,11 +3,12 @@ import time | ||||
| import os | ||||
| import telebot | ||||
| from telebot import types | ||||
| import subprocess | ||||
|  | ||||
| import hlna | ||||
|  | ||||
|  | ||||
| key_api = input("Укажите ключ бота") | ||||
| key_api = '6192661772:AAHB1dw4rXHOglgyTOpcsxwvLn4d3AKkvP4' | ||||
| #key_api = input("Укажите ключ бота\n") | ||||
| hlna_bot = telebot.TeleBot(f"{key_api}", parse_mode=None) | ||||
| map_server = hlna.list_config | ||||
|  | ||||
| @@ -37,7 +38,12 @@ def m_start(m): | ||||
| def m_chose(m): | ||||
|     if m.text.strip() == '🦖 Старт': | ||||
|         if map_server == []: | ||||
|             hlna_bot.send_message(m.chat.id, text="{0.first_name}, ниодна карта не установлена".format(m.from_user)) | ||||
|             menu_install = types.ReplyKeyboardMarkup(resize_keyboard=True) | ||||
|             k_install = types.KeyboardButton("Установить") | ||||
|             k_back = types.KeyboardButton("Назад") | ||||
|             menu_install.add(k_back, k_install) | ||||
|             hlna_bot.send_message(m.chat.id, text="{0.first_name}, ниодна карта не установлена".format(m.from_user), reply_markup=menu_install) | ||||
|             hlna_bot.register_next_step_handler(m, m_install) | ||||
|         else: | ||||
|             menu_start = types.ReplyKeyboardMarkup(resize_keyboard=True) | ||||
|             for i in map_server: | ||||
| @@ -48,9 +54,15 @@ def m_chose(m): | ||||
|             hlna_bot.send_message(m.chat.id, text="{0.first_name}, выбери карту".format(m.from_user), reply_markup=menu_start) | ||||
|     elif m.text.strip() == 'Назад': | ||||
|         m_start(m) | ||||
|     elif m.text.strip() == 'TheIsland': | ||||
|         hlna.start() | ||||
| #def m_start(m): | ||||
|     # elif m.text.strip() == 'TheIsland': | ||||
|     #     hlna.start() | ||||
| def m_install(m): | ||||
|     if m.text.strip() == 'Установить': | ||||
|         hlna_bot.send_message(m.chat.id, subprocess.check_output(hlna.config(), shell=True)) | ||||
|  | ||||
| print("Bot starting") | ||||
| hlna_bot.polling(none_stop=True, interval=0, timeout=999) | ||||
|  | ||||
|     # print("Start") | ||||
|     # | ||||
|  | ||||
| @@ -108,6 +120,5 @@ def m_chose(m): | ||||
| #             time.sleep(30) | ||||
| #             pass | ||||
|  | ||||
| print("Bot starting") | ||||
| hlna_bot.polling(none_stop=True, interval=0, timeout=999) | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user