karel_bot/responses_messages.py
2024-08-09 16:29:43 +02:00

86 lines
3.1 KiB
Python

import random, os
###############################################################################
###################### TYPY ODPOVEDI PODLE PODMINEK ###########################
###############################################################################
def Response_type_determinator(response_type_dict, msg_content):
for type in response_type_dict.values():
for slovo in type.slova:
if type.fn_podminka(slovo, msg_content) == True:
return(random.choice(type.responses))
class Response():
def __init__(self, slova, podminka, responses):
self.slova = slova
self.podminka = podminka
self.responses = responses
def fn_podminka(self, slovo, msg_content):
if self.podminka == "obsahuje":
return(slovo in msg_content)
elif self.podminka == "konec":
return(msg_content.endswith(slovo))
elif self.podminka == "zacatek":
return(msg_content.startswith(slovo))
def get_responses():
directory = os.walk("config/responses")
response_dict = {}
for paths in directory:
for path in paths[2]:
content = open(f"config/responses/{path}", "r", encoding="utf-8").readlines()
slova = content[0][:-1].split("; ") #[:-1] kvuli \n
responses = content[1].split("; ")
path = path[:-4].split("_")
value = path[0]
podminka = path[1]
response_dict[value] = Response(slova, podminka, responses)
return(response_dict)
################################################################################
############################## NAHODNA ODPOVED #################################
################################################################################
def get_random_response():
content = open("config/random_responses.txt", "r", encoding="utf-8").read().splitlines()
return(random.choice(content))
################################################################################
###################### GENERATOR ODPOVEDI Z MOZNOSTI ###########################
################################################################################
def response_generator(msg):
odpoved = Response_type_determinator(get_responses(), msg.content)
if odpoved == None:
odpoved = get_random_response()
return(odpoved)
# moznosti = ["determinator"]
# x = random.choice(moznosti)
#
# if x == "determinator":
# odpoved = Response_type_determinator(get_responses(), msg.content)
#
# if x == "nahodna_odpoved":
# odpoved = get_random_response()
#
# else:
# odpoved = get_random_response()
#
# return(odpoved)
################################################################################
############################# NAHODNA ZPRAVA ###################################
################################################################################
def get_random_message():
content = open("config/random_messages.txt", "r", encoding="utf-8").read().splitlines()
return(random.choice(content))