diff --git a/.gitignore b/.gitignore index 4d75c18..b250f05 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ config/* modules/irc-bridge/error.log __pycache__/ +modules/auto-schedule-pro-v2/preference-db diff --git a/modules/auto-schedule-pro-v2/main.py b/modules/auto-schedule-pro-v2/main.py index e5561f9..22dcbac 100644 --- a/modules/auto-schedule-pro-v2/main.py +++ b/modules/auto-schedule-pro-v2/main.py @@ -79,6 +79,28 @@ def set_preference_by_id(user_id, name, value): writefile(f"preference-db/{user_id}.json", final_data) +def clear_preference_by_id(user_id, name, value): + if not os.path.exists(module_path + "preference-db/"): + os.mkdir(module_path + "preference-db/") + + preferences = {} + + if os.path.exists(module_path + f"preference-db/{user_id}.json"): + try: + raw_prefs = readfile(f"preference-db/{user_id}.json") + preferences = json.loads(raw_prefs) + except Exception as e: + preferences = {} + else: + preferences = {} + + if name in preferences: + del preferences[name] + + final_data = json.dumps(preferences) + writefile(f"preference-db/{user_id}.json", final_data) + + def load_template(template, part): return readfile(f"templates/{template}/{part}.msg") @@ -131,33 +153,6 @@ def get_name_of_lesson_type(lesson_type): if lesson_type in lesson_types_to_strings: return lesson_types_to_strings[lesson_type] -''' -def generate_lesson_description(lesson, start_datetime, end_datetime, current_day, current_week, overrides={}, - custom_name_prefix="Назва"): - output_settings = {"name": True, "date": True, "teacher": True, "link": True, "comment": True} - output_settings.update(overrides) - - result = "" - - if output_settings['name']: - result += f"{custom_name_prefix}: {escaped_string_html(lesson['name'])} ({escaped_string_html(get_name_of_lesson_type(lesson['type']))})\n" - - if output_settings['date']: - human_readable_date = get_human_readable_date(start_datetime, end_datetime, - current_day, current_week) - result += f"Дата: {escaped_string_html(human_readable_date)}\n" - - if output_settings['teacher']: - result += f"Викладач: {escaped_string_html(lesson['teacher'])}\n" - - if output_settings['link']: - result += f"Посилання: {escaped_string_html(lesson['link'])}\n" - - if output_settings['comment'] and 'comment' in lesson: - result += f"Примітка: {escaped_string_html(lesson['comment'])}\n" - - return result -''' def generate_lesson_description(lesson, start_datetime, end_datetime, current_day, current_week, overrides={}, custom_name_prefix="Назва", template="legacy-vibrant"): @@ -201,6 +196,7 @@ def generate_lesson_description(lesson, start_datetime, end_datetime, current_da return total_result + def get_schedule_data_from(filename): raw_schedule = json.loads(readfile(filename)) @@ -253,41 +249,6 @@ def get_lesson_description(schedule, reference_time, lesson_time, current_day, c lesson_start_datetime = datetime.fromtimestamp(reference_time + lesson_time) lesson_end_datetime = datetime.fromtimestamp(reference_time + lesson_time + 5400) - ''' - if lesson_record.__class__ == dict: - if force_date_at_top: - user_defined_overrides = dict(overrides) - internal_overrides = dict(overrides) - internal_overrides['date'] = False - - description = generate_lesson_description(lesson_record, lesson_start_datetime, lesson_end_datetime, current_day, - current_week, overrides=internal_overrides) - - if 'date' in user_defined_overrides and not user_defined_overrides['date']: - return description - else: - human_readable_date = get_human_readable_date(lesson_start_datetime, lesson_end_datetime, - current_day, current_week) - return f"{human_readable_date.capitalize()}:\n" + description - else: - return generate_lesson_description(lesson_record, lesson_start_datetime, lesson_end_datetime, current_day, - current_week, overrides=overrides) - - elif lesson_record.__class__ == list: - user_defined_overrides = dict(overrides) - internal_overrides = dict(overrides) - internal_overrides['date'] = False - - descriptions = [generate_lesson_description(i, lesson_start_datetime, lesson_end_datetime, current_day, - current_week, overrides=internal_overrides, custom_name_prefix=custom_name_prefix) for i in lesson_record] - - if 'date' in user_defined_overrides and not user_defined_overrides['date']: - return "\n".join(descriptions) - else: - human_readable_date = get_human_readable_date(lesson_start_datetime, lesson_end_datetime, - current_day, current_week) - return f"{human_readable_date.capitalize()}:\n" + "\n".join(descriptions) - ''' return generate_lesson_description(lesson_record, lesson_start_datetime, lesson_end_datetime, current_day, current_week, overrides=overrides, custom_name_prefix=custom_name_prefix, template=template) @@ -366,12 +327,12 @@ def process(message, path): return f"Пари у {WEEKDAYS_ACCUSATIVE[selected_day % 7]}:\n\n\n" + "\n".join(lesson_descriptions_list), "HTML" - elif base_command == "!schedule-ctl": + elif base_command == "!schedule-ctl" and len(full_command) >= 2: if full_command[1] == "list": prefs = get_all_preferences_by_id(message.from_user.id) return "Ваші персональні налаштування:\n" + '\n'.join([f"- {k} = {v}" for k, v in prefs.items()]), "HTML" - elif full_command[1] == "set": + elif full_command[1] == "set" and len(full_command) == 4: prefs = get_all_preferences_by_id(message.from_user.id) if full_command[2] in prefs: @@ -389,9 +350,13 @@ def process(message, path): else: return f"Такого налаштування не існує; переглянути наявні налаштування можна за допомогою команди !schedule-ctl list", "HTML" - elif full_command[1] == "get": + elif full_command[1] == "get" and len(full_command) == 3: requested_preference = get_preference_by_id(message.from_user.id, full_command[2]) return f"Налаштування {full_command[2]} має значення {requested_preference}", "HTML" + elif full_command[1] == "clear" and len(full_command) == 3: + reset_preference_by_id(message.from_user.id, full_command[2]) + return f"Очищено значення для налаштування {full_command[2]}, надалі для нього використовуватиметься стандартне значення", "HTML" + else: - return "Такої команди не існує", "HTML" + return "Такої команди не існує (або був використаний помилковий синтаксис)", "HTML"