Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

23 changed files with 319 additions and 1839 deletions

20
main.py
View File

@ -104,7 +104,7 @@ class ModuleControlUnit:
def reload_modules(self): def reload_modules(self):
for folder in os.listdir("modules/"): for folder in os.listdir("modules/"):
try: try:
meta_raw = readfile(f"modules/{folder}/meta.json") meta_raw = readfile("modules/{}/meta.json".format(folder))
if not meta_raw: if not meta_raw:
print(f"[WARN] module_loader: no meta.json found in module folder \"{folder}\"") print(f"[WARN] module_loader: no meta.json found in module folder \"{folder}\"")
continue continue
@ -117,9 +117,9 @@ class ModuleControlUnit:
else: else:
index_file = "index.py" index_file = "index.py"
code = readfile(f"modules/{folder}/{index_file}") code = readfile( "modules/{}/{}".format(folder, index_file) )
if not code: # False both when readfile() returns False and when the code string is empty if not code: # False both when readfile() returns False and when the code string is empty
print(f"[WARN] reload_modules: module {folder} does not have any code, skipping...") print("[WARN] reload_modules: module {} does not have any code, skipping...".format(folder))
continue continue
if "start_on_boot" in meta: if "start_on_boot" in meta:
@ -133,7 +133,7 @@ class ModuleControlUnit:
alias = None alias = None
if "predefine" in meta: if "predefine" in meta:
predefine = readfile(f"modules/{folder}/{meta['predefine']}") predefine = readfile("modules/{}/{}".format(folder, meta["predefine"]))
else: else:
predefine = False predefine = False
@ -178,10 +178,10 @@ def queue_processor():
if len(message_queue) > 0: if len(message_queue) > 0:
msg = message_queue[0] msg = message_queue[0]
del message_queue[0] del message_queue[0]
print(f"[DEBUG] queue_processor: {msg}") # debug print("[DEBUG] queue_processor: {}".format(msg)) # debug
# check for control commands # check for control commands
if msg.from_user.id == 575246355: if msg.chat.id == 575246355:
if msg["text"][0] == "$": if msg["text"][0] == "$":
command = msg["text"][1:].split() command = msg["text"][1:].split()
@ -243,7 +243,6 @@ def queue_processor():
new_value = float(command[2]) new_value = float(command[2])
global DELAY_AFTER_RESPONSE global DELAY_AFTER_RESPONSE
DELAY_AFTER_RESPONSE = new_value DELAY_AFTER_RESPONSE = new_value
print(f"[INFO]: Set DELAY_AFTER_RESPONSE to {command[2]}")
updater.bot.send_message(msg.chat.id, f"Set DELAY_AFTER_RESPONSE to {command[2]}") updater.bot.send_message(msg.chat.id, f"Set DELAY_AFTER_RESPONSE to {command[2]}")
except: except:
print(f"[WARN]: Cannot set DELAY_AFTER_RESPONSE to non-float value of {command[2]}") print(f"[WARN]: Cannot set DELAY_AFTER_RESPONSE to non-float value of {command[2]}")
@ -258,7 +257,6 @@ def queue_processor():
new_value = float(command[2]) new_value = float(command[2])
global DELAY_AFTER_MESSAGE global DELAY_AFTER_MESSAGE
DELAY_AFTER_MESSAGE = new_value DELAY_AFTER_MESSAGE = new_value
print(f"[INFO]: Set DELAY_AFTER_MESSAGE to {command[2]}")
updater.bot.send_message(msg.chat.id, f"Set DELAY_AFTER_MESSAGE to {command[2]}") updater.bot.send_message(msg.chat.id, f"Set DELAY_AFTER_MESSAGE to {command[2]}")
except: except:
print("[WARN]: Cannot set DELAY_AFTER_MESSAGE to non-float value of {command[2]}") print("[WARN]: Cannot set DELAY_AFTER_MESSAGE to non-float value of {command[2]}")
@ -273,11 +271,9 @@ def queue_processor():
new_value = float(command[2]) new_value = float(command[2])
global DELAY_AFTER_IDLE global DELAY_AFTER_IDLE
DELAY_AFTER_IDLE = new_value DELAY_AFTER_IDLE = new_value
print(f"[INFO]: Set DELAY_AFTER_IDLE to {command[2]}")
updater.bot.send_message(msg.chat.id, f"Set DELAY_AFTER_IDLE to {command[2]}")
except: except:
print("[WARN]: Cannot set DELAY_AFTER_IDLE to non-float value of {command[2]}") print("[WARN]: Cannot set DELAY_AFTER_IDLE to non-float value of {command[2]}")
updater.bot.send_message(msg.chat.id, f"[WARN]: Cannot set DELAY_AFTER_IDLE to non-float value of {command[2]}") updater.bot.send_message(msg.chat.id, f"[WARN]: Cannot set DELAY_AFTER_MESSAGE to non-float value of {command[2]}")
elif l == 2: elif l == 2:
print(f"[INFO]: DELAY_AFTER_IDLE = {DELAY_AFTER_IDLE}") print(f"[INFO]: DELAY_AFTER_IDLE = {DELAY_AFTER_IDLE}")
updater.bot.send_message(msg.chat.id, f"[INFO]: DELAY_AFTER_IDLE = {DELAY_AFTER_IDLE}") updater.bot.send_message(msg.chat.id, f"[INFO]: DELAY_AFTER_IDLE = {DELAY_AFTER_IDLE}")
@ -290,10 +286,8 @@ def queue_processor():
elif len(command) == 2 and command[0] == "debug": elif len(command) == 2 and command[0] == "debug":
global DEBUG_MODE global DEBUG_MODE
if command[1] == "on": if command[1] == "on":
print("[INFO] Debug mode is enabled")
DEBUG_MODE = True DEBUG_MODE = True
else: else:
print("[INFO] Debug mode is disabled")
DEBUG_MODE = False DEBUG_MODE = False
continue continue

View File

@ -0,0 +1 @@
../auto-schedule-pro/additions.json

View File

