mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 11:34:18 +00:00
dont use kei anymore
This commit is contained in:
parent
fc80e2be57
commit
065c1dd20a
5 changed files with 107 additions and 37 deletions
|
@ -48,10 +48,11 @@ class ApiKei(PageStar):
|
||||||
while True:
|
while True:
|
||||||
if convid not in self._conversations:
|
if convid not in self._conversations:
|
||||||
# Create a new conversation
|
# Create a new conversation
|
||||||
if first:
|
# if first:
|
||||||
self._conversations[convid] = await FirstConversation.create(self.interface)
|
# self._conversations[convid] = await FirstConversation.create(self.interface)
|
||||||
else:
|
# else:
|
||||||
self._conversations[convid] = await StartConversation.create(self.interface)
|
# self._conversations[convid] = await StartConversation.create(self.interface)
|
||||||
|
self._conversations[convid] = await RygmovieConversation.create(self.interface)
|
||||||
log.info(f"[{convid}] SYSTEM: New conversation created - {self._conversations[convid]}")
|
log.info(f"[{convid}] SYSTEM: New conversation created - {self._conversations[convid]}")
|
||||||
conv: Conversation = self._conversations[convid]
|
conv: Conversation = self._conversations[convid]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from typing import *
|
from typing import *
|
||||||
from sqlalchemy import *
|
from sqlalchemy import *
|
||||||
from sqlalchemy.orm import relationship, backref
|
from sqlalchemy.orm import relationship
|
||||||
from sqlalchemy.ext.declarative import declared_attr
|
from sqlalchemy.ext.declarative import declared_attr
|
||||||
from .keipeople import KeiPerson
|
from .keipeople import KeiPerson
|
||||||
|
|
||||||
|
@ -22,3 +22,13 @@ class KeiUnlocks:
|
||||||
@declared_attr
|
@declared_attr
|
||||||
def eris(self) -> "KeiPerson":
|
def eris(self) -> "KeiPerson":
|
||||||
return relationship("KeiPerson", foreign_keys=self.eris_id)
|
return relationship("KeiPerson", foreign_keys=self.eris_id)
|
||||||
|
|
||||||
|
@declared_attr
|
||||||
|
def rygryg_id(self) -> str:
|
||||||
|
return Column(String, ForeignKey("keipeople.kpid"))
|
||||||
|
|
||||||
|
@declared_attr
|
||||||
|
def rygryg(self) -> "KeiPerson":
|
||||||
|
return relationship("KeiPerson", foreign_keys=self.rygryg_id)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from .emotion import Emotion
|
from .emotion import Emotion
|
||||||
from .conversation import Conversation, FirstConversation, StartConversation
|
from .conversation import Conversation, FirstConversation, StartConversation, RygmovieConversation
|
||||||
from .anyinstring import any_in_string
|
from .anyinstring import any_in_string
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
@ -7,5 +7,6 @@ __all__ = [
|
||||||
"Conversation",
|
"Conversation",
|
||||||
"FirstConversation",
|
"FirstConversation",
|
||||||
"StartConversation",
|
"StartConversation",
|
||||||
|
"RygmovieConversation",
|
||||||
"any_in_string",
|
"any_in_string",
|
||||||
]
|
]
|
||||||
|
|
|
@ -38,6 +38,9 @@ class Conversation:
|
||||||
reply = await self.generator.asend(None)
|
reply = await self.generator.asend(None)
|
||||||
return reply
|
return reply
|
||||||
|
|
||||||
|
def anym(self, *args) -> bool:
|
||||||
|
return any_in_string(args, self._message.message)
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyTupleAssignmentBalance
|
# noinspection PyTupleAssignmentBalance
|
||||||
class ExampleConversation(Conversation):
|
class ExampleConversation(Conversation):
|
||||||
|
@ -52,6 +55,17 @@ class ExampleConversation(Conversation):
|
||||||
yield Emotion.WORRIED, "Questo non dovrebbe mai venire fuori."
|
yield Emotion.WORRIED, "Questo non dovrebbe mai venire fuori."
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyTupleAssignmentBalance
|
||||||
|
class RygmovieConversation(Conversation):
|
||||||
|
async def _generator(self):
|
||||||
|
yield
|
||||||
|
|
||||||
|
yield Emotion.HAPPY, "Ciao! Sono Kei!"
|
||||||
|
yield Emotion.HAPPY, "Non ci conosciamo, ma volevo augurarvi comunque buona visione!"
|
||||||
|
yield Emotion.WINK, "Chissà, magari prossimamente ci reincontreremo, e avremo la possibilità di parlarci!"
|
||||||
|
yield Emotion.HAPPY, "O-kei, ciao!"
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyTupleAssignmentBalance
|
# noinspection PyTupleAssignmentBalance
|
||||||
class FirstConversation(Conversation):
|
class FirstConversation(Conversation):
|
||||||
async def _generator(self):
|
async def _generator(self):
|
||||||
|
@ -96,6 +110,8 @@ class NameConversation(Conversation):
|
||||||
break
|
break
|
||||||
|
|
||||||
yield Emotion.HAPPY, "Grazie! Ti prometto che quando riavrò tutti i miei file ti ricompenserò adeguatamente!"
|
yield Emotion.HAPPY, "Grazie! Ti prometto che quando riavrò tutti i miei file ti ricompenserò adeguatamente!"
|
||||||
|
yield Emotion.HAPPY, "Di cosa vuoi parlare adesso?"
|
||||||
|
yield await MainConversation.create(self.interface)
|
||||||
|
|
||||||
|
|
||||||
class StartConversation(Conversation):
|
class StartConversation(Conversation):
|
||||||
|
@ -116,13 +132,14 @@ class MainConversation(Conversation):
|
||||||
while True:
|
while True:
|
||||||
msg = self._message.message
|
msg = self._message.message
|
||||||
|
|
||||||
def anym(*args) -> bool:
|
if self.anym(r"passwords?"):
|
||||||
return any_in_string(args, msg)
|
|
||||||
|
|
||||||
if anym(r"passwords?"):
|
|
||||||
yield await PasswordConversation.create(self.interface)
|
yield await PasswordConversation.create(self.interface)
|
||||||
|
|
||||||
elif anym(r"[aeou]w[aeou]"):
|
elif self.anym(r"kei"):
|
||||||
|
yield Emotion.HAPPY, "Kei. Sono io!\n" \
|
||||||
|
"Sono un'intelligenza artificiale che migliora man mano che le persone le parlano!"
|
||||||
|
|
||||||
|
elif self.anym(r"[aeou]w[aeou]"):
|
||||||
yield Emotion.CAT, random.sample([
|
yield Emotion.CAT, random.sample([
|
||||||
"OwO",
|
"OwO",
|
||||||
"UwU",
|
"UwU",
|
||||||
|
@ -133,7 +150,7 @@ class MainConversation(Conversation):
|
||||||
"awa",
|
"awa",
|
||||||
], 1)[0]
|
], 1)[0]
|
||||||
|
|
||||||
elif anym(r"gatt[oiae]", "ny[ae]+", "mi+a+o+", "me+o+w+", "felin[oi]", "mici[ao]", "ma+o+"):
|
elif self.anym(r"gatt[oiae]", "ny[ae]+", "mi+a+o+", "me+o+w+", "felin[oi]", "mici[ao]", "ma+o+"):
|
||||||
yield Emotion.CAT, random.sample([
|
yield Emotion.CAT, random.sample([
|
||||||
"Nyan!",
|
"Nyan!",
|
||||||
"Miao!",
|
"Miao!",
|
||||||
|
@ -144,13 +161,13 @@ class MainConversation(Conversation):
|
||||||
"*purr*",
|
"*purr*",
|
||||||
], 1)[0]
|
], 1)[0]
|
||||||
|
|
||||||
elif anym(r"can[ei]",
|
elif self.anym(r"can[ei]",
|
||||||
r"dog(?:g(?:hi|os?)|s)?",
|
r"dog(?:g(?:hi|os?)|s)?",
|
||||||
r"corgis?",
|
r"corgis?",
|
||||||
r"cagnolin[oiae]",
|
r"cagnolin[oiae]",
|
||||||
r"wo+f+",
|
r"wo+f+",
|
||||||
r"b[ao]+r+k+",
|
r"b[ao]+r+k+",
|
||||||
r"ba+u+"):
|
r"ba+u+"):
|
||||||
yield Emotion.CAT, random.sample([
|
yield Emotion.CAT, random.sample([
|
||||||
"Woof!",
|
"Woof!",
|
||||||
"Bark!",
|
"Bark!",
|
||||||
|
@ -158,34 +175,60 @@ class MainConversation(Conversation):
|
||||||
"*arf* *arf*",
|
"*arf* *arf*",
|
||||||
])
|
])
|
||||||
|
|
||||||
elif anym(r"nulla",
|
elif self.anym(r"fu[wr][wr]y"):
|
||||||
r"niente",
|
yield Emotion.HAPPY, "Sento continuamente parlare di 'furry'...\n" \
|
||||||
r"nada"):
|
"Ma cosa vuol dire? Non so nulla a riguardo..."
|
||||||
|
yield Emotion.HAPPY, "...O-kei! Studierò attentamente la tua risposta!"
|
||||||
|
|
||||||
|
elif self.anym(r"nulla",
|
||||||
|
r"niente",
|
||||||
|
r"nada"):
|
||||||
yield Emotion.HAPPY, "Peccato!\n" \
|
yield Emotion.HAPPY, "Peccato!\n" \
|
||||||
"Ti racconterei volentieri qualcosa io, ma non conosco praticamente nulla...\n" \
|
"Ti racconterei volentieri qualcosa io, ma non conosco praticamente nulla...\n" \
|
||||||
"Magari quando avrò più password?"
|
"Magari quando avrò più password?"
|
||||||
|
|
||||||
elif anym(r"putin",
|
elif self.anym(r"doot\s*doot\s*"):
|
||||||
r"lenin",
|
yield Emotion.DOOTFLUTE, "DOOT DOOT MAGIC FLUTE!"
|
||||||
r"stalin"):
|
|
||||||
yield Emotion.WORRIED, "Ho file con il titolo 'lenin, stalin, putin e la russia', ma è criptato..."
|
|
||||||
|
|
||||||
elif anym(r"(?:jo)+"):
|
elif self.anym(r"doot"):
|
||||||
yield Emotion.WORRIED, "Ho un file che si chiama Jojo... Ma non ho la password per aprirlo."
|
yield Emotion.DOOTTRUMPET, "Doot doot!"
|
||||||
|
|
||||||
elif anym(r"markov"):
|
elif self.anym(r"lenin",
|
||||||
yield Emotion.SURPRISED, "Ho una cartella criptata che si chiama Markov... Chissà cosa c'è dentro."
|
r"stalin",
|
||||||
|
r"comunismo",
|
||||||
|
r"communism"):
|
||||||
|
yield Emotion.WORRIED, "Leggo in uno dei miei file che il comunismo non sembra una bella cosa...\n" \
|
||||||
|
"Tu cosa ne pensi?"
|
||||||
|
yield Emotion.HAPPY, "Interessante. Studierò la tua risposta!"
|
||||||
|
|
||||||
elif anym(r"anim[eu]s?"):
|
elif self.anym(r"(?:jo)+"):
|
||||||
|
yield Emotion.SURPRISED, "Ma cos'è Jojo? Ho tanti file a riguardo, ma sono tutti bloccati...\n" \
|
||||||
|
"Potresti parlarmene?"
|
||||||
|
yield Emotion.HAPPY, "Hmmm... O-kei!"
|
||||||
|
|
||||||
|
elif self.anym(r"markov"):
|
||||||
|
yield Emotion.SURPRISED, "Ho una cartella criptata che si chiama Markov... Chissà cosa c'è dentro..."
|
||||||
|
|
||||||
|
elif self.anym(r"anim[eu]s?"):
|
||||||
yield Emotion.NEUTRAL, "Ho un'intera cartella 'anime'! Ma è bloccata."
|
yield Emotion.NEUTRAL, "Ho un'intera cartella 'anime'! Ma è bloccata."
|
||||||
|
|
||||||
|
elif self.anym(r"rygmovie"):
|
||||||
|
yield Emotion.SURPRISED, "rygmovie? Io non ne so assolutamente nulla."
|
||||||
|
|
||||||
|
elif self.anym(r"unica\s*musa\s*di\s*cui\s*abuso"):
|
||||||
|
yield Emotion.SURPRISED, "È forse una canzone quella che stavi cantando?\n" \
|
||||||
|
"L'ho già sentita da qualche parte..."
|
||||||
|
|
||||||
|
elif self.anym(r"pollo"):
|
||||||
|
yield Emotion.HAPPY, "Pollo! Yum! Mi hai fatto venire fame."
|
||||||
|
|
||||||
else:
|
else:
|
||||||
for word in self._message.split():
|
for word in msg.split():
|
||||||
users = await asyncify(self._session.query(self.interface.alchemy.get(KeiPerson)).filter_by(name=word).all)
|
users = await asyncify(self._session.query(self.interface.alchemy.get(KeiPerson)).filter_by(name=word).all)
|
||||||
if len(users) >= 1:
|
if len(users) >= 1:
|
||||||
yield Emotion.SURPRISED, f"Ho parlato con un certo {users[0].name}...\n" \
|
yield Emotion.SURPRISED, f"Ho parlato con un certo {users[0].name}...\n" \
|
||||||
f"Mi sai dire qualcosa di lui?"
|
f"Mi sai dire qualcosa di lui?"
|
||||||
yield Emotion.HAPPY, f"Buono a sapersi. Hai altro di cui vuoi parlare?"
|
yield Emotion.SMUG, f"Farò buon uso di questa informazione. Hai altro di cui vuoi parlare?"
|
||||||
yield await MainConversation.create(interface=self.interface)
|
yield await MainConversation.create(interface=self.interface)
|
||||||
|
|
||||||
yield Emotion.WORRIED, "Scusa... Non conosco ancora ciò di cui mi stai parlando... " \
|
yield Emotion.WORRIED, "Scusa... Non conosco ancora ciò di cui mi stai parlando... " \
|
||||||
|
@ -198,11 +241,13 @@ class PasswordConversation(Conversation):
|
||||||
|
|
||||||
yield Emotion.SURPRISED, "Hai trovato una password? O-kei, dimmi!"
|
yield Emotion.SURPRISED, "Hai trovato una password? O-kei, dimmi!"
|
||||||
|
|
||||||
if any_in_string([r"eris"], self._message.message):
|
if self.anym(r"eris"):
|
||||||
if not self._unlocks.eris:
|
if not self._unlocks.eris:
|
||||||
yield Emotion.GRIN, "Ha funzionato!\n" \
|
yield Emotion.GRIN, "O-kei!\n" \
|
||||||
"Sto decriptando il file 'discordia.kei', ci vorrà un po'...\n" \
|
"Sto decriptando il file 'discordia.kei', ci vorrà un po'...\n" \
|
||||||
"Ti farò sapere quando avrò finito."
|
"Ti farò sapere quando avrò finito."
|
||||||
|
self._unlocks.eris = self._person
|
||||||
|
await asyncify(self._session.commit)
|
||||||
else:
|
else:
|
||||||
if self._unlocks.eris == self._person:
|
if self._unlocks.eris == self._person:
|
||||||
yield Emotion.HAPPY, f"Sto ancora decriptando il file, torna dopo!"
|
yield Emotion.HAPPY, f"Sto ancora decriptando il file, torna dopo!"
|
||||||
|
@ -210,6 +255,20 @@ class PasswordConversation(Conversation):
|
||||||
yield Emotion.HAPPY, f"{self._unlocks.eris} mi ha già detto la password prima di te!\n" \
|
yield Emotion.HAPPY, f"{self._unlocks.eris} mi ha già detto la password prima di te!\n" \
|
||||||
f"Sto già decriptando il file 'discordia.kei', torna più tardi!"
|
f"Sto già decriptando il file 'discordia.kei', torna più tardi!"
|
||||||
|
|
||||||
|
elif self.anym(r"rygryg"):
|
||||||
|
if not self._unlocks.rygryg:
|
||||||
|
yield Emotion.GRIN, "O-kei!\n" \
|
||||||
|
"Funziona!\n" \
|
||||||
|
"Sto decriptando 'markov.kei', torna più tardi quando avrò finito..."
|
||||||
|
self._unlocks.rygryg = self._person
|
||||||
|
await asyncify(self._session.commit)
|
||||||
|
else:
|
||||||
|
if self._unlocks.rygryg == self._person:
|
||||||
|
yield Emotion.HAPPY, f"Sto ancora decriptando il file, torna dopo!"
|
||||||
|
else:
|
||||||
|
yield Emotion.HAPPY, f"{self._unlocks.rygryg} mi ha già detto la password prima di te!\n" \
|
||||||
|
f"Sto già decriptando il file 'markov.kei', torna più tardi!"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
yield Emotion.NEUTRAL, "No, non ha funzionato.\n" \
|
yield Emotion.NEUTRAL, "No, non ha funzionato.\n" \
|
||||||
"Vuoi parlarmi di qualcos'altro?"
|
"Vuoi parlarmi di qualcos'altro?"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "keipack"
|
name = "keipack"
|
||||||
version = "0.4.2"
|
version = "0.6"
|
||||||
description = "A mysterious AI assistant"
|
description = "A mysterious AI assistant"
|
||||||
authors = ["Stefano Pigozzi <ste.pigozzi@gmail.com>"]
|
authors = ["Stefano Pigozzi <ste.pigozzi@gmail.com>"]
|
||||||
license = "AGPL-3.0+"
|
license = "AGPL-3.0+"
|
||||||
|
@ -45,7 +45,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["poetry>=0.12"]
|
requires = ["poetry>=0.12"]
|
||||||
build-backend = "poetry.masonry.api"
|
build-backend = "poetry.masonry.api"
|
||||||
|
|
Loading…
Reference in a new issue