nerve/commands.py

153 lines
No EOL
3.5 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import random
jokes = [
["Testing","Testing you!"],
["singing pokemon","Jiggalypuff! 🎙️"]
]
#jokes = []
def handle_command(state,message):
for command in commands:
if message.find(command)==0:
result = commands[command](state,message)
return result
if len(state) > 0:
try:
result = commands[state[0]](state,message)
return result
except Exception as e:
return {
"state":[],
"response":f"Error⚠ \n {e}"
}
return {
"response":None,
"state":state
}
"""
Knock-knock implimentation
when you receive message, read state.
user: knock knock
bot: who's there? -> bot responds and registers state
(user.state=[knock-knock])
user: {statement}
bot: {statement} who? -> bot responds and stores statement
(user.stage=[knock-knock,{statement}])
user: {punchline}
bot: Nice one! -> bot saves knock-knock joke
"""
def nevermind(state,message):
return {
"response":"starting over.",
"state":[]
}
def knock_knock(state,message):
#return {response:"",state:""}
try:
if state[0] != "knock knock":
#clear the state
state = []
except:
pass
if len(state) == 0:
state.append("knock knock")
return {
"response":"Who's there?",
"state": state
}
if len(state) == 1:
state.append(message)
return {
"response":message + " who?",
"state":state
}
if len(state) == 2:
state.append(message)
jokes.append([
state[1],state[2]
])
print("joke registered.")
return {
"response":"Hah! very funny!",
"state":[]
}
return {
"response":"Cleared.",
"state":[]
}
"""'joke' command
-------------
user:!joke
bot:Knock knock -> bot initializes state
(user.state=[joke])
user: Who's there?
bot: {statement} -> bot responds with chosen joke
(user.state=[joke,chosenjoke])
user: {statement} who?
bot:
"""
def joke(state,message):
if len(jokes) == 0:
return {
"response":"I don't know any jokes...",
"state":[]
}
if len(state) == 0:
return {
"response":"Knock knock",
"state":["joke"]
}
elif len(state) == 1:
if message.find("there?") > 0 :
#get random joke index
state.append(random.randint(0,len(jokes)-1))
return {
"response":jokes[state[1]][0],
"state":state
}
else:
return {
"response":"ask, \"who's there?\"",
"state":state
}
elif len(state) == 2:
if message.find("who?") > 0:
return {
"response":jokes[state[1]][1],
"state":[]
}
else:
return {
"response":"ask, \""+ jokes[state[1]][0] +" who?\"",
"state":state
}
return {
"response":None,
"state":[]
}
commands = {
"nevermind":nevermind,
"knock knock":knock_knock,
"joke":joke
}
if __name__ == '__main__':
msg = ""
while msg != "exit":
msg = input("user:")
user = handle_command(user,msg)
#print("state:",user)