-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
270 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
# ассистент создан с помощью урока от хауди хо: https://www.youtube.com/watch?v=YeS755SPSI8 | ||
from random import choice | ||
from jsonc import loads, dumps | ||
from fuzzywuzzy import fuzz | ||
settings = loads(open("settings.json", encoding="UTF-8").read()) | ||
def edit_settings(new): | ||
settings_ = open("settings.json", "w", encoding="UTF-8") | ||
comment = """// в этой директории существует файл \"settings_orig.json\". | ||
// он нужен для того, чтобы возвращаться к заводским настройкам. | ||
// нужно просто скопировать содержимое оригинального файла в этот.\n""" | ||
comment = "\n".join(comment.split("\n")) | ||
comment = comment.replace(" " * 17, "") | ||
settings_.write(comment + dumps(new, indent=4, ensure_ascii=False)) | ||
settings_.close() | ||
print("Внимание!! Были изменены настройки. Перезапустите ассистента для полного принятия изменений.") | ||
def recog_cmd(cmd): | ||
pars = {"cmd": cmd, "cmd_name": "", "ratio": 0} # pars типо parameters | ||
for name, opts in settings["cmds"].items(): | ||
for opt in opts: | ||
ratio = fuzz.ratio(cmd, opt) | ||
if ratio > pars["ratio"]: | ||
pars["cmd_name"] = name | ||
pars["ratio"] = ratio | ||
return pars | ||
def exec_cmd(cmd): | ||
if settings["settings"]["debug_mode"]: | ||
print(cmd) | ||
from datetime import datetime # импортируем здесь, а не в начале, чтобы показывало текущее время и дату, а не на момент запуска | ||
now = datetime.now() | ||
exec_msg = choice(settings["answers"]["executing"]) | ||
done_msg = choice(settings["answers"]["done"]) | ||
if cmd["ratio"] >= 50: | ||
match cmd["cmd_name"]: | ||
case "time": | ||
print(choice(settings["answers"]["time"]) % (now.hour, now.minute, now.second)) | ||
case "date": | ||
print(choice(settings["answers"]["date"]) % (now.day, now.month, now.year)) | ||
case "disable_welcome_message": | ||
print(exec_msg) | ||
settings["settings"]["welcome_message_enabled"] = False | ||
edit_settings(settings) | ||
print(done_msg) | ||
case "enable_welcome_message": | ||
print(exec_msg) | ||
settings["settings"]["welcome_message_enabled"] = True | ||
edit_settings(settings) | ||
print(done_msg) | ||
case "exit": | ||
print(choice(settings["answers"]["exit"])) | ||
exit() | ||
case "help": | ||
print(choice(settings["answers"]["help"])) | ||
case _: | ||
print(choice(settings["answers"]["unknown"])) | ||
else: | ||
match cmd["cmd"]: | ||
case "debug_mode_on": | ||
print(exec_msg) | ||
settings["settings"]["debug_mode"] = True | ||
edit_settings(settings) | ||
print(done_msg) | ||
print("Активирован режим отладки. В этом режиме перед выполнением каждой команды будут выводиться её данные в виде словаря python.") | ||
case "debug_mode_off": | ||
print(exec_msg) | ||
settings["settings"]["debug_mode"] = False | ||
edit_settings(settings) | ||
print(done_msg) | ||
print("Режим отладки деактивирован.") | ||
case _: | ||
print(choice(settings["answers"]["unknown"])) | ||
if settings["settings"]["welcome_message_enabled"]: | ||
print(choice(settings["answers"]["welcome"])) | ||
while True: | ||
query = input(">>> ") | ||
cmd = recog_cmd(query) | ||
exec_cmd(cmd) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
// в этой директории существует файл "settings_orig.json". | ||
// он нужен для того, чтобы возвращаться к заводским настройкам. | ||
// нужно просто скопировать содержимое оригинального файла в этот. | ||
{ | ||
"cmds": { | ||
"time": [ | ||
"сколько время", | ||
"текущее время", | ||
"время", | ||
"сколько времени" | ||
], | ||
"date": [ | ||
"какое сегодня число", | ||
"текущая дата", | ||
"сегодняшняя дата", | ||
"дата" | ||
], | ||
"disable_welcome_message": [ | ||
"выключи приветствие", | ||
"отключи приветствие" | ||
], | ||
"enable_welcome_message": [ | ||
"включи приветствие", | ||
"верни приветствие" | ||
], | ||
"exit": [ | ||
"закройся", | ||
"закончи сессию", | ||
"выключись", | ||
"прекрати сессию", | ||
"вырубись", | ||
"выход", | ||
"выйди" | ||
], | ||
"help": [ | ||
"что ты умеешь", | ||
"что ты можешь", | ||
"" | ||
] | ||
}, | ||
"answers": { | ||
"welcome": [ | ||
"Привет! Я Артемий - текстовый ассистент, готов помочь в работе с компьютером!", | ||
"Привет!", | ||
"Добро пожаловать!", | ||
"Артемий готов к работе.", | ||
"Готов к работе." | ||
], | ||
"unknown": [ | ||
"Такая команда не найдена.", | ||
"Неизвестная команда.", | ||
"Артемий не может найти эту команду.", | ||
"Команда не найдена.", | ||
"Сформулируйте запрос чётче." | ||
], | ||
"executing": [ | ||
"Выполняю.", | ||
"Уже выполняю.", | ||
"Служу России!", | ||
"Есть, сэр.", | ||
"Слушаюсь и повинуюсь." | ||
], | ||
"done": [ | ||
"Готово!", | ||
"Готов.", | ||
"Выполнено", | ||
"Задача выполнена", | ||
"Задача выполнена, сэр." | ||
], | ||
"time": [ | ||
"Сейчас %d:%d:%d", | ||
"Текущее время %d:%d:%d", | ||
"%d:%d:%d" | ||
], | ||
"date": [ | ||
"Сегодня %d.%d.%d", | ||
"%d.%d.%d" | ||
], | ||
"exit": [ | ||
"До свидания!", | ||
"До свидания.", | ||
"До свидания, человек.", | ||
"Прощайте.", | ||
"Понял, выключаюсь." | ||
], | ||
"help": [ | ||
"На данный момент я умею только показывать время и дату.", | ||
"Я умею только показывать время и дату.", | ||
"Пока я могу лишь показать время и дату, больше ничего" | ||
] | ||
}, | ||
"settings": { | ||
"welcome_message_enabled": true, | ||
"encoding": "UTF-8", | ||
"debug_mode": false | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
// в этой директории существует файл "settings_orig.json". | ||
// он нужен для того, чтобы возвращаться к заводским настройкам. | ||
// нужно просто скопировать содержимое оригинального файла в этот. | ||
{ | ||
"cmds": { | ||
"time": [ | ||
"сколько время", | ||
"текущее время", | ||
"время", | ||
"сколько времени" | ||
], | ||
"date": [ | ||
"какое сегодня число", | ||
"текущая дата", | ||
"сегодняшняя дата", | ||
"дата" | ||
], | ||
"disable_welcome_message": [ | ||
"выключи приветствие", | ||
"отключи приветствие" | ||
], | ||
"enable_welcome_message": [ | ||
"включи приветствие", | ||
"верни приветствие" | ||
], | ||
"exit": [ | ||
"закройся", | ||
"закончи сессию", | ||
"выключись", | ||
"прекрати сессию", | ||
"вырубись", | ||
"выход", | ||
"выйди" | ||
], | ||
"help": [ | ||
"что ты умеешь", | ||
"что ты можешь", | ||
"" | ||
] | ||
}, | ||
"answers": { | ||
"welcome": [ | ||
"Привет! Я Артемий - текстовый ассистент, готов помочь в работе с компьютером!", | ||
"Привет!", | ||
"Добро пожаловать!", | ||
"Артемий готов к работе.", | ||
"Готов к работе." | ||
], | ||
"unknown": [ | ||
"Такая команда не найдена.", | ||
"Неизвестная команда.", | ||
"Артемий не может найти эту команду.", | ||
"Команда не найдена.", | ||
"Сформулируйте запрос чётче." | ||
], | ||
"executing": [ | ||
"Выполняю.", | ||
"Уже выполняю.", | ||
"Служу России!", | ||
"Есть, сэр.", | ||
"Слушаюсь и повинуюсь." | ||
], | ||
"done": [ | ||
"Готово!", | ||
"Готов.", | ||
"Выполнено", | ||
"Задача выполнена", | ||
"Задача выполнена, сэр." | ||
], | ||
"time": [ | ||
"Сейчас %d:%d:%d", | ||
"Текущее время %d:%d:%d", | ||
"%d:%d:%d" | ||
], | ||
"date": [ | ||
"Сегодня %d.%d.%d", | ||
"%d.%d.%d" | ||
], | ||
"exit": [ | ||
"До свидания!", | ||
"До свидания.", | ||
"До свидания, человек.", | ||
"Прощайте.", | ||
"Понял, выключаюсь." | ||
], | ||
"help": [ | ||
"На данный момент я умею только показывать время и дату.", | ||
"Я умею только показывать время и дату.", | ||
"Пока я могу лишь показать время и дату, больше ничего" | ||
] | ||
}, | ||
"settings": { | ||
"welcome_message_enabled": true, | ||
"encoding": "UTF-8", | ||
"debug_mode": false | ||
} | ||
} |