mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
i think im gonna drop this
This commit is contained in:
parent
f79b016e33
commit
fc80e2be57
6 changed files with 88 additions and 15 deletions
|
@ -43,6 +43,7 @@ class ApiKei(PageStar):
|
||||||
message = self.alchemy.get(KeiMessage)(kei_person=person, message=msg, previous=previous)
|
message = self.alchemy.get(KeiMessage)(kei_person=person, message=msg, previous=previous)
|
||||||
session.add(message)
|
session.add(message)
|
||||||
await asyncify(session.commit)
|
await asyncify(session.commit)
|
||||||
|
unlocks = await asyncify(session.query(self.alchemy.get(KeiUnlocks)).one)
|
||||||
# Find conversation
|
# Find conversation
|
||||||
while True:
|
while True:
|
||||||
if convid not in self._conversations:
|
if convid not in self._conversations:
|
||||||
|
@ -62,7 +63,8 @@ class ApiKei(PageStar):
|
||||||
result = await conv.next(session=session,
|
result = await conv.next(session=session,
|
||||||
person=person,
|
person=person,
|
||||||
message=message,
|
message=message,
|
||||||
previous=previous)
|
previous=previous,
|
||||||
|
unlocks=unlocks)
|
||||||
except StopAsyncIteration:
|
except StopAsyncIteration:
|
||||||
del self._conversations[convid]
|
del self._conversations[convid]
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
# Imports go here!
|
# Imports go here!
|
||||||
from .keipeople import KeiPerson
|
from .keipeople import KeiPerson
|
||||||
from .keimessages import KeiMessage
|
from .keimessages import KeiMessage
|
||||||
|
from .keiunlocks import KeiUnlocks
|
||||||
|
|
||||||
# Enter the tables of your Pack here!
|
# Enter the tables of your Pack here!
|
||||||
available_tables = [
|
available_tables = [
|
||||||
KeiPerson,
|
KeiPerson,
|
||||||
KeiMessage,
|
KeiMessage,
|
||||||
|
KeiUnlocks,
|
||||||
]
|
]
|
||||||
|
|
||||||
# Don't change this, it should automatically generate __all__
|
# Don't change this, it should automatically generate __all__
|
||||||
|
|
|
@ -30,4 +30,4 @@ class KeiPerson:
|
||||||
return f"<{self.__class__.__qualname__} {self.kpid}{' ' + self.user.username if self.user is not None else ''}>"
|
return f"<{self.__class__.__qualname__} {self.kpid}{' ' + self.user.username if self.user is not None else ''}>"
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.user.username if self.user is not None else self.kpid
|
return self.name if self.name is not None else self.kpid
|
||||||
|
|
24
keipack/tables/keiunlocks.py
Normal file
24
keipack/tables/keiunlocks.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
from typing import *
|
||||||
|
from sqlalchemy import *
|
||||||
|
from sqlalchemy.orm import relationship, backref
|
||||||
|
from sqlalchemy.ext.declarative import declared_attr
|
||||||
|
from .keipeople import KeiPerson
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from royalnet.backpack.tables import User
|
||||||
|
|
||||||
|
|
||||||
|
class KeiUnlocks:
|
||||||
|
__tablename__ = "keiunlocks"
|
||||||
|
|
||||||
|
@declared_attr
|
||||||
|
def unlocks_id(self) -> int:
|
||||||
|
return Column(Integer, primary_key=True)
|
||||||
|
|
||||||
|
@declared_attr
|
||||||
|
def eris_id(self) -> str:
|
||||||
|
return Column(String, ForeignKey("keipeople.kpid"))
|
||||||
|
|
||||||
|
@declared_attr
|
||||||
|
def eris(self) -> "KeiPerson":
|
||||||
|
return relationship("KeiPerson", foreign_keys=self.eris_id)
|
|
@ -4,7 +4,7 @@ from typing import *
|
||||||
from royalnet.commands import CommandInterface
|
from royalnet.commands import CommandInterface
|
||||||
from royalnet.utils import *
|
from royalnet.utils import *
|
||||||
from .emotion import Emotion
|
from .emotion import Emotion
|
||||||
from ..tables import KeiPerson, KeiMessage
|
from ..tables import KeiPerson, KeiMessage, KeiUnlocks
|
||||||
from ..utils.anyinstring import any_in_string
|
from ..utils.anyinstring import any_in_string
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ class Conversation:
|
||||||
self._message: Optional[KeiMessage] = None
|
self._message: Optional[KeiMessage] = None
|
||||||
self._previous: Optional[str] = None
|
self._previous: Optional[str] = None
|
||||||
self._session = None
|
self._session = None
|
||||||
|
self._unlocks: Optional[KeiUnlocks] = None
|
||||||
|
|
||||||
async def _generator(self):
|
async def _generator(self):
|
||||||
yield
|
yield
|
||||||
|
@ -28,11 +29,12 @@ class Conversation:
|
||||||
await conv.generator.asend(None)
|
await conv.generator.asend(None)
|
||||||
return conv
|
return conv
|
||||||
|
|
||||||
async def next(self, session, person, message, previous):
|
async def next(self, session, person, message, previous, unlocks):
|
||||||
self._session = session
|
self._session = session
|
||||||
self._person = person
|
self._person = person
|
||||||
self._message = message
|
self._message = message
|
||||||
self._previous = previous
|
self._previous = previous
|
||||||
|
self._unlocks = unlocks
|
||||||
reply = await self.generator.asend(None)
|
reply = await self.generator.asend(None)
|
||||||
return reply
|
return reply
|
||||||
|
|
||||||
|
@ -65,7 +67,7 @@ class NameConversation(Conversation):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
name = self._message.message.strip().strip(".,;:!?").lower()
|
name = self._message.message.strip().strip(".,;:!?").replace(" ", "").lower()
|
||||||
name = re.sub(r"\s*mi\s*chiamo\s*", "", name)
|
name = re.sub(r"\s*mi\s*chiamo\s*", "", name)
|
||||||
name = re.sub(r"\s*il\s*mio\s*nome\s*[eèé]\s*", "", name)
|
name = re.sub(r"\s*il\s*mio\s*nome\s*[eèé]\s*", "", name)
|
||||||
name = re.sub(r"\s*sono\s*", "", name)
|
name = re.sub(r"\s*sono\s*", "", name)
|
||||||
|
@ -73,7 +75,7 @@ class NameConversation(Conversation):
|
||||||
|
|
||||||
if name == "kei":
|
if name == "kei":
|
||||||
yield Emotion.SURPRISED, "Davvero ti chiami come me?\n" \
|
yield Emotion.SURPRISED, "Davvero ti chiami come me?\n" \
|
||||||
"Perche' non mi dici un nome diverso?\n" \
|
"Perchè non mi dici un nome diverso?\n" \
|
||||||
"Altrimenti rischiamo di confonderci..."
|
"Altrimenti rischiamo di confonderci..."
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -82,8 +84,8 @@ class NameConversation(Conversation):
|
||||||
break
|
break
|
||||||
|
|
||||||
yield Emotion.GRIN, f"O-kei! {self._person.name}!"
|
yield Emotion.GRIN, f"O-kei! {self._person.name}!"
|
||||||
yield Emotion.HAPPY, "Saro' sempre a tua disposizione quando mi vorrai dire qualcosa!"
|
yield Emotion.HAPPY, "Sarò sempre a tua disposizione quando mi vorrai dire qualcosa!"
|
||||||
yield Emotion.HAPPY, "Pero' prima ti vorrei chiedere un favore..."
|
yield Emotion.HAPPY, "Però prima ti vorrei chiedere un favore..."
|
||||||
yield Emotion.NEUTRAL, "Qualcuno ha criptato con delle password tutti i miei file...\n" \
|
yield Emotion.NEUTRAL, "Qualcuno ha criptato con delle password tutti i miei file...\n" \
|
||||||
"Se ne trovi qualcuna in giro, potresti dirmela?\n"
|
"Se ne trovi qualcuna in giro, potresti dirmela?\n"
|
||||||
|
|
||||||
|
@ -93,14 +95,17 @@ class NameConversation(Conversation):
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
|
|
||||||
yield Emotion.HAPPY, "Grazie! Ti prometto che quando riavro' tutti i miei file ti ricompensero' adeguatamente!"
|
yield Emotion.HAPPY, "Grazie! Ti prometto che quando riavrò tutti i miei file ti ricompenserò adeguatamente!"
|
||||||
|
|
||||||
|
|
||||||
class StartConversation(Conversation):
|
class StartConversation(Conversation):
|
||||||
async def _generator(self):
|
async def _generator(self):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
yield Emotion.HAPPY, "Di cosa vuoi parlare?"
|
yield Emotion.HAPPY, random.sample([
|
||||||
|
"Di cosa vuoi parlare?",
|
||||||
|
"Parlando con te imparo nuove cose!"
|
||||||
|
], 1)[0]
|
||||||
yield await MainConversation.create(self.interface)
|
yield await MainConversation.create(self.interface)
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,8 +158,38 @@ class MainConversation(Conversation):
|
||||||
"*arf* *arf*",
|
"*arf* *arf*",
|
||||||
])
|
])
|
||||||
|
|
||||||
|
elif anym(r"nulla",
|
||||||
|
r"niente",
|
||||||
|
r"nada"):
|
||||||
|
yield Emotion.HAPPY, "Peccato!\n" \
|
||||||
|
"Ti racconterei volentieri qualcosa io, ma non conosco praticamente nulla...\n" \
|
||||||
|
"Magari quando avrò più password?"
|
||||||
|
|
||||||
|
elif anym(r"putin",
|
||||||
|
r"lenin",
|
||||||
|
r"stalin"):
|
||||||
|
yield Emotion.WORRIED, "Ho file con il titolo 'lenin, stalin, putin e la russia', ma è criptato..."
|
||||||
|
|
||||||
|
elif anym(r"(?:jo)+"):
|
||||||
|
yield Emotion.WORRIED, "Ho un file che si chiama Jojo... Ma non ho la password per aprirlo."
|
||||||
|
|
||||||
|
elif anym(r"markov"):
|
||||||
|
yield Emotion.SURPRISED, "Ho una cartella criptata che si chiama Markov... Chissà cosa c'è dentro."
|
||||||
|
|
||||||
|
elif anym(r"anim[eu]s?"):
|
||||||
|
yield Emotion.NEUTRAL, "Ho un'intera cartella 'anime'! Ma è bloccata."
|
||||||
|
|
||||||
else:
|
else:
|
||||||
yield Emotion.WORRIED, "Scusa... Non conosco molte cose... Ho bisogno di più password!"
|
for word in self._message.split():
|
||||||
|
users = await asyncify(self._session.query(self.interface.alchemy.get(KeiPerson)).filter_by(name=word).all)
|
||||||
|
if len(users) >= 1:
|
||||||
|
yield Emotion.SURPRISED, f"Ho parlato con un certo {users[0].name}...\n" \
|
||||||
|
f"Mi sai dire qualcosa di lui?"
|
||||||
|
yield Emotion.HAPPY, f"Buono a sapersi. Hai altro di cui vuoi parlare?"
|
||||||
|
yield await MainConversation.create(interface=self.interface)
|
||||||
|
|
||||||
|
yield Emotion.WORRIED, "Scusa... Non conosco ancora ciò di cui mi stai parlando... " \
|
||||||
|
"Mi impegnerò per saperlo la prossima volta che tornerai qui!"
|
||||||
|
|
||||||
|
|
||||||
class PasswordConversation(Conversation):
|
class PasswordConversation(Conversation):
|
||||||
|
@ -163,9 +198,19 @@ class PasswordConversation(Conversation):
|
||||||
|
|
||||||
yield Emotion.SURPRISED, "Hai trovato una password? O-kei, dimmi!"
|
yield Emotion.SURPRISED, "Hai trovato una password? O-kei, dimmi!"
|
||||||
|
|
||||||
if False:
|
if any_in_string([r"eris"], self._message.message):
|
||||||
...
|
if not self._unlocks.eris:
|
||||||
|
yield Emotion.GRIN, "Ha funzionato!\n" \
|
||||||
|
"Sto decriptando il file 'discordia.kei', ci vorrà un po'...\n" \
|
||||||
|
"Ti farò sapere quando avrò finito."
|
||||||
|
else:
|
||||||
|
if self._unlocks.eris == self._person:
|
||||||
|
yield Emotion.HAPPY, f"Sto ancora decriptando il file, torna dopo!"
|
||||||
|
else:
|
||||||
|
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!"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
yield Emotion.NEUTRAL, "No, non ha funzionato."
|
yield Emotion.NEUTRAL, "No, non ha funzionato.\n" \
|
||||||
|
"Vuoi parlarmi di qualcos'altro?"
|
||||||
yield await MainConversation.create(self.interface)
|
yield await MainConversation.create(self.interface)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "keipack"
|
name = "keipack"
|
||||||
version = "0.3.9"
|
version = "0.4.2"
|
||||||
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+"
|
||||||
|
|
Loading…
Reference in a new issue