aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author简律纯 <i@jyunko.cn>2023-11-11 02:52:32 +0800
committer简律纯 <i@jyunko.cn>2023-11-11 02:52:32 +0800
commitd26f76d8a219b35105ab8c5c116fd6fc2e21f736 (patch)
treed718386893c29150ec53447b4f5ad27acdb0d67e
parent4c2a6c5a911b684d58146517243cfd2d981d3686 (diff)
downloadHydroRoll-d26f76d8a219b35105ab8c5c116fd6fc2e21f736.tar.gz
HydroRoll-d26f76d8a219b35105ab8c5c116fd6fc2e21f736.zip
chore: 拆分 `handle` 方法,实现输入流
-rw-r--r--example/plugins/HydroRoll/__init__.py72
-rw-r--r--example/plugins/show.py6
2 files changed, 25 insertions, 53 deletions
diff --git a/example/plugins/HydroRoll/__init__.py b/example/plugins/HydroRoll/__init__.py
index 2d2af8e..e2f80b8 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 iamai.exceptions import GetEventTimeout
BASE_DIR = dirname(abspath("__file__"))
HYDRO_DIR = dirname(abspath(__file__))
@@ -46,55 +47,28 @@ class HydroRoll(Plugin):
@TODO: HydroRollCore should be able to handle all signals and tokens from Psi.
@BODY: HydroRollCore actives the rule-packages.
"""
-
- if self.event.message.get_plain_text() == ".core":
- await self.event.reply("HydroRollCore is running.")
- if self.event.message.startswith(".set"):
- arg_list: list = self.event.message.get_plain_text().split()
- sub_cmd: str = arg_list[1]
- if sub_cmd == ("censor"):
- operator: str = arg_list[2]
- censor_list: list = arg_list[3:]
- pattern = re.compile(r"[+-](\d?=?)(.*)")
-
+ 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 self.event.message.get_plain_text() == ".core":
+ ...
+ if self.event.message.startswith(".set"):
+ ...
+ elif self.event.message.startswith(".get"):
+ ...
+ elif self.event.message.startswith(".test"):
try:
- with open(
- join(APP_DIR, "data", "censor.json"), "r+", encoding="utf8"
- ) as f:
- censor_content = json.load(f)
- except (FileNotFoundError, json.JSONDecodeError):
- censor_content = {}
-
- censor_list = list(filter(lambda x: pattern.match(x), censor_list))
-
- with open(
- join(APP_DIR, "data", "censor.json"), "w+", encoding="utf8"
- ) as f:
- if operator in ["add", "+"]:
- for item in censor_list:
- match = pattern.match(item)
- censor_content[match.group(2)] = int(
- match.group(1).replace("=", "")
- )
- elif operator in ["remove", "rmv", "-"]:
- for item in censor_list:
- match = pattern.match(item)
- keyword = match.group(2)
- if keyword in censor_content:
- del censor_content[keyword]
- elif operator in ["list", "map"]:
- pass # do something else
-
- json.dump(censor_content, f, ensure_ascii=False, indent=4)
- elif self.event.message.startswith(".get"):
- ...
-
- elif self.event.message.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}")
+ 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}")
async def rule(self) -> bool:
"""
@@ -150,5 +124,3 @@ class HydroRoll(Plugin):
def load_models(self):
self.models = self._load_models(self.model_path_list, self.model_dict)
-
-
diff --git a/example/plugins/show.py b/example/plugins/show.py
index b99c18c..289e141 100644
--- a/example/plugins/show.py
+++ b/example/plugins/show.py
@@ -1,7 +1,6 @@
from iamai import Plugin
from numpy.random import Generator
-from randomgen import AESCounter
-rg = Generator(AESCounter(12345, mode="sequence"))
+
class Exec(Plugin):
@@ -29,7 +28,8 @@ class Exec(Plugin):
]
res = await self.event.adapter.send_group_forward_msg(group_id=int(self.event.group_id), messages=content)
except Exception as e:
- await self.event.reply(f"ERROR!{e!r}")
+ # await self.event.reply(f"ERROR!{e!r}")
+ await self.event.reply(f"{eval(self.event.message.get_plain_text()[6:])}")
async def rule(self) -> bool:
return (