aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/example/plugins/HydroRoll/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'example/plugins/HydroRoll/__init__.py')
-rw-r--r--example/plugins/HydroRoll/__init__.py76
1 files changed, 55 insertions, 21 deletions
diff --git a/example/plugins/HydroRoll/__init__.py b/example/plugins/HydroRoll/__init__.py
index 5edc2a7..151a58a 100644
--- a/example/plugins/HydroRoll/__init__.py
+++ b/example/plugins/HydroRoll/__init__.py
@@ -10,6 +10,7 @@ from iamai.log import logger
from .config import Directory, GlobalConfig, Models
from .utils import *
from .models.Transformer import query
+from .command import Set, Get
from iamai.exceptions import GetEventTimeout
BASE_DIR = dirname(abspath("__file__"))
@@ -48,27 +49,46 @@ class HydroRoll(Plugin):
@BODY: HydroRollCore actives the rule-packages.
"""
args = self.event.get_plain_text().split(" ")
- try:
- event = await self.event.adapter.get(
- lambda x: x.type == "message", timeout=10
- )
- except GetEventTimeout:
- return
- else:
- if args[0] == ".core":
- ...
- if args[0].startswith(".set"):
- ...
- elif args[0].startswith(".get"):
- ...
- elif args[0].startswith(".test"):
- try:
- result = eval(
- self.event.message.get_plain_text()[5:]
- ) # literal_eval(self.event.message.get_plain_text()[5:])
- await self.event.reply(str(result))
- except Exception as error:
- await self.event.reply(f"{error!r}")
+ command_list = [".root", ".roots", ".core", ".set", ".get", ".test"]
+ for cmd in command_list:
+ if cmd.startswith(args[0]):
+ logger.info(cmd)
+ if args[0] != cmd:
+ try:
+ flag = True
+ current_cmd = args[0]
+ while flag:
+ flag = False
+ event = await self.ask(ask_text=None, timeout=3)
+ current_cmd = current_cmd + event.get_plain_text()
+ if cmd.startswith(current_cmd):
+ if current_cmd != cmd:
+ flag = True
+ else:
+ await self.event.reply(f"{cmd}")
+ flag = False
+ except GetEventTimeout:
+ continue
+ else:
+ await self.event.reply(cmd)
+ # if args[0] in [".root", ".roots"]:
+ # import requests
+
+ # data = requests.get("https://vercel-hitokoto.vercel.app/api/roots").json()
+ # await self.event.reply(data["line"])
+ # else:
+ # if args[0] == ".core":
+ # ...
+ # if args[0].startswith(".set"):
+ # resolve = Set(args[1:]) # TODO: handle multiple sets
+ # elif args[0].startswith(".get"):
+ # resolve = Get(args[1:]) # TODO: handle multiple gets
+ # elif args[0].startswith(".test"):
+ # try:
+ # result = eval(self.event.message.get_plain_text()[5:])
+ # await self.event.reply(str(result))
+ # except Exception as error:
+ # await self.event.reply(f"{error!r}")
async def rule(self) -> bool:
"""
@@ -124,3 +144,17 @@ class HydroRoll(Plugin):
def load_models(self):
self.models = self._load_models(self.model_path_list, self.model_dict)
+
+ async def ask(self, ask_text: str | None, timeout: int = 10) -> None:
+ if ask_text:
+ await self.event.reply(ask_text)
+ try:
+ event = await self.event.adapter.get(
+ lambda x: x.type == "message"
+ and x.group_id == self.event.group_id
+ and x.user_id == self.event.user_id,
+ timeout=timeout,
+ )
+ return event
+ except GetEventTimeout as e:
+ raise GetEventTimeout from e