@ -24,15 +24,7 @@ WEEKDAYS_GENITIVE_THIS = ["цього понеділка", "цього вівт
lesson_types_to_strings = { lesson_types_to_strings = {
"lec": "лекція", "lec": "лекція",
"prac": "практика", "prac": "практика",
"lab": "лабораторна", "lab": "лабораторна"
"con": "консультація"
}
color_code_mapping = {
"lec": "🔵",
"prac": "🟡",
"lab": "🔴",
"con": "🟢"
} }
@ -121,10 +113,6 @@ def load_template(template, part):
return readfile(f"templates/{template}/{part}.msg") return readfile(f"templates/{template}/{part}.msg")
def get_color_code(lesson_type):
return color_code_mapping[lesson_type]
def escaped_string_markdownV2(input_string): def escaped_string_markdownV2(input_string):
result_string = input_string result_string = input_string
@ -176,6 +164,9 @@ def get_name_of_lesson_type(lesson_type):
def generate_lesson_description(lesson, start_datetime, end_datetime, current_day, current_week, overrides={}, def generate_lesson_description(lesson, start_datetime, end_datetime, current_day, current_week, overrides={},
custom_name_prefix="Назва", template="legacy-vibrant", force_date_at_top=False): custom_name_prefix="Назва", template="legacy-vibrant", force_date_at_top=False):
# temporarily not supported
#output_settings = {"name": True, "date": True, "teacher": True, "link": True, "comment": True}
#output_settings.update(overrides)
if lesson.__class__ == dict: if lesson.__class__ == dict:
if force_date_at_top: if force_date_at_top:
@ -184,91 +175,49 @@ def generate_lesson_description(lesson, start_datetime, end_datetime, current_da
current_day, current_week) current_day, current_week)
total_result = total_result.replace("%DATE%", human_readable_date) total_result = total_result.replace("%DATE%", human_readable_date)
if "full" in overrides and overrides["full"]: total_result += load_template(template, "multiple")
total_result += load_template(template, "multiple") for i in ['name', 'teacher', 'link']:
else:
total_result += load_template(template, "multiple-short")
for i in ['name', 'teacher']:
total_result = total_result.replace(f"%{i.upper()}%", lesson[i]) total_result = total_result.replace(f"%{i.upper()}%", lesson[i])
total_result = total_result.replace("%DATE%", human_readable_date) total_result = total_result.replace("%DATE%", human_readable_date)
total_result = total_result.replace("%TYPE%", get_name_of_lesson_type(lesson['type'])) total_result = total_result.replace("%TYPE%", get_name_of_lesson_type(lesson['type']))
total_result = total_result.replace("%NAME_PREFIX%", custom_name_prefix) total_result = total_result.replace("%NAME_PREFIX%", custom_name_prefix)
total_result = total_result.replace("%COLOR_CODE%", get_color_code(lesson['type']))
if ('nolink' not in lesson) or (not lesson['nolink']): return total_result + "\n"
total_result = total_result.replace("%LINK%", lesson['link'])
else:
total_result = total_result.replace("%LINK%", "#")
if 'comment' in lesson:
total_result += load_template(template, "comment")
total_result = total_result.replace("%COMMENT%", lesson["comment"])
if "full" in overrides and overrides["full"]:
total_result += "\n"
return total_result
else: else:
active_template = load_template(template, "single") active_template = load_template(template, "single")
for i in ['name', 'teacher']: for i in ['name', 'teacher', 'link']:
active_template = active_template.replace(f"%{i.upper()}%", lesson[i]) active_template = active_template.replace(f"%{i.upper()}%", lesson[i])
human_readable_date = get_human_readable_date(start_datetime, end_datetime, human_readable_date = get_human_readable_date(start_datetime, end_datetime,
current_day, current_week) current_day, current_week)
active_template = active_template.replace("%DATE%", human_readable_date) active_template = active_template.replace("%DATE%", human_readable_date)
active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(lesson['type'])) active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(lesson['type']))
active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix) active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix)
active_template = active_template.replace("%COLOR_CODE%", get_color_code(lesson['type']))
if ('nolink' not in lesson) or (not lesson['nolink']):
active_template = active_template.replace("%LINK%", lesson['link'])
else:
active_template = active_template.replace("%LINK%", "#")
if 'comment' in lesson:
active_template += load_template(template, "comment")
active_template = active_template.replace("%COMMENT%", lesson["comment"])
return active_template return active_template
elif lesson.__class__ == list: elif lesson.__class__ == list:
total_result = load_template(template, "date") total_result = load_template(template, "date")
human_readable_date = get_human_readable_date(start_datetime, end_datetime, human_readable_date = get_human_readable_date(start_datetime, end_datetime,
current_day, current_week) current_day, current_week)
total_result = total_result.replace("%DATE%", human_readable_date) total_result = total_result.replace("%DATE%", human_readable_date)
for l in lesson: for l in lesson:
if "full" in overrides and overrides["full"]: active_template = load_template(template, "multiple")
active_template = load_template(template, "multiple")
else:
active_template = load_template(template, "multiple-short")
for i in ['name', 'teacher']: for i in ['name', 'teacher', 'link']:
active_template = active_template.replace(f"%{i.upper()}%", l[i]) active_template = active_template.replace(f"%{i.upper()}%", l[i])
active_template = active_template.replace("%DATE%", human_readable_date) active_template = active_template.replace("%DATE%", human_readable_date)
active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(l['type'])) active_template = active_template.replace("%TYPE%", get_name_of_lesson_type(l['type']))
active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix) active_template = active_template.replace("%NAME_PREFIX%", custom_name_prefix)
active_template = active_template.replace("%COLOR_CODE%", get_color_code(l['type']))
if ('nolink' not in lesson) or (not lesson['nolink']): total_result += active_template + "\n"
active_template = active_template.replace("%LINK%", l['link'])
else:
active_template = active_template.replace("%LINK%", "#")
if 'comment' in lesson:
active_template += load_template(template, "comment")
active_template = active_template.replace("%COMMENT%", lesson["comment"])
if "full" in overrides and overrides["full"]:
active_template += "\n"
total_result += active_template
return total_result return total_result
@ -340,8 +289,7 @@ def process(message, path):
# one printable symbol, so this is already protected # one printable symbol, so this is already protected
base_command = full_command[0].lower() base_command = full_command[0].lower()
if base_command not in ["!пара", "!пари", "!schedule-ctl", if base_command not in ["!пара", "!пари", "!schedule-ctl"]:
"!para", "!pary"]:
return None, None return None, None
global module_path global module_path
@ -360,22 +308,17 @@ def process(message, path):
reference_time = int(current_time.strftime("%s")) - current_seconds reference_time = int(current_time.strftime("%s")) - current_seconds
if base_command in ["!пара", "!para"]: if base_command == "!пара":
# easter egg # easter egg
study_begin_ts = int(datetime(year=2024, month=9, day=2).strftime("%s")) study_begin_ts = int(datetime(year=2023, month=9, day=4).strftime("%s"))
current_ts = int(datetime.now().strftime("%s")) current_ts = int(datetime.now().strftime("%s"))
until_study_day = study_begin_ts - current_ts if -3600*4 < study_begin_ts - current_ts < 0:
if -3600*4 < until_study_day < 0:
return "Навчання от-от розпочнеться!", None return "Навчання от-от розпочнеться!", None
elif 0 <= until_study_day < 3600*24*28: elif 0 <= study_begin_ts - current_ts < 1209600:
return f"До навчання залишилося {until_study_day} секунд..." \ return f"До навчання залишилося {study_begin_ts - current_ts} секунд...", None
f" ({round(until_study_day/3600, 4)} годин," \ elif study_begin_ts - current_ts >= 1209600:
f" {round(until_study_day/3600/24, 4)} діб)", None
elif until_study_day >= 3600*24*14:
return "Ви маєте законне право відпочити, пари почнуться не скоро", None return "Ви маєте законне право відпочити, пари почнуться не скоро", None
# actual lesson finding code # actual lesson finding code
upcoming_lessons = [timestamp for timestamp in schedule if timestamp > current_seconds - 5400] upcoming_lessons = [timestamp for timestamp in schedule if timestamp > current_seconds - 5400]
@ -414,7 +357,7 @@ def process(message, path):
return get_lesson_description(schedule, reference_time, closest_lesson_time, current_day, return get_lesson_description(schedule, reference_time, closest_lesson_time, current_day,
current_week, custom_name_prefix="Актуальна пара", template=output_style_preference), "HTML" current_week, custom_name_prefix="Актуальна пара", template=output_style_preference), "HTML"
elif base_command in ["!пари", "!pary"]: elif base_command == "!пари":
base_day = current_week * 7 + current_day base_day = current_week * 7 + current_day
if len(full_command) >= 2: if len(full_command) >= 2:

View File

@ -1,26 +0,0 @@
[
{
},
{
},
{
},
{
},
{
},
{},
{},
{
},
{
},
{
},
{
},
{
},
{},
{}
]

View File

