diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/config.toml | 2 | ||||
| -rw-r--r-- | tests/main.py | 2 | ||||
| -rw-r--r-- | tests/plugins/Webhook/__init__.py | 32 | ||||
| -rw-r--r-- | tests/plugins/Webhook/config.py (renamed from tests/rules/rules_default/wiki/config.toml) | 0 | ||||
| -rw-r--r-- | tests/plugins/_bradge-kook-cqhttp.py | 25 | ||||
| -rw-r--r-- | tests/plugins/e.py | 16 | ||||
| -rw-r--r-- | tests/plugins/exc.py | 18 | ||||
| -rw-r--r-- | tests/plugins/test.py | 35 | ||||
| -rw-r--r-- | tests/plugins/test2.py | 15 | ||||
| -rw-r--r-- | tests/rules/rule-1.py | 11 | ||||
| -rw-r--r-- | tests/rules/rule-2/__init__.py (renamed from tests/rules/rules_default/wiki/default.json) | 0 | ||||
| -rw-r--r-- | tests/rules/rule-2/config.py | 0 | ||||
| -rw-r--r-- | tests/rules/rule-2/wiki.py | 0 | ||||
| -rw-r--r-- | tests/test.py | 76 | ||||
| -rw-r--r-- | tests/web/server.py | 13 |
15 files changed, 115 insertions, 130 deletions
diff --git a/tests/config.toml b/tests/config.toml index 9088a86..d4b4697 100644 --- a/tests/config.toml +++ b/tests/config.toml @@ -10,7 +10,7 @@ verbose_exception = true [adapter.cqhttp] adapter_type = "reverse-ws" host = "127.0.0.1" -port = 8080 +port = 15800 url = "/cqhttp/ws" show_raw = false diff --git a/tests/main.py b/tests/main.py index da054c4..93f67f2 100644 --- a/tests/main.py +++ b/tests/main.py @@ -1,4 +1,4 @@ -from hydroroll import Bot +from HydroRoll import Bot bot = Bot(hot_reload=True) diff --git a/tests/plugins/Webhook/__init__.py b/tests/plugins/Webhook/__init__.py new file mode 100644 index 0000000..23f4c3a --- /dev/null +++ b/tests/plugins/Webhook/__init__.py @@ -0,0 +1,32 @@ +from iamai import Plugin +from iamai.log import logger as log +import asyncio +import aiohttp + +payload = None + +class Webhook(Plugin): + async def handle(self) -> None: + global payload + if payload: + log.info(payload[:5]) + await self.bot.get_adapter("cqhttp").call_api( + "send_group_msg", + group_id=126211793, + message=payload + ) + + async def rule(self) -> bool: + global payload + async with aiohttp.ClientSession() as session: + try: + async with session.get('http://localhost:3000') as response: + try: + payload = await response.text() + log.info(payload) + return True + except Exception as e: + log.info(f'Failed to fetch payload: {e}') + return False + except Exception as e: + return False
\ No newline at end of file diff --git a/tests/rules/rules_default/wiki/config.toml b/tests/plugins/Webhook/config.py index e69de29..e69de29 100644 --- a/tests/rules/rules_default/wiki/config.toml +++ b/tests/plugins/Webhook/config.py diff --git a/tests/plugins/_bradge-kook-cqhttp.py b/tests/plugins/_bradge-kook-cqhttp.py new file mode 100644 index 0000000..4b2712d --- /dev/null +++ b/tests/plugins/_bradge-kook-cqhttp.py @@ -0,0 +1,25 @@ +from iamai import Plugin + + +class Bradge(Plugin): + async def handle(self) -> None: + if self.event.adapter.name == "kook": + await self.bot.get_adapter("cqhttp").call_api( + "send_group_msg", + group_id=971050440, + message=f"[{self.event.adapter.name} - {self.event.extra.author.username}]\n{self.event.message}" + ) + elif self.event.adapter.name == "cqhttp": + if self.event.group_id == 971050440: + await self.bot.get_adapter("kook").call_api( + api="message/create", + target_id=1661426334688259, + content=f"[{self.event.adapter.name} - {self.event.sender.nickname}]\n{self.event.message}" + ) + + async def rule(self) -> bool: + if self.event.adapter.name not in ["cqhttp","kook"]: + return False + if self.event.type not in ["message","9",9]: + return False + return True
\ No newline at end of file diff --git a/tests/plugins/e.py b/tests/plugins/e.py new file mode 100644 index 0000000..be28e30 --- /dev/null +++ b/tests/plugins/e.py @@ -0,0 +1,16 @@ +from iamai import Plugin + +class Exec(Plugin): + async def handle(self) -> None: + try: + await self.event.reply(eval(self.event.raw_message[5:])) + except Exception as e: + await self.event.reply(f"ERROR:\n\t{e}") + + async def rule(self) -> bool: + if self.event.adapter.name != "cqhttp": + return False + try: + return self.event.message.get_plain_text().startswith(".show") + except: + return False
\ No newline at end of file diff --git a/tests/plugins/exc.py b/tests/plugins/exc.py deleted file mode 100644 index 4d6b885..0000000 --- a/tests/plugins/exc.py +++ /dev/null @@ -1,18 +0,0 @@ -from iamai import Plugin
-import os
-class Exec(Plugin):
- async def handle(self) -> None:
- from hydroroll.config import ConfigManager, GlobalConfig
- tmpConf = ConfigManager(os.path.join(GlobalConfig._current_path, "config", "userConf.dat"))
- tmpConf.load()
- await self.event.reply(str(tmpConf.properties))
-
-
- async def rule(self) -> bool:
- if self.event.adapter.name != "cqhttp":
- return False
- if self.event.type != "message":
- return False
- return self.event.message.startswith("t")
-
-print(1)
\ No newline at end of file diff --git a/tests/plugins/test.py b/tests/plugins/test.py deleted file mode 100644 index 6f3bc3b..0000000 --- a/tests/plugins/test.py +++ /dev/null @@ -1,35 +0,0 @@ -from iamai import Plugin
-from iamai.exceptions import GetEventTimeout
-
-
-class Weather(Plugin):
- async def handle(self) -> None:
- args = self.event.get_plain_text().split(" ")
- if len(args) >= 2:
- await self.event.reply(await self.get_weather(args[1]))
- else:
- await self.event.reply("请输入想要查询天气的城市:")
- try:
- city_event = await self.event.adapter.get(
- lambda x: x.type == "message", timeout=10
- )
- except GetEventTimeout:
- return
- else:
- await self.event.reply(
- await self.get_weather(city_event.get_plain_text())
- )
-
- async def rule(self) -> bool:
- if self.event.adapter.name != "cqhttp":
- return False
- if self.event.type != "message":
- return False
- return self.event.message.startswith("天气")
-
- @staticmethod
- async def get_weather(city):
- if city not in ["北京", "上海"]:
- return "你想查询的城市暂不支持!"
- return f"{city}的天气是..."
-
diff --git a/tests/plugins/test2.py b/tests/plugins/test2.py new file mode 100644 index 0000000..45b37a9 --- /dev/null +++ b/tests/plugins/test2.py @@ -0,0 +1,15 @@ +from flask import Flask, request + +class Webhooks: + app = Flask(__name__) + requests = request + payload = None + + @app.route('/', method=['POST', 'GET']) + async def handle_webhook(self): + self.payload = await request.get_json() + # 在这里处理接收到的数据 + return 'Webhook received' + + # app.run(host='0.0.0.0',port=3000) + diff --git a/tests/rules/rule-1.py b/tests/rules/rule-1.py new file mode 100644 index 0000000..aedebdc --- /dev/null +++ b/tests/rules/rule-1.py @@ -0,0 +1,11 @@ +from HydroRollCore import Rule + +class Rule_1(Rule): + """规则包示例1 + + """ + + priority = 1 + + async def check(self) -> None: + ...
\ No newline at end of file diff --git a/tests/rules/rules_default/wiki/default.json b/tests/rules/rule-2/__init__.py index e69de29..e69de29 100644 --- a/tests/rules/rules_default/wiki/default.json +++ b/tests/rules/rule-2/__init__.py diff --git a/tests/rules/rule-2/config.py b/tests/rules/rule-2/config.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/rules/rule-2/config.py diff --git a/tests/rules/rule-2/wiki.py b/tests/rules/rule-2/wiki.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/rules/rule-2/wiki.py diff --git a/tests/test.py b/tests/test.py index 8c3807b..b3eed87 100644 --- a/tests/test.py +++ b/tests/test.py @@ -1,77 +1,3 @@ -import threading
-import pickle
-import os
-class ConfigManager:
- def __init__(self, filename):
- self.lock = threading.RLock()
- self.filename = filename
- try:
- with open(filename, 'rb') as f:
- self.data = pickle.load(f)
- except FileNotFoundError:
- self.data = {}
-
- self.properties = {}
- self.apis = {}
-
- def load(self):
- with self.lock:
- try:
- with open(self.filename, 'rb') as f:
- self.data = pickle.load(f)
- self.properties.update(self.data)
- except FileNotFoundError:
- self.data = {}
-
- def save(self):
- with self.lock:
- try:
- with open(self.filename, 'wb') as f:
- # 将self.properties字典中的内容合并至self.data字典中
- for k, v in self.properties.items():
- self.data[k] = v
- # 将self.apis字典中的函数状态保存至self.data字典中
- for k, v in self.apis.items():
- if v is not None:
- self.data[k] = v
- pickle.dump(self.data, f)
- except Exception as e:
- print('Error saving config data:', repr(e))
- raise
-
- def register_property(self, name, default_value):
- self.properties[name] = default_value
-
- def getter(self, default_value=default_value):
- with self.lock:
- return self.data.get(name, default_value)
-
- def setter(self, value):
- with self.lock:
- self.data[name] = value
-
- setattr(ConfigManager, name, property(getter, setter))
-
- def register_api(self, name, func, default_value=None):
- self.apis[name] = default_value
-
- def wrapper(*args, **kwargs):
- with self.lock:
- return func(*args, **kwargs)
-
- setattr(ConfigManager, name, wrapper)
-
-
-c = ConfigManager("test.dat")
-
-# c.register_property("bot_off_list", [999, 777])
-# def send_message(self, message):
-# print("Sending message:", message)
-
-# c.register_api("send_message", send_message, default_value="Hello, world!")
-
-# c.save()
-c.load()
-print(c.properties,c.properties['bot_off_list'],c.apis)
+
diff --git a/tests/web/server.py b/tests/web/server.py new file mode 100644 index 0000000..67729fa --- /dev/null +++ b/tests/web/server.py @@ -0,0 +1,13 @@ +from flask import Flask, request +import json + +app = Flask(__name__) + +@app.route('/', methods=['POST']) # type: ignore +def handle(): + payload = request.content_type + print(payload) + # return json.loads(payload) + +if __name__ == '__main__': + app.run('127.0.0.1',3000)
\ No newline at end of file |
