def get_data(value1, value2, path): try: ini = configparser.ConfigParser() ini.read(path) return ini[value1][value2] except Exception as error: exception.error(error, path)
def get_ini_list(source1, section, value): try: ini = ini_manager.get_ini(source1) source = json.loads(ini.get('{}'.format(section), '{}'.format(value))) return source except Exception as error: exception.error(error, source1)
def get_ini(path): try: ini = configparser.ConfigParser() ini.read(path) return ini except Exception as error: exception.error(error, path)
def get_status(value1, value2, path): try: ini = configparser.ConfigParser() ini.read(path) if int(ini[value1][value2]) == 2: return True else: return False except Exception as error: exception.error(error, path)
def get_region(guild): try: path = c.CLIENT_JSON['guild'] if json_manager.get_status(path, 'guild_id', guild): data = json_manager.get_data(path) for guild_data in data: if guild_data['guild_id'] == guild: return guild_data['time_line'] except Exception as error: exception.error(error)
def get_data(source1): try: data = [] source = json.load(open_file(source1, 'r')) for value in source['data']: data.append(value) return data except Exception as error: exception.error(error, source1)
def event_in_progress(guild, value, mode): try: guild_t = origin.get_region(guild) path1 = c.GUILD_PATH['kc_tracker.json'].format(guild) path2 = c.GUILD_PATH['kc_tracker_g.ini'] LIST1 = json_manager.get_ini_list(path2, 'CONSTANT1', 'NAME') LIST2 = json_manager.get_ini_list(path2, 'CONSTANT2', 'PRE') DATA1 = json_manager.get_data(path1) COUNTER = 0 for data in DATA1: CHECK = True USERNAME = data['user_rsn'] USERNAME = USERNAME.replace(' ', '%20') while CHECK: USER = hiscores_kc.Hiscores2V(USERNAME, LIST1, LIST2) if USER.getKc(value['event_name']): while CHECK: CHECK = False if data[value['event_name']]: current = server_timer.get_current_time( guild_t) USER_STATS = USER.getKc(value['event_name']) target_keys = [ '{}_current'.format(value['event_name']) ] target_values = [int(USER_STATS['kc'])] json_manager.update(path1, 'user_rsn', data['user_rsn'], target_keys, target_values) client_message = 'Guild id: {} | Guild time: {} | Event: {} | Mode: {} | Rsn: {} | Registration KC: {} | Current KC: {} | Status: {}'.format( guild, current.strftime('%H:%M'), value['event_name'], mode, data['user_rsn'], data[value['event_name']], USER_STATS['kc'], 'KC update') console_interface.console_message( 'KC update', client_message) logger.log_event( guild, 'kc_tracker', c.CLIENT_MESSAGES['kc_tracker_update'], client_message) else: if COUNTER >= 10: CHECK = False COUNTER = 0 else: COUNTER += 1 except Exception as error: exception.error(error)
def event_in_progress(guild, value, mode): try: guild_t = origin.get_region(guild) path1 = c.GUILD_PATH['tracker.json'].format(guild) DATA1 = json_manager.get_data(path1) COUNTER = 0 for data in DATA1: CHECK = True USERNAME = data['user_rsn'] USERNAME = USERNAME.replace(' ', '%20') while CHECK: USER = hiscores_xp.Hiscores(USERNAME, 'N') if USER.status != 404: if hasattr(USER, 'stats'): while CHECK: CHECK = False if data[value['event_name']]: current = server_timer.get_current_time( guild_t) target_keys = [ '{}_current'.format( value['event_name']) ] target_values = [ USER.stats[value['event_name']] ['experience'] ] json_manager.update( path1, 'user_rsn', data['user_rsn'], target_keys, target_values) client_message = 'Guild id: {} | Guild time: {} | Event: {} | Mode: {} | Rsn: {} | Registration XP: {} | Current XP: {} | Status: {}'.format( guild, current.strftime('%H:%M'), value['event_name'], mode, data['user_rsn'], data[value['event_name']], USER.stats[ value['event_name']]['experience'], 'XP update') console_interface.console_message( 'XP update', client_message) logger.log_event( guild, 'xp_tracker', c.CLIENT_MESSAGES['xp_tracker_update'], client_message) else: if COUNTER >= 10: CHECK = False COUNTER = 0 else: COUNTER += 1 except Exception as error: exception.error(error)
def update_data(value1, value2, value3, path): try: ini = configparser.ConfigParser() ini.read(path) if ini.has_option(value1, value2): ini.set(value1, value2, str(value3)) ini.write(file_manager.open_file(path, 'w')) return True else: return False except Exception as error: exception.error(error, path)
def log_error(module, event, event_log): try: time = server_timer.get_server_current_time() path = '{}{}'.format( c.CLIENT_PATH['origin'], c.CLIENT_PATH['logs2'] ) file_manager.create_directory(path, server_timer.get_server_current_date()) event_message_log = '{} | {} | {} | {}'.format(c.CLIENT_NAME, time.strftime('%y/%m/%d %H:%M:%S'), event, event_log) file_manager.write_to_file('{}/{}/{}.txt'.format(path, server_timer.get_server_current_date(), module), 'a', event_message_log) except Exception as error: exception.error(error)
def update(source1, key, id, target_keys, target_values): try: source = json.load(open_file(source1, 'r')) for line in source['data']: if line[key] == id: if isinstance(target_keys, list): for index, target_key in enumerate(target_keys): line[target_key] = target_values[index] else: line[target_keys] = target_values json.dump(source, open_file(source1, 'w'), indent=2) except Exception as error: exception.error(error, source1)
def log_event(data1, module, event, event_log): try: time = server_timer.get_server_current_time() path = '{}{}{}{}{}/'.format( c.CLIENT_PATH['guild'], str(data1.guild.id) if hasattr(data1, 'guild') else str(data1), c.CLIENT_PATH['logs'], c.CLIENT_PATH['origin2'], module ) event_message_log = '{} | {} | {} | {}'.format(c.CLIENT_NAME, time.strftime('%y/%m/%d %H:%M:%S'), event, event_log) file_manager.create_directory(path, server_timer.get_server_current_date()) file_manager.write_to_file('{}/{}/{}.txt'.format(path, server_timer.get_server_current_date(), module), 'a', event_message_log) except Exception as error: exception.error(error)
def reset(EVENT_NAME, USER, data, current, guild_id): try: USER_STATS = USER.getKc(EVENT_NAME) path1 = c.GUILD_PATH['kc_tracker.json'].format(guild_id) target_keys = [EVENT_NAME, '{}_current'.format(EVENT_NAME)] target_values = [int(USER_STATS['kc']), int(USER_STATS['kc'])] json_manager.update(path1, 'user_rsn', data['user_rsn'], target_keys, target_values) client_message = 'Guild id: {} | Event: {} | Rsn: {} | Registration KC: {} | Current_KC: {} | Guild time: {} Status: {}'.format( guild_id, EVENT_NAME, data['user_rsn'], data[EVENT_NAME], USER_STATS['kc'], current.strftime('%H:%M'), 'KC reset') console_interface.console_message('KC reset', client_message) logger.log_event(guild_id, 'kc_tracker', c.CLIENT_MESSAGES['kc_tracker_reset'], client_message) except Exception as error: exception.error(error)
def get_status(source1, keys, values): try: STATUS = False STATUS_COUNT = 0 source = json.load(file_manager.open_file(source1, 'r')) for line in source['data']: if isinstance(keys, list): for index, key in enumerate(keys): if line[key] == values[index]: STATUS_COUNT += 1 if STATUS_COUNT == len(keys): STATUS = True else: if line[keys] == values: STATUS = True return STATUS except Exception as error: exception.error(error, source1)
def tracker_update_kc(self, guild): try: while True: guild_t = origin.get_region(guild) path2 = c.GUILD_PATH['event.json'].format(guild) LIST1 = json_manager.get_data(path2) guild_current = server_timer.get_current_time(guild_t) if LIST1: for value in LIST1: if value['type'] == 3 and value['status'] == 1: if guild_current.month == int( value['date_start'][:2]): if guild_current.day == int( value['date_start'][3:]): if value['time_start'] + 1 >= guild_current.hour and value[ 'time_start'] + 1 <= guild_current.hour + 5: self.event_start( guild, value, c.MODE_NAME['std']) if value['type'] == 3 and value['status'] == 1: if guild_current.month == int( value['date_end'][:2]): if guild_current.day == int( value['date_end'][3:]): if guild_current.hour + 6 >= value[ 'time_end'] and guild_current.hour < value[ 'time_end'] - 1: self.event_in_progress( guild, value, c.MODE_NAME['std']) if value['type'] == 4 and value['status'] == 1: if guild_current.month >= int( value['date_start'][:2]): if guild_current.day >= int( value['date_start'][3:]): self.event_in_progress( guild, value, c.MODE_NAME['rush']) time.sleep(60 * 10) except Exception as error: exception.error(error)
def reset(EVENT_NAME, USER, data, current, guild_id): try: path1 = c.GUILD_PATH['tracker.json'].format(guild_id) target_keys = [EVENT_NAME, '{}_current'.format(EVENT_NAME)] target_values = [ USER.stats[EVENT_NAME]['experience'], USER.stats[EVENT_NAME]['experience'] ] json_manager.update(path1, 'user_rsn', data['user_rsn'], target_keys, target_values) client_message = 'Guild id: {} | Event: {} | Rsn: {} | Registration XP: {} | Current_XP: {} | Hour: {} Status: {}'.format( guild_id, EVENT_NAME, data['user_rsn'], data[EVENT_NAME], USER.stats[EVENT_NAME]['experience'], current.strftime('%H:%M'), 'XP reset') console_interface.console_message('XP reset', client_message) logger.log_event(guild_id, 'xp_tracker', c.CLIENT_MESSAGES['xp_tracker_reset'], client_message) except Exception as error: exception.error(error)
def open_file(source1, permission): try: file = open(source1, permission, encoding='utf8') return file except Exception as error: exception.error(error, source1)
def get_current_time(region): try: LT = timezone(region) return datetime.now(LT) except Exception as error: exception.error(error)
def get_server_current_time(): try: LT = timezone(c.CLIENT_REGION) return datetime.now(LT) except Exception as error: exception.error(error)
def get_current_date(region): try: date = get_current_time(region) return date.strftime('%y.%m.%d') except Exception as error: exception.error(error)
def write_to_file(source1, permission, data1): try: with open(source1, permission) as data: data.write('{}\n'.format(data1)) except Exception as error: exception.error(error, source1)
def event_start(self, guild, value, mode): try: guild_t = origin.get_region(guild) path1 = c.GUILD_PATH['kc_tracker.json'].format(guild) path2 = c.GUILD_PATH['kc_rates.json'].format(guild) path2 = c.GUILD_PATH['kc_tracker_g.ini'] DATA1 = json_manager.get_data(path1) DATA2 = json_manager.get_data(path2) LIST1 = json_manager.get_ini_list(path3, 'CONSTANT1', 'NAME') LIST2 = json_manager.get_ini_list(path3, 'CONSTANT2', 'PRE') current = server_timer.get_current_time(guild_t) COUNTER = 0 USER = None for data in DATA1: CHECK = True USERNAME = data['user_rsn'] USERNAME = USERNAME.replace(' ', '%20') while CHECK: USER = hiscores_kc.Hiscores2V(USERNAME, LIST1, LIST2) if USER.status != 404: if USER.getKc(value['event_name']): while CHECK: CHECK = False if data[value['event_name']]: USER_STATS = USER.getKc( value['event_name']) target_keys = [ '{}_current'.format( value['event_name']) ] target_values = [int(USER_STATS['kc'])] json_manager.update( path1, 'user_rsn', data['user_rsn'], target_keys, target_values) client_message = 'Guild id: {} | Guild time: {} | Event: {} | Mode: {} | Rsn: {} | Registration KC: {} | Current_KC: {} | Status: {}'.format( guild, current.strftime('%H:%M'), value['event_name'], mode, data['user_rsn'], data[value['event_name']], USER_STATS['kc'], 'KC update') console_interface.console_message( 'KC update', client_message) logger.log_event( guild, 'kc_tracker', c.CLIENT_MESSAGES['kc_tracker_update'], client_message) else: if COUNTER >= 10: CHECK = False COUNTER = 0 else: COUNTER += 1 for value2 in DATA2: for key, value3 in value.items(): if key == value['event_name']: if (data['{}_current'.format(value['event_name'])] - data[value['event_name']] ) >= value2[value['event_name']] and value[ 'date_start'] == current.strftime( '%m.%d' ) and value['time_start'] == current.hour: self.reset(value['event_name'], USER, data, current, guild) else: pass if (data['{}_current'.format(value['event_name'])] - data[value['event_name']] ) >= value2[value['event_name']] * 2 and value[ 'date_start'] == current.strftime( '%m.%d') and value[ 'time_start'] + 1 == current.hour: self.reset(value['event_name'], USER, data, current, guild) else: pass if (data['{}_current'.format(value['event_name'])] - data[value['event_name']] ) >= value2[value['event_name']] * 3 and value[ 'date_start'] == current.strftime( '%m.%d') and value[ 'time_start'] + 2 == current.hour: self.reset(value['event_name'], USER, data, current, guild) else: pass if (data['{}_current'.format(value['event_name'])] - data[value['event_name']] ) >= value2[value['event_name']] * 4 and value[ 'date_start'] == current.strftime( '%m.%d') and value[ 'time_start'] + 3 == current.hour: self.reset(value['event_name'], USER, data, current, guild) else: pass if (data['{}_current'.format(value['event_name'])] - data[value['event_name']] ) >= value2[value['event_name']] * 5 and value[ 'date_start'] == current.strftime( '%m.%d') and value[ 'time_start'] + 4 == current.hour: self.reset(value['event_name'], USER, data, current, guild) else: pass if (data['{}_current'.format(value['event_name'])] - data[value['event_name']] ) >= value2['time_start'] + 5 == current.hour: self.reset(value['event_name'], USER, data, current, guild) else: pass except Exception as error: exception.error(error)
def create_directory(path, name): try: os.makedirs('{}{}'.format(path, name), exist_ok=True) except Exception as error: exception.error(error, path)