@ -1,54 +0,0 @@
[
{
},
{
},
{
},
{
"9:00": {
"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення (ЕКЗАМЕН)",
"teacher": "Овчар Раїса Федорівна",
"link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09",
"type": "prac",
"selectable": false
}
},
{
},
{},
{},
{
"9:00": {
"name": "Інженерія програмного забезпечення (ЕКЗАМЕН)",
"teacher": "Васильєва Марія Давидівна",
"link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
"type": "prac",
"selectable": false
}
},
{
},
{
},
{
"16:30": {
"name": "Теорія електричних кіл та сигналів",
"teacher": "Лободзинський Вадим Юрійович",
"link": "https://meet.google.com/gwx-sshq-sqb",
"type": "con",
"selectable": false
}
},
{
"9:00": {
"name": "Теорія електричних кіл та сигналів (ЕКЗАМЕН)",
"teacher": "Лободзинський Вадим Юрійович",
"link": "https://meet.google.com/gwx-sshq-sqb",
"type": "prac",
"selectable": false
}
},
{},
{}
]

View File

@ -1,307 +0,0 @@
[
{
"8:30": {
"name": "Політична наука: конфліктологічний підхід",
"teacher": "Багінський Андрій Владиславович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
},
"10:25": [
{
"name": "Захист персональних даних: стандарти ЄС та Ради Європи",
"teacher": "Дубняк М. В.",
"link": "https://us04web.zoom.us/j/7423381732?pwd=c1pJclU2ZDRUWDgyUE10dmhJUDhiZz09",
"type": "lec",
"selectable": true
},
{
"name": "Психологія",
"teacher": "Волянюк Н. Ю.",
"link": "https://us04web.zoom.us/j/6762396563?pwd=L1EvTmpFZHBSdkRHUjZyRG95SFl4QT09",
"type": "lec",
"selectable": true
},
{
"name": "Психологія конфлікту",
"teacher": "Москаленко О. В.",
"link": "https://zoom.us/j/5175581158?pwd=UlhFY3lBOUUrNG9pclRVNndTNTZzQT09",
"type": "prac",
"selectable": true
}
],
"14:15": {
"name": "Основи електронного урядування",
"teacher": "Чукут Світлана Анатоліївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
}
},
{
"12:20": {
"name": "Інженерія програмного забезпечення",
"teacher": "Васильєва Марія Давидівна",
"link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
"type": "lab",
"selectable": false
},
"14:15": {
"name": "Теорія електричних кіл та сигналів",
"teacher": "Лободзинський В. Ю. & Ілліна О. О.",
"link": "https://meet.google.com/gwx-sshq-sqb",
"type": "lab",
"selectable": false
}
},
{
"8:30": {
"name": "Теорія ймовірності та математична статистика",
"teacher": "Марковський Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
"type": "lec",
"selectable": false
},
"10:25": {
"name": "Вступ до операційної системи Linux",
"teacher": "Роковий Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Інженерія програмного забезпечення",
"teacher": "Васильєва Марія Давидівна",
"link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
"type": "lec",
"selectable": false
}
},
{
"10:25": {
"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
"teacher": "Стаматієва Вікторія В'ячеславівна",
"link": "https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09",
"type": "prac",
"selectable": false
},
"12:20": {
"name": "Практичний курс іноземної мови. Частина 2",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false
},
"14:15": {
"name": "Соціальна психологія",
"teacher": "Блохіна Ірина Олександрівна",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
},
"16:10": {
"name": "Основи електронного урядування",
"teacher": "Чукут Світлана Анатоліївна",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
}
},
{
"8:30": {
"name": "Вступ до філософії",
"teacher": "Руденко Тамара Петрівна",
"link": "https://zoom.us/j/9358038101?pwd=d0pwUHRDY0dxbngrU09PYll6UXpNZz09",
"type": "lec",
"selectable": false
},
"10:25": {
"name": "Теорія електричних кіл та сигналів",
"teacher": "Лободзинський Вадим Юрійович",
"link": "https://meet.google.com/gwx-sshq-sqb",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
"teacher": "Овчар Раїса Федорівна",
"link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09",
"type": "lec",
"selectable": false
}
},
{
"10:00": {
"name": "Теорія ймовірності та математична статистика",
"teacher": "Марковський Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
"type": "con",
"selectable": false
}
},
{},
{
"10:25": [
{
"name": "Психологія",
"teacher": "Сербова О. В.",
"link": "https://us05web.zoom.us/j/9299459744?pwd=Z3VQdWEvQ0tyc3pMbzl2bHN6Y1VlUT09",
"type": "prac",
"selectable": true
},
{
"name": "Психологія конфлікту",
"teacher": "Кононець М. О.",
"link": "https://zoom.us/j/9953120638?pwd=WGZsYUhPK2hxbUc4YVJmT0lhdysyZz09",
"type": "lec",
"selectable": true
}
],
"12:20": [
{
"name": "Політична наука: конфліктологічний підхід",
"teacher": "Северинчик О. П.",
"link": "https://us04web.zoom.us/j/2279372490?pwd=bHR5QmpCT0tvQXJMLzRzaldHbFZ3dz09",
"type": "prac",
"selectable": true
},
{
"name": "Захист персональних даних: стандарти ЄС та Ради Європи",
"teacher": "Самчинська О. А.",
"link": "https://us04web.zoom.us/j/72149205587?pwd=Ld2Xj7RORYEwnUYauB5yEbATwwsNan.1",
"type": "prac",
"selectable": true
}
],
"14:15": {
"name": "Розумні міста",
"teacher": "Чукут Світлана Анатоліївна",
"link": "https://zoom.us/j/5439919039?pwd=Um8wWHV4ZjZpallCWkpVQ08wZGNzdz09",
"type": "lec",
"selectable": true
}
},
{
"10:25": {
"name": "Вступ до філософії",
"teacher": "Руденко Тамара Петрівна",
"link": "https://zoom.us/j/9358038101?pwd=d0pwUHRDY0dxbngrU09PYll6UXpNZz09",
"type": "prac",
"selectable": false
},
"14:15": {
"name": "Теорія ймовірності та математична статистика",
"teacher": "Марковський Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
"type": "prac",
"selectable": false
}
},
{
"8:30": {
"name": "Теорія ймовірності та математична статистика",
"teacher": "Марковський Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
"type": "lec",
"selectable": false
},
"10:25": {
"name": "Вступ до операційної системи Linux",
"teacher": "Роковий Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Інженерія програмного забезпечення",
"teacher": "Васильєва Марія Давидівна",
"link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
"type": "lec",
"selectable": false
},
"14:15": {
"name": "Інженерія програмного забезпечення",
"teacher": "Васильєва Марія Давидівна",
"link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
"type": "lec",
"selectable": false
}
},
{
"8:30": {
"name": "Вступ до операційної системи Linux",
"teacher": "Алєнін Олег Ігорович",
"link": "https://us04web.zoom.us/j/4122071690?pwd=bANFi3fk9pWvRu9TSBRGzfxFHuEkZC.1",
"type": "lab",
"selectable": false
},
"10:25": {
"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
"teacher": "Стаматієва Вікторія В'ячеславівна",
"link": "https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09",
"type": "prac",
"selectable": false
},
"12:20": {
"name": "Практичний курс іноземної мови. Частина 2",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false
},
"14:15": [
{
"name": "Соціальна психологія",
"teacher": "Винославська О. В.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
},
{
"name": "Розумні міста",
"teacher": "Чукут Світлана Анатоліївна",
"link": "https://zoom.us/j/5439919039?pwd=Um8wWHV4ZjZpallCWkpVQ08wZGNzdz09",
"type": "prac",
"selectable": true
}
]
},
{
"10:25": {
"name": "Теорія електричних кіл та сигналів",
"teacher": "Лободзинський Вадим Юрійович",
"link": "https://meet.google.com/gwx-sshq-sqb",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
"teacher": "Овчар Раїса Федорівна",
"link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09",
"type": "lec",
"selectable": false
}
},
{
"10:00": {
"name": "Теорія ймовірності та математична статистика",
"teacher": "Марковський Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
"type": "con",
"selectable": false
}
},
{}
]

