Systemy_dialogowe/system/generator_jezyka_nautalnego.py
2022-06-15 12:09:36 +02:00

154 lines
4.8 KiB
Python

from apimock import *
import difflib as dl
import random
import sys
commands = [
'pomoc',
'powiedz co nowego na moim gicie',
'do widzenia',
'pokaz issue w',
'pokaz mi powiadomienia',
'jakie sa pull requesty',
'pokaz mi testy w'
]
welcome = [
'Witaj!',
"Cześć",
"Hello",
"Hej",
"Dzień dobry",
"Hey"
]
unknown = [
"Nie rozumiem.",
"Nie wiem co masz na myśli."
]
other = [
"Podobne komendy: ",
"Może chodziło Ci o te komendy: ",
"Spróbuj wybrać jedną z tych komend: "
]
bye = [
"Żegnaj!",
"Do zobaczenia",
"Do widzenia",
"Miłego dnia",
"Do widzenia i miłego dnia",
"Narazie"
]
help = ["Obsługuję przekazywanie informacji z systemu GitHub - repozytoria, pull requesty, issue, powiadomienia."]
time = ["Z jakiego czasu?", "Z jakiego okresu?", "Podaj z jakiego przedziału czasowego"]
repo = [
"Z jakiego repozytorium",
"Wskaż repozytorium",
"Podaj z jakiego repozytorium chciałbyć otrzymać informacje",
"Określ repozytorium"
]
howmany = ["Ile ostatnich elemntów chcesz zobaczyć?", "Ile ostatnich elmentów wyświetlić?", "Ile ostatnich elemnetów pokazać?"]
error_time = ["Podano nie prawidłowy czas, popraw ramy czasowe", "Czas jest nie prawidłowy, podaj ponownie", "Podaj przedział czasowy jeszcze raz"]
error_repo = ["Podano nieprawidłową nazwę repozytorium", "Podaj ponownie nazwę repozytorium, ponieważ podania nie prawidłową"]
def find(args, key):
#print(args, key)
for item in args:
if item[0] == key:
return item
def generator_jezyka_nautalnego(frame, tactic, state, text):
#print(tactic)
if tactic == 'null':
beastMatch = dl.get_close_matches(text, commands)
print(random.choice(unknown))
if len(beastMatch) > 0:
print(random.choice(other) + ', '.join(beastMatch))
elif tactic[0] == False: #ASK
_, required_empty, act, req_args, opt_args = tactic
# print('DEBUG: ', act, 'req', req_args, opt_args,sep = '\n')
if required_empty[0] == 'repo':
print("Dodaj nazwę repozytorium na końcu komendy")
print("np. w nazwarepozytorium")
else:
print(f'Proszę podaj {required_empty[0]}')
print()
elif tactic[0] == True:
_, act, req_args, opt_args = tactic
# print('DEBUG: ', act, 'req', req_args, opt_args,sep = '\n')
if act == 'help':
print(random.choice(help))
print("Dostępne komendy: \n - " + '\n - '.join(commands))
elif act == 'bye':
print(random.choice(bye))
print()
sys.exit(0)
elif tactic == 'hello':
print(random.choice(welcome))
elif act == 'issues':
print("Lista issues w repozytorium " + find(req_args, 'repo')[0] + ":")
issues = listRepositoryIssues(find(req_args, 'repo'))
for issue in issues:
print(issue['name'])
print(issue['description'])
print(issue['status'])
print()
elif act == 'pullrequest':
print("Lista pull requestów w repozytorium " + find(req_args, 'repo')[0] + ":")
prs = listRepositoryPullRequests(find(req_args, repo))
for pr in prs:
print(pr['name'])
print(pr['description'])
print(pr['state'])
print()
elif act == 'brefing':
print("Podsumowanie w repozytorium " + find(req_args, 'repo')[0] + ":")
brefings = getBrefing()
for brefing in brefings:
print(brefing['name'])
print(brefing['description'])
print()
elif act == 'tests':
print("Lista testów w repozytorium " + find(req_args, 'repo')[0] + ":")
tests = listRepositoryTests(find(req_args, 'repo')[0])
for test in tests:
print(test['name'])
print(test['description'])
print(test['status'])
print()
elif act == 'notifications':
print("Lista powidomień w repozytorium " + find(req_args, 'repo')[0] + ":")
notifications = listNotifications(find(req_args, 'repo')[0])
for notification in notifications:
print(notification['name'])
print(notification['description'])
print()
#
# elif tactic[0] == 'QUESTION' and act[0] == 'repo':
# print("Dodaj nazwę repozytorium na końcu komendy")
# print("np. w nazwarepozytorium")
else:
print(tactic)
else:
print('ERROR')
print()