Skip to content

Commit

Permalink
первая версия ассистента
Browse files Browse the repository at this point in the history
  • Loading branch information
Nosok2011 authored Feb 2, 2024
1 parent f108e97 commit 0e89f8f
Show file tree
Hide file tree
Showing 3 changed files with 270 additions and 0 deletions.
76 changes: 76 additions & 0 deletions artemiy.py
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)
97 changes: 97 additions & 0 deletions settings.json
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
}
}
97 changes: 97 additions & 0 deletions settings_orig.json
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
}
}

0 comments on commit 0e89f8f

Please sign in to comment.