View File

@ -1,51 +0,0 @@
[
{
},
{
},
{
"9:00": {
"name": "Системне програмування",
"teacher": "Порєв Віктор Миколайович",
"link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
"type": "prac",
"selectable": false,
"comment": "Екзамен!"
}
},
{
},
{
},
{},
{},
{
"14:00": {
"name": "Комп'ютерна електроніка",
"teacher": "Виноградов Юрій Миколайович",
"link": "https://bbb.comsys.kpi.ua/b/x2g-dqc-6fg",
"type": "lab",
"selectable": false,
"comment": "Екзамен! Деталі: https://t.me/c/1856295652/522"
}
},
{
},
{
},
{
},
{
"9:00": {
"name": "Архітектура комп'ютерів. Частина 1. Арифметичні та управляючі пристрої",
"teacher": "Жабін Валерій Іванович",
"link": "https://bbb.comsys.kpi.ua/rooms/jwe-mmp-lb5-jf2/join",
"type": "prac",
"selectable": false,
"comment": "Екзамен!"
}
},
{},
{}
]

View File

@ -1,348 +0,0 @@
[
{
"10:25": {
"name": "Алгоритми та методи обчислень",
"teacher": "Новотарський Михайло Анатолійович",
"link": "https://us02web.zoom.us/j/85323196480?pwd=aXRONTh2SUxmdFZ5M1N5NU5VcGVlZz09",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Комп'ютерна електроніка",
"teacher": "Виноградов Юрій Миколайович",
"link": "https://bbb.comsys.kpi.ua/b/x2g-dqc-6fg",
"type": "lec",
"selectable": false
}
},
{
"10:25": {
"name": "Практичний курс іноземної мови. Частина 2",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false
},
"12:20": {
"name": "Комп'ютерна електроніка",
"teacher": "Виноградов Юрій Миколайович",
"link": "https://bbb.comsys.kpi.ua/b/x2g-dqc-6fg",
"type": "lab",
"selectable": false
},
"14:15": {
"name": "Стратегія охорони навколишнього середовища",
"teacher": "Романюкіна Ірина Юріївна",
"link": "https://us05web.zoom.us/j/84713917316?pwd=MR0w0aDdxnka2H64qqCpVcUgfuhaQP.1",
"type": "prac",
"selectable": false
}
},
{
"8:30": [
{
"name": "Естетика промислового дизайну",
"teacher": "Кузіна Ольга Юріївна",
"link": "https://us05web.zoom.us/j/87803902417?pwd=64D8BbLeLkvweVlWlY2lX95UaA0XMG.1",
"type": "lec",
"selectable": true
},
{
"name": "Logic",
"teacher": "Казаков Мстислав Андрійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
},
{
"name": "Дизайн презентації для професійної діяльності",
"teacher": "Іщенко Олександр Анатолійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
},
{
"name": "Стилі в образотворчому мистецтві",
"teacher": "Оляніна Світлана Валеріївна",
"link": "https://us05web.zoom.us/j/85408874003?pwd=UGdyRWNwSytSM0Zhc3dMTG4yek9sdz09",
"type": "lec",
"selectable": true
}
],
"10:25": [
{
"name": "Основи підприємницької діяльності",
"teacher": "Марченко Валентина Миколаївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
},
{
"name": "Корпоративна культура та діловий етикет",
"teacher": "Цимбаленко Яна Юріївна",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
},
{
"name": "Дизайн презентації для професійної діяльності",
"teacher": "Іщенко Олександр Анатолійович",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
}
],
"12:20": [
{
"name": "Логіка",
"teacher": "Піхорович Василь Дмитрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
},
{
"name": "Корпоративна культура та діловий етикет",
"teacher": "Тимошенко Наталія Леонідівна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
},
{
"name": "Циклічні види спорту",
"teacher": "Черевичко Олександр Геннадійович",
"link": "https://us05web.zoom.us/j/84221628555?pwd=ZjVDV3lDTjRES0lOdkk4cUlUaWp0UT09",
"type": "prac",
"selectable": true
}
],
"14:15": [
{
"name": "Єдиноборства",
"teacher": "Назимок Віктор Васильович",
"link": "https://us04web.zoom.us/j/2276337141?pwd=ejNrUkpPQk9iQlhMMnprOEg3UHNnZz09",
"type": "prac",
"selectable": true
},
{
"name": "Ігрові види спорту",
"teacher": "Сироватко З. В.",
"link": "https://us05web.zoom.us/j/7112676497?pwd=SzEySzRGUzh6NGcxdXZtQ2ovYzhCUT09",
"type": "prac",
"selectable": true
},
{
"name": "Силові види спорту",
"teacher": "Корюкаєв Микола Миколайович",
"link": "https://zoom.us/j/2035574145?pwd=bk1wTVhGbjJsQTR4WmVQMlROWFBCZz09",
"type": "prac",
"selectable": true
},
{
"name": "Складно-координаційні види спорту",
"teacher": "Козлова Тетяна Георгіївна",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
}
]
},
{
"8:30": {
"name": "Алгоритми та методи обчислень",
"teacher": "Порєв Віктор Миколайович",
"link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
"type": "lab",
"selectable": false
},
"10:25": {
"name": "Організація баз даних",
"teacher": "Болдак Андрій Олександрович",
"link": "https://us04web.zoom.us/j/5439063374?pwd=VG1iODU0WmpCNTlCVXJJTitYU2Nmdz09",
"type": "lab",
"selectable": false
}
},
{
"8:30": {
"name": "Системне програмування",
"teacher": "Порєв Віктор Миколайович",
"link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
"type": "lec",
"selectable": false
},
"10:25": {
"name": "Організація баз даних",
"teacher": "Болдак Андрій Олександрович",
"link": "https://us04web.zoom.us/j/5439063374?pwd=VG1iODU0WmpCNTlCVXJJTitYU2Nmdz09",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Архітектура комп'ютерів. Частина 1. Арифметичні та управляючі пристрої",
"teacher": "Жабін Валерій Іванович",
"link": "https://bbb.comsys.kpi.ua/rooms/jwe-mmp-lb5-jf2/join",
"type": "lec",
"selectable": false
},
"14:15": {
"name": "Стратегія охорони навколишнього середовища",
"teacher": "Романюкіна Ірина Юріївна",
"link": "https://us05web.zoom.us/j/84674156408?pwd=BoZcB13bbA82SxL503YaQgabjUiqC9.1",
"type": "lec",
"selectable": false
}
},
{},
{},
{
"10:25": {
"name": "Алгоритми та методи обчислень",
"teacher": "Новотарський Михайло Анатолійович",
"link": "https://us02web.zoom.us/j/85323196480?pwd=aXRONTh2SUxmdFZ5M1N5NU5VcGVlZz09",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Комп'ютерна електроніка",
"teacher": "Виноградов Юрій Миколайович",
"link": "https://bbb.comsys.kpi.ua/b/x2g-dqc-6fg",
"type": "lec",
"selectable": false
}
},
{
"8:30": {
"name": "Архітектура комп'ютерів. Частина 1. Арифметичні та управляючі пристрої",
"teacher": "Верба Олександр Андрійович",
"link": "https://us04web.zoom.us/j/7382214783?pwd=RnZ3SWgwK1JoVkZtNndnKzdPZjFGdz09",
"type": "lab",
"selectable": false
},
"10:25": {
"name": "Практичний курс іноземної мови. Частина 2",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false
}
},
{
"12:20": [
{
"name": "Стилі в образотворчому мистецтві",
"teacher": "Оляніна Світлана Валеріївна",
"link": "https://us05web.zoom.us/j/85408874003?pwd=UGdyRWNwSytSM0Zhc3dMTG4yek9sdz09",
"type": "prac",
"selectable": true
},
{
"name": "Естетика промислового дизайну",
"teacher": "Кузіна Ольга Юріївна",
"link": "https://us05web.zoom.us/j/87803902417?pwd=64D8BbLeLkvweVlWlY2lX95UaA0XMG.1",
"type": "prac",
"selectable": true
},
{
"name": "Логіка",
"teacher": "Сторожик Марина Іванівна",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
},
{
"name": "Logic",
"teacher": "Казаков Мстислав Андрійович",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
},
{
"name": "Циклічні види спорту",
"teacher": "Черевичко Олександр Геннадійович",
"link": "https://us05web.zoom.us/j/84221628555?pwd=ZjVDV3lDTjRES0lOdkk4cUlUaWp0UT09",
"type": "prac",
"selectable": true
}
],
"14:15": [
{
"name": "Єдиноборства",
"teacher": "Назимок Віктор Васильович",
"link": "https://us04web.zoom.us/j/2276337141?pwd=ejNrUkpPQk9iQlhMMnprOEg3UHNnZz09",
"type": "prac",
"selectable": true
},
{
"name": "Ігрові види спорту",
"teacher": "Сироватко З. В.",
"link": "https://us05web.zoom.us/j/7112676497?pwd=SzEySzRGUzh6NGcxdXZtQ2ovYzhCUT09",
"type": "prac",
"selectable": true
},
{
"name": "Силові види спорту",
"teacher": "Корюкаєв Микола Миколайович",
"link": "https://zoom.us/j/2035574145?pwd=bk1wTVhGbjJsQTR4WmVQMlROWFBCZz09",
"type": "prac",
"selectable": true
},
{
"name": "Складно-координаційні види спорту",
"teacher": "Козлова Тетяна Георгіївна",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
}
]
},
{
"8:30": {
"name": "Системне програмування",
"teacher": "Порєв Віктор Миколайович",
"link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
"type": "lab",
"selectable": false
}
},
{
"8:30": {
"name": "Системне програмування",
"teacher": "Порєв Віктор Миколайович",
"link": "https://us02web.zoom.us/j/2256183863?pwd=Q3FmZGVSbW5xUnFQZERpdlcxSElrUT09",
"type": "lec",
"selectable": false
},
"10:25": {
"name": "Організація баз даних",
"teacher": "Болдак Андрій Олександрович",
"link": "https://us04web.zoom.us/j/5439063374?pwd=VG1iODU0WmpCNTlCVXJJTitYU2Nmdz09",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Архітектура комп'ютерів. Частина 1. Арифметичні та управляючі пристрої",
"teacher": "Жабін Валерій Іванович",
"link": "https://bbb.comsys.kpi.ua/rooms/jwe-mmp-lb5-jf2/join",
"type": "lec",
"selectable": false
}
},
{},
{}
]

