# -*- coding: utf-8 -*- """Essential set of functions needed for discord/telegram bots and other types of apps""" from modules.functions import jsonLoad, jsonSave from os import sep def configGet(key: str, *args: str): """Get value of the config key Args: * key (str): The last key of the keys path. * *args (str): Path to key like: dict[args][key]. Returns: * any: Value of provided key """ this_dict = jsonLoad("config.json") this_key = this_dict for dict_key in args: this_key = this_key[dict_key] return this_key[key] def configAppend(key: str, value, *args: str): """Set key to a value Args: * key (str): The last key of the keys path. * value (str/int/float/list/dict/None): Some needed value. * *args (str): Path to key like: dict[args][key]. """ this_dict = jsonLoad("config.json") string = "this_dict" for arg in args: string += f'["{arg}"]' if type(value) in [str]: string += f'["{key}"].append("{value}")' else: string += f'["{key}"].append({value})' exec(string) jsonSave(this_dict, "config.json") return def configRemove(key, value): config = jsonLoad("config.json") config[key].remove(value) jsonSave("config.json", config) def locale(key: str, *args: str, locale=configGet("locale")): """Get value of locale string Args: * key (str): The last key of the locale's keys path. * *args (list): Path to key like: dict[args][key]. * locale (str): Locale to looked up in. Defaults to config's locale value. Returns: * any: Value of provided locale key """ if (locale == None): locale = configGet("locale") try: this_dict = jsonLoad(f'locale{sep}{locale}.json') except FileNotFoundError: try: this_dict = jsonLoad(f'locale{sep}{configGet("locale")}.json') except FileNotFoundError: return f'⚠️ Locale in config is invalid: could not get "{key}" in {str(args)} from locale "{locale}"' this_key = this_dict for dict_key in args: this_key = this_key[dict_key] try: return this_key[key] except KeyError: return f'⚠️ Locale in config is invalid: could not get "{key}" in {str(args)} from locale "{locale}"' def userSet(userid, key, value): user = jsonLoad(f"data{sep}users{sep}{userid}.json") user[key] = value jsonSave(f"data{sep}users{sep}{userid}.json", user) def userGet(userid, key): try: return jsonLoad(f"data{sep}users{sep}{userid}.json")[key] except KeyError: return None except FileNotFoundError: return None def userClear(userid, key): try: user = jsonLoad(f"data{sep}users{sep}{userid}.json") del user[key] jsonSave(f"data{sep}users{sep}{userid}.json", user) except KeyError: pass