forked from dymik739/modular-bot-framework-for-telegram
		
	auto-schedule-pro-v2: add lookup capability to current lesson requests and make styling more flexible
This commit is contained in:
		
							parent
							
								
									d6bd061090
								
							
						
					
					
						commit
						604054af9e
					
				@ -48,8 +48,13 @@ def get_preference_by_id(user_id, name):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_all_preferences_by_id(user_id):
 | 
			
		||||
    user_preferences = {"output-style": "legacy-vibrant"}
 | 
			
		||||
    user_preferences = {
 | 
			
		||||
        "output-style": "legacy-vibrant",
 | 
			
		||||
        "output-style-lesson": "None",
 | 
			
		||||
        "output-style-lookup": "None"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    # label defaults as defaults and let custom settings override these labels
 | 
			
		||||
    for i in user_preferences:
 | 
			
		||||
        user_preferences[i] += " <i>(default)</i>"
 | 
			
		||||
 | 
			
		||||
@ -303,10 +308,6 @@ def process(message, path):
 | 
			
		||||
 | 
			
		||||
    reference_time = int(current_time.strftime("%s")) - current_seconds
 | 
			
		||||
 | 
			
		||||
    output_style_preference = get_preference_by_id(message.from_user.id, "output-style")
 | 
			
		||||
    if output_style_preference == None:
 | 
			
		||||
        output_style_preference = "legacy-vibrant"
 | 
			
		||||
 | 
			
		||||
    if base_command == "!пара":
 | 
			
		||||
        # easter egg
 | 
			
		||||
        study_begin_ts = int(datetime(year=2023, month=9, day=4).strftime("%s"))
 | 
			
		||||
@ -327,6 +328,32 @@ def process(message, path):
 | 
			
		||||
        else:
 | 
			
		||||
            closest_lesson_time = min(schedule)
 | 
			
		||||
 | 
			
		||||
        # shifting lesson pointer if requested to do so
 | 
			
		||||
        if len(full_command) >= 2:
 | 
			
		||||
            possible_times = list(schedule.keys())
 | 
			
		||||
            current_pointer_position = possible_times.index(closest_lesson_time)
 | 
			
		||||
            total_list_length = len(possible_times)
 | 
			
		||||
 | 
			
		||||
            if len(full_command[1]) > 1 and full_command[1][1:].isdigit():
 | 
			
		||||
                if full_command[1][0] == "+":
 | 
			
		||||
                    current_pointer_position = (current_pointer_position + int(full_command[1][1:])) % total_list_length
 | 
			
		||||
                else:
 | 
			
		||||
                    current_pointer_position = (current_pointer_position - int(full_command[1][1:])) % total_list_length
 | 
			
		||||
 | 
			
		||||
                closest_lesson_time = possible_times[current_pointer_position]
 | 
			
		||||
 | 
			
		||||
        # getting corrent style
 | 
			
		||||
        output_style_preference = "legacy-vibrant"
 | 
			
		||||
 | 
			
		||||
        general_output_style_preference = get_preference_by_id(message.from_user.id, "output-style")
 | 
			
		||||
        if general_output_style_preference != None:
 | 
			
		||||
            output_style_preference = general_output_style_preference
 | 
			
		||||
 | 
			
		||||
        specific_output_style_preference = get_preference_by_id(message.from_user.id, "output-style-lesson")
 | 
			
		||||
        if specific_output_style_preference != None:
 | 
			
		||||
            output_style_preference = specific_output_style_preference
 | 
			
		||||
 | 
			
		||||
        # returning generated pair description
 | 
			
		||||
        return get_lesson_description(schedule, reference_time, closest_lesson_time, current_day,
 | 
			
		||||
                current_week, custom_name_prefix="Актуальна пара", template=output_style_preference), "HTML"
 | 
			
		||||
 | 
			
		||||
@ -342,6 +369,16 @@ def process(message, path):
 | 
			
		||||
 | 
			
		||||
        lesson_list = [i for i in schedule if selected_day * 86400 <= i < (selected_day + 1) * 86400]
 | 
			
		||||
 | 
			
		||||
        output_style_preference = "legacy-vibrant"
 | 
			
		||||
 | 
			
		||||
        general_output_style_preference = get_preference_by_id(message.from_user.id, "output-style")
 | 
			
		||||
        if general_output_style_preference != None:
 | 
			
		||||
            output_style_preference = general_output_style_preference
 | 
			
		||||
 | 
			
		||||
        specific_output_style_preference = get_preference_by_id(message.from_user.id, "output-style-lookup")
 | 
			
		||||
        if specific_output_style_preference != None:
 | 
			
		||||
            output_style_preference = specific_output_style_preference
 | 
			
		||||
 | 
			
		||||
        lesson_descriptions_list = [get_lesson_description(schedule, reference_time, lesson_time, current_day,
 | 
			
		||||
                current_week, overrides=preferences, custom_name_prefix="Назва", template=output_style_preference, force_date_at_top=True)
 | 
			
		||||
                                    for lesson_time in lesson_list]
 | 
			
		||||
@ -357,7 +394,7 @@ def process(message, path):
 | 
			
		||||
            prefs = get_all_preferences_by_id(message.from_user.id)
 | 
			
		||||
 | 
			
		||||
            if full_command[2] in prefs:
 | 
			
		||||
                if full_command[2] == "output-style":
 | 
			
		||||
                if full_command[2] in ["output-style", "output-style-lesson", "output-style-lookup"]:
 | 
			
		||||
                    if full_command[3] not in os.listdir(module_path + "templates/"):
 | 
			
		||||
                        return f"Стилю {full_command[3]} не існує; доступні варіанти: " \
 | 
			
		||||
                                + ', '.join(os.listdir(module_path + "templates/")), "HTML"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user