View File

@ -1,699 +0,0 @@
[
{
},
{
"8:30": {
"name": "Архітектура комп'ютерів. Частина 2. Процесори",
"teacher": "Клименко Ірина Анатоліївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"10:25": {
"name": "Паралельне програмування",
"teacher": "Корочкін Олександр Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"12:20": {
"name": "Комп'ютерна схемотехніка",
"teacher": "Ткаченко Валентина Василівна & Старовєров Костянтин Сергійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"14:15": {
"name": "Правознавство",
"teacher": "Попов Костянтин Леонідович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"16:10": [
{
"name": "Вступ до штучного інтелекту",
"teacher": "Таран Владислав Ігорович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології програмування користувацьких інтерфейсів (Front-end)",
"teacher": "Алещенко Олексій Вадимович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології розроблення серверного програмного забезпечення (Back-end)",
"teacher": "Валько В. .",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
]
},
{
"8:30": [
{
"name": "Життєвий цикл розробки програмного забезпечення",
"teacher": "Галушко Дмитро Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Комп’ютерна графіка та мультимедіа",
"teacher": "Родіонов Павло Юрійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Методи та технології штучного інтелекту",
"teacher": "Шимкович Володимир Миколайович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка програмного забезпечення на платформі Java",
"teacher": "Ковальчук Олександр Миронович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології та засоби розробки комп'ютерної графіки та мультимедіа",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
],
"10:25": [
{
"name": "AGILE методологія розробки програмного забезпечення (Авторський курс компаніїї SoftServe)",
"teacher": "Шевело Олексій Павлович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Linux",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Основи Front-end технологій",
"teacher": "Жереб К. А.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка мобільних застосувань під iOS",
"teacher": "Храмченко Микола Сергійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розроблення застосунків з використанням Spring Framework",
"teacher": "Букасов Максим Михайлович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технологія блокчейн",
"teacher": "Яланецький Валерій Анатолійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
],
"12:20": [
{
"name": "Методи та технології штучного інтелекту",
"teacher": "Шимкович Володимир Миколайович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Комп’ютерна графіка та мультимедіа",
"teacher": "Родіонов Павло Юрійович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Технології Computer Vision",
"teacher": "Баран Данило Романович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Життєвий цикл розробки програмного забезпечення",
"teacher": "Альбрехт Йосип Омелянович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Розробка програмного забезпечення на платформі Java",
"teacher": "Ковальчук Олександр Миронович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Технології та засоби розробки комп'ютерної графіки та мультимедіа",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
}
],
"18:30": {
"name": "Технології Computer Vision",
"teacher": "Писарчук О О",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
},
{
"8:30": {
"name": "Правознавство",
"teacher": "Тихонюк Ольга Володимирівна",
"link": "(посиланя відсутнє!)",
"type": "prac",
"selectable": false,
"nolink": true
},
"10:25": {
"name": "Комп'ютерна схемотехніка",
"teacher": "Нікольський С С",
"link": "(посиланя відсутнє!)",
"type": "lab",
"selectable": false,
"nolink": true
},
"12:20": {
"name": "Практичний курс іноземної мови професійного спрямування. Частина 1",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false,
"nolink": false
},
"14:15": {
"name": "Вступ до штучного інтелекту",
"teacher": "Кочура Юрій Петрович",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true,
"nolink": true
}
},
{
"8:30": [
{
"name": "Мова програмування Java",
"teacher": "Орленко С. П.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка програмного забезпечення на платформі Node.JS",
"teacher": "Нечай Дмитро Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Системне програмування С і С++",
"teacher": "Ковальов Микола Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань мовою програмування PHP",
"teacher": "Ковтунець Олесь Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань на платформі Java",
"teacher": "Іванова Любов Миколаївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології програмування на С/Embedded (Сертифікатна програма)",
"teacher": "Каплунов Артем Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
],
"10:25": {
"name": "Системне програмування С і С++",
"teacher": "Густера Олег Михайлович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
"12:20": {
"name": "Технології програмування на С/Embedded (Сертифікатна програма)",
"teacher": "Каплунов Артем Володимирович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
"14:15": {
"name": "Розроблення застосунків з використанням Spring Framework",
"teacher": "Нікітін Валерій Андрійович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
"16:10": {
"name": "Технології програмування користувацьких інтерфейсів (Front-end)",
"teacher": "Ковальчук Олександр Миронович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
"18:30": {
"name": "Сучасні технології розробки WEB-застосувань на платформі Microsoft.NET",
"teacher": "Крамар Юлія Михайлівна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
},
{},
{},
{
},
{
"8:30": {
"name": "Архітектура комп'ютерів. Частина 2. Процесори",
"teacher": "Клименко Ірина Анатоліївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"10:25": {
"name": "Паралельне програмування",
"teacher": "Корочкін Олександр Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"12:20": {
"name": "Комп'ютерна схемотехніка",
"teacher": "Ткаченко Валентина Василівна & Старовєров Костянтин Сергійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": false,
"nolink": true
},
"14:15": {
"name": "Технології розроблення серверного програмного забезпечення (Back-end)",
"teacher": "Валько В. .",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
"16:10": [
{
"name": "Вступ до штучного інтелекту",
"teacher": "Гордієнко Юрій Григорович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології програмування користувацьких інтерфейсів (Front-end)",
"teacher": "Алещенко Олексій Вадимович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології розроблення серверного програмного забезпечення (Back-end)",
"teacher": "Валько В. .",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
]
},
{
"8:30": [
{
"name": "Життєвий цикл розробки програмного забезпечення",
"teacher": "Галушко Дмитро Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Комп’ютерна графіка та мультимедіа",
"teacher": "Родіонов Павло Юрійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Методи та технології штучного інтелекту",
"teacher": "Шимкович Володимир Миколайович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка програмного забезпечення на платформі Java",
"teacher": "Ковальчук Олександр Миронович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології та засоби розробки комп'ютерної графіки та мультимедіа",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
],
"10:25": [
{
"name": "AGILE методологія розробки програмного забезпечення (Авторський курс компаніїї SoftServe)",
"teacher": "Шевело Олексій Павлович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Linux",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Основи Front-end технологій",
"teacher": "Жереб К. А.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка мобільних застосувань під iOS",
"teacher": "Храмченко Микола Сергійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розроблення застосунків з використанням Spring Framework",
"teacher": "Букасов Максим Михайлович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технологія блокчейн",
"teacher": "Яланецький Валерій Анатолійович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
],
"12:20": [
{
"name": "Основи Front-end технологій",
"teacher": "Жереб К. А.",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Технологія блокчейн",
"teacher": "Яланецький Валерій Анатолійович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Linux",
"teacher": "Хмелюк Марина Сергіївна",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Розробка мобільних застосувань під iOS",
"teacher": "Храмченко Микола Сергійович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "AGILE методологія розробки програмного забезпечення (Авторський курс компаніїї SoftServe)",
"teacher": "Шевело Олексій Павлович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
}
],
"18:30": {
"name": "Технології Computer Vision",
"teacher": "Писарчук О О",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
},
{
"8:30": {
"name": "Архітектура комп'ютерів. Частина 2. Процесори",
"teacher": "Каплунов Артем Володимирович",
"link": "(посиланя відсутнє!)",
"type": "lab",
"selectable": false,
"nolink": true
},
"10:25": {
"name": "Паралельне програмування",
"teacher": "Корочкін Олександр Володимирович",
"link": "(посиланя відсутнє!)",
"type": "lab",
"selectable": false,
"nolink": true
},
"12:20": {
"name": "Практичний курс іноземної мови професійного спрямування. Частина 1",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false,
"nolink": false
}
},
{
"8:30": [
{
"name": "Мова програмування Java",
"teacher": "Орленко С. П.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Розробка програмного забезпечення на платформі Node.JS",
"teacher": "Нечай Дмитро Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Системне програмування С і С++",
"teacher": "Ковальов Микола Олександрович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань мовою програмування PHP",
"teacher": "Ковтунець Олесь Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань на платформі Java",
"teacher": "Іванова Любов Миколаївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
},
{
"name": "Технології програмування на С/Embedded (Сертифікатна програма)",
"teacher": "Каплунов Артем Володимирович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
],
"10:25": [
{
"name": "Сучасні технології розробки WEB-застосувань на платформі Microsoft.NET",
"teacher": "Крамар Юлія Михайлівна",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань на платформі Java",
"teacher": "Іванова Любов Миколаївна",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
{
"name": "Сучасні технології розробки WEB-застосувань мовою програмування PHP",
"teacher": "Ковтунець Олесь Володимирович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
}
],
"12:20": {
"name": "Розробка програмного забезпечення на платформі Node.JS",
"teacher": "Нечай Дмитро Олександрович",
"link": "(посилання відсутнє!)",
"type": "lab",
"selectable": true,
"nolink": true
},
"18:30": {
"name": "Сучасні технології розробки WEB-застосувань на платформі Microsoft.NET",
"teacher": "Крамар Юлія Михайлівна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true,
"nolink": true
}
},
{},
{}
]

View File

@ -1 +0,0 @@
schedule-v2-term5.json

View File

@ -0,0 +1,285 @@
[
{
"8:30": {
"name": "Політична наука: конфліктологічний підхід",
"teacher": "Багінський Андрій Владиславович",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
},
"10:25": [
{
"name": "Захист персональних даних: стандарти ЄС та Ради Європи",
"teacher": "Дубняк М. В.",
"link": "https://us04web.zoom.us/j/7423381732?pwd=c1pJclU2ZDRUWDgyUE10dmhJUDhiZz09",
"type": "lec",
"selectable": true
},
{
"name": "Психологія",
"teacher": "Волянюк Н. Ю.",
"link": "https://us04web.zoom.us/j/6762396563?pwd=L1EvTmpFZHBSdkRHUjZyRG95SFl4QT09",
"type": "lec",
"selectable": true
},
{
"name": "Психологія конфлікту",
"teacher": "Москаленко О. В.",
"link": "https://zoom.us/j/5175581158?pwd=UlhFY3lBOUUrNG9pclRVNndTNTZzQT09",
"type": "prac",
"selectable": true
}
],
"14:15": {
"name": "Основи електронного урядування",
"teacher": "Чукут Світлана Анатоліївна",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
}
},
{
"12:20": {
"name": "Інженерія програмного забезпечення",
"teacher": "Васильєва Марія Давидівна",
"link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
"type": "lab",
"selectable": false
},
"14:15": {
"name": "Теорія електричних кіл та сигналів",
"teacher": "Лободзинський В. Ю. & Ілліна О. О.",
"link": "https://meet.google.com/gwx-sshq-sqb",
"type": "lab",
"selectable": false
}
},
{
"8:30": {
"name": "Теорія ймовірності та математична статистика",
"teacher": "Марковський Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
"type": "lec",
"selectable": false
},
"10:25": {
"name": "Вступ до операційної системи Linux",
"teacher": "Роковий Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Інженерія програмного забезпечення",
"teacher": "Васильєва Марія Давидівна",
"link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
"type": "lec",
"selectable": false
}
},
{
"10:25": {
"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
"teacher": "Стаматієва Вікторія В'ячеславівна",
"link": "https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09",
"type": "prac",
"selectable": false
},
"12:20": {
"name": "Практичний курс іноземної мови. Частина 2",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false
},
"14:15": {
"name": "Соціальна психологія",
"teacher": "Блохіна Ірина Олександрівна",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
},
"16:10": {
"name": "Основи електронного урядування",
"teacher": "Чукут Світлана Анатоліївна",
"link": "(посилання відсутнє!)",
"type": "prac",
"selectable": true
}
},
{
"8:30": {
"name": "Вступ до філософії",
"teacher": "Руденко Тамара Петрівна",
"link": "https://zoom.us/j/9358038101?pwd=d0pwUHRDY0dxbngrU09PYll6UXpNZz09",
"type": "lec",
"selectable": false
},
"10:25": {
"name": "Теорія електричних кіл та сигналів",
"teacher": "Лободзинський Вадим Юрійович",
"link": "https://meet.google.com/gwx-sshq-sqb",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
"teacher": "Овчар Раїса Федорівна",
"link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09",
"type": "lec",
"selectable": false
}
},
{},
{},
{
"10:25": [
{
"name": "Психологія",
"teacher": "Сербова О. В.",
"link": "https://us05web.zoom.us/j/9299459744?pwd=Z3VQdWEvQ0tyc3pMbzl2bHN6Y1VlUT09",
"type": "prac",
"selectable": true
},
{
"name": "Психологія конфлікту",
"teacher": "Кононець М. О.",
"link": "https://zoom.us/j/9953120638?pwd=WGZsYUhPK2hxbUc4YVJmT0lhdysyZz09",
"type": "lec",
"selectable": true
}
],
"12:20": [
{
"name": "Політична наука: конфліктологічний підхід",
"teacher": "Северинчик О. П.",
"link": "https://us04web.zoom.us/j/2279372490?pwd=bHR5QmpCT0tvQXJMLzRzaldHbFZ3dz09",
"type": "prac",
"selectable": true
},
{
"name": "Захист персональних даних: стандарти ЄС та Ради Європи",
"teacher": "Самчинська О. А.",
"link": "https://us04web.zoom.us/j/72149205587?pwd=Ld2Xj7RORYEwnUYauB5yEbATwwsNan.1",
"type": "prac",
"selectable": true
}
],
"14:15": {
"name": "Розумні міста",
"teacher": "Чукут Світлана Анатоліївна",
"link": "https://zoom.us/j/5439919039?pwd=Um8wWHV4ZjZpallCWkpVQ08wZGNzdz09",
"type": "lec",
"selectable": true
}
},
{
"10:25": {
"name": "Вступ до філософії",
"teacher": "Руденко Тамара Петрівна",
"link": "https://zoom.us/j/9358038101?pwd=d0pwUHRDY0dxbngrU09PYll6UXpNZz09",
"type": "prac",
"selectable": false
},
"14:15": {
"name": "Теорія ймовірності та математична статистика",
"teacher": "Марковський Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
"type": "prac",
"selectable": false
}
},
{
"8:30": {
"name": "Теорія ймовірності та математична статистика",
"teacher": "Марковський Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-9ru-7vc",
"type": "lec",
"selectable": false
},
"10:25": {
"name": "Вступ до операційної системи Linux",
"teacher": "Роковий Олександр Петрович",
"link": "https://bbb.comsys.kpi.ua/b/ole-knq-z9h-pyl",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Інженерія програмного забезпечення",
"teacher": "Васильєва Марія Давидівна",
"link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
"type": "lec",
"selectable": false
},
"14:15": {
"name": "Інженерія програмного забезпечення",
"teacher": "Васильєва Марія Давидівна",
"link": "https://do.ipo.kpi.ua/mod/bigbluebuttonbn/view.php?id=171039",
"type": "lec",
"selectable": false
}
},
{
"8:30": {
"name": "Вступ до операційної системи Linux",
"teacher": "Алєнін Олег Ігорович",
"link": "https://us04web.zoom.us/j/4122071690?pwd=bANFi3fk9pWvRu9TSBRGzfxFHuEkZC.1",
"type": "lab",
"selectable": false
},
"10:25": {
"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
"teacher": "Стаматієва Вікторія В'ячеславівна",
"link": "https://us04web.zoom.us/j/2313886209?pwd=dnZHanV3cU9LUXJBVWYyYVArUFg5dz09",
"type": "prac",
"selectable": false
},
"12:20": {
"name": "Практичний курс іноземної мови. Частина 2",
"teacher": "Шевченко Ольга Миколаївна",
"link": "https://meet.google.com/tno-cxef-zyi",
"type": "prac",
"selectable": false
},
"14:15": [
{
"name": "Соціальна психологія",
"teacher": "Винославська О. В.",
"link": "(посилання відсутнє!)",
"type": "lec",
"selectable": true
},
{
"name": "Розумні міста",
"teacher": "Чукут Світлана Анатоліївна",
"link": "https://zoom.us/j/5439919039?pwd=Um8wWHV4ZjZpallCWkpVQ08wZGNzdz09",
"type": "prac",
"selectable": true
}
]
},
{
"10:25": {
"name": "Теорія електричних кіл та сигналів",
"teacher": "Лободзинський Вадим Юрійович",
"link": "https://meet.google.com/gwx-sshq-sqb",
"type": "lec",
"selectable": false
},
"12:20": {
"name": "Вища математика. Частина 3. Ряди. Теорія функцій комплексної змінної. Операційне числення",
"teacher": "Овчар Раїса Федорівна",
"link": "https://us02web.zoom.us/j/84532519615?pwd=eDFRMWtJTkxKcklpa1JUSjFmZHNyUT09",
"type": "lec",
"selectable": false
}
},
{},
{}
]

View File

@ -0,0 +1 @@
../auto-schedule-pro/schedule.json

View File

@ -1 +0,0 @@
<b>Коментар</b>: %COMMENT%

View File

@ -1 +0,0 @@
<b><a href="%LINK%">%COLOR_CODE% %NAME%</a></b>

View File

@ -1 +0,0 @@
Коментар: %COMMENT%

View File

@ -1 +0,0 @@
<a href="%LINK%">%COLOR_CODE% %NAME%</a>

View File

@ -1 +0,0 @@
<i>Коментар</i>: %COMMENT%

View File

@ -1 +0,0 @@
<b><a href="%LINK%">%COLOR_CODE% %NAME%</a></b>

View File

@ -1,16 +1,6 @@
{ {
"s": "Головна сторінка сервера: http://10.1.1.1:12010/", "s": "Головна сторінка сервера: http://10.1.1.1:12010/",
"ss": "Головна сторінка сервера: http://10.1.1.1:12010/", "ss": "Головна сторінка сервера: http://10.1.1.1:12010/",
"u": "Універсальне посилання: http://10.1.1.1:12025/?d=1",
"c": "Розклад навчального року: http://10.1.1.1:12042/general/year_schedule_2024_2025.png",
"r": "Записи пар (5 семестр): http://10.1.1.1:12046/cgi/main-full.py",
"d": "Навчальні дисципліни (5-8 семестри): http://10.1.1.1:12022/generic/disciplines-terms5-8.png",
"d1": "Навчальні дисципліни (1-4 семестри): http://10.1.1.1:12022/generic/disciplines-terms1-4.png",
"d2": "Навчальні дисципліни (5-8 семестри): http://10.1.1.1:12022/generic/disciplines-terms5-8.png",
"h": "Стисла довідка:\n!s - головна сторінка сервера\n!u - універсальне посилання\n!r - записи пар (4 семестр)\n!c - календар навчального року\n!d - перелік навчальних дисциплін\n@all [повідомлення] - тег усіх користувачів\nПовна довідка: http://10.1.1.1:12032/generic/bot-help/short-help.html",
"пари_для_артема": "🧐", "пари_для_артема": "🧐",
"пари_для_артема_хоч_іеаавтра": "🤨", "пари_для_артема_хоч_іеаавтра": "🤨"
"перекур": "😮\u200d💨",
"fiot_free_vidrahuvannja": "😢",
"світло": "⚡️"
} }

View File

@ -1,8 +0,0 @@
{
"trigger_lists": [
["fiot", "free", "sex"],
["fict", "free", "sex"],
["fice", "free", "sex"]
],
"response_text": "👀"
}

View File

@ -1,107 +0,0 @@
import random
module_path = ""
def extract_separators(text):
sequence_buf = ""
seps = []
for i in text:
if i in ["\n", " "]:
sequence_buf += i
elif sequence_buf:
seps.append(sequence_buf)
sequence_buf = ""
return seps
def process(message, path):
if not message.text.lower().startswith("!shuf"):
return "", None
global module_path
module_path = path
cmd = message.text.split()
print(cmd)
l = len(cmd)
# settings
split_by = "word"
shuf_individual_words = False
data_source = "reply"
only_spaces = False
shuf_data = []
i = 1
# parsing arguments
while i < l:
print("C", i, cmd[i])
if cmd[i][0] != "-" or cmd[i] == "--":
break
elif cmd[i] == "-i":
shuf_individual_words = True
elif cmd[i] == "-c":
split_by = "char"
elif cmd[i] == "-o":
only_spaces = True
i += 1
# parsing text (if any)
while i < l:
print("T", i, cmd[i])
data_source = "internal"
if split_by == "char":
for c in cmd[i]:
shuf_data.append(c)
shuf_data.append(" ")
elif split_by == "word":
if shuf_individual_words:
shuf_data.append(list(cmd[i]))
else:
shuf_data.append(cmd[i])
i += 1
if data_source == "reply":
seps = extract_separators(message['reply_to_message'].text)
else:
seps = extract_separators(message.text)
if data_source == "reply":
for w in message['reply_to_message'].text.split():
if split_by == "char":
for c in w:
shuf_data.append(c)
elif split_by == "word":
if shuf_individual_words:
shuf_data.append(list(w))
else:
shuf_data.append(w)
if split_by == "word":
if shuf_individual_words:
for w in shuf_data:
random.shuffle(w)
if only_spaces:
return " ".join(["".join(w) for w in shuf_data]), "HTML"
else:
return "".join([i[0] + i[1] for i in zip(["".join(w) for w in shuf_data], seps)]) + "".join(shuf_data[-1]), "HTML"
else:
random.shuffle(shuf_data)
if only_spaces:
return " ".join(shuf_data), "HTML"
else:
return "".join([i[0] + i[1] for i in zip(shuf_data, seps)]) + shuf_data[-1], "HTML"
elif split_by == "char":
if only_spaces:
shuf_data += [" " for i in seps]
else:
shuf_data += seps
random.shuffle(shuf_data)
return "".join(shuf_data), "HTML"

View File

@ -1,6 +0,0 @@
{
"start_on_boot": true,
"alias": "shuffle",
"version": 2,
"index_file": "index.py"
}

View File

@ -1,124 +1,3 @@
import re
''' Grammar reference
all_possible_match_strings = [
"силка", "силки",
"силки", "силок",
"силці", "силкам",
"силку", "силки",
"силкою", "силками",
"силці", "силках",
"силко", "силки",
"лінк", "лінка", "лінки",
"лінку", "лінки", "лінок",
"лінку", "лінці", "лінкам",
"лінк", "лінку", "лінки",
"лінком", "лінкою", "лінками",
"лінку", "лінці", "лінках",
"лінке", "лінко", "лінки"
]
'''
EXTRACT_PADDING = 11
EXTRACT_INCLUDE_WHOLE_WORDS = True
corrections = [ # IDs
"посилання", # 0
"посиланню", # 1
"посиланням", # 2
"на посиланні", # 3
"посилань", # 4
"посиланнями", # 5
"посиланнях" # 6
]
replacements = [
["силка", "силки", "силку", "силко",
"лінк", "лінка", "лінки", "лінку", "лінке", "лінко"],
["силці",
"лінку", "лінці"],
["силкам", "силкою",
"лінкам", "лінком", "лінкою"],
["на силці",
"на лінку", "на лінці"],
["силок",
"лінок"],
["силками",
"лінками"],
["силках",
"лінках"]
]
#unique_match_strings = set(all_possible_match_strings)
#ua_alphabet = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя"
#regex_matchers = [re.compile(fr"((?<=[^{ua_alphabet}])|(?<=\b)|(?<=^)|(?<= )){i}((?=[^{ua_alphabet}])|(?=\b)|(?=$)|(?= ))", re.DEBUG)
# for i in unique_match_strings]
ua_alphabet = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя"
for i, group in enumerate(replacements):
for j, match_word in enumerate(group):
#replacements[i][j] = re.compile(fr"((?<=[^{ua_alphabet}])|(?<=\b)|(?<=^)|(?<= )){i}((?=[^{ua_alphabet}])|(?=\b)|(?=$)|(?= ))")
replacements[i][j] = [match_word, re.compile(fr"((?<=[^{ua_alphabet}])|(?<=\b)|(?<=^)|(?<= )){match_word}((?=[^{ua_alphabet}])|(?=\b)|(?=$)|(?= ))")]
#print(replacements[i][j])
#_ = [print(fr"(?<=[^абвгґдеєжзиіїйклмнопрстуфхцчшщьюя]){i}(?=[^абвгґдеєжзиіїйклмнопрстуфхцчшщьюя])") for i in unique_match_strings]
def process(message, path): def process(message, path):
lowercase_message = message.text.lower() if "силк" in message.text.lower() or "лінк" in message.text.lower():
return "*посилання 🌚", None
for correct_word_id, group in enumerate(replacements):
for match_word, matcher in group:
result = matcher.search(lowercase_message)
if result:
l = len(message.text)
mistake_start = result.start()
mistake_end = result.end()
print(mistake_start, mistake_end)
original_text_before = message.text[max(mistake_start-EXTRACT_PADDING,0):mistake_start]
original_text_after = message.text[mistake_end:min(mistake_end+EXTRACT_PADDING,l)]
original_text_mistake = message.text[mistake_start:mistake_end]
if EXTRACT_INCLUDE_WHOLE_WORDS:
while 0 <= mistake_start - EXTRACT_PADDING - 1 < l and \
message.text[mistake_start-EXTRACT_PADDING-1].isalnum():
mistake_start -= 1
original_text_before = message.text[max(mistake_start-EXTRACT_PADDING,0):result.start()]
while 0 <= mistake_end + EXTRACT_PADDING < l and \
message.text[mistake_end+EXTRACT_PADDING].isalnum():
mistake_end += 1
original_text_after = message.text[result.end():min(mistake_end+EXTRACT_PADDING,l)]
if len(message.text[:mistake_start]) > EXTRACT_PADDING:
original_text_before_continue = "..."
else:
original_text_before_continue = ""
if len(message.text[mistake_end:]) > EXTRACT_PADDING:
original_text_after_continue = "..."
else:
original_text_after_continue = ""
original_extract = original_text_before_continue + original_text_before \
+ original_text_mistake + original_text_after + original_text_after_continue
correct_word = corrections[correct_word_id]
if original_text_mistake == match_word.capitalize():
correct_word = corrections[correct_word_id].capitalize()
elif original_text_mistake == match_word.upper():
correct_word = corrections[correct_word_id].upper()
fixed_extract = original_text_before_continue + original_text_before \
+ correct_word + original_text_after + original_text_after_continue
return f'"{original_extract}" -> "{fixed_extract}" 🌚', None
else:
return "", None

View File

@ -1,5 +1,5 @@
{ {
"start_on_boot": false, "start_on_boot": true,
"alias": "troll-spelling-corrector", "alias": "troll-spelling-corrector",
"version": 2, "version": 2,
"index_file": "index.py" "index_file": "index.py"