From 85ec2f7dc55a672b07272a50f11eb86460f38671 Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Wed, 9 Aug 2023 14:36:37 +0800 Subject: feat:all MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/config.toml | 2 +- tests/main.py | 2 +- tests/plugins/Webhook/__init__.py | 32 ++++++++++++ tests/plugins/Webhook/config.py | 0 tests/plugins/_bradge-kook-cqhttp.py | 25 ++++++++++ tests/plugins/e.py | 16 ++++++ tests/plugins/exc.py | 18 ------- tests/plugins/test.py | 35 ------------- tests/plugins/test2.py | 15 ++++++ tests/rules/rule-1.py | 11 +++++ tests/rules/rule-2/__init__.py | 0 tests/rules/rule-2/config.py | 0 tests/rules/rule-2/wiki.py | 0 tests/rules/rules_default/wiki/config.toml | 0 tests/rules/rules_default/wiki/default.json | 0 tests/test.py | 76 +---------------------------- tests/web/server.py | 13 +++++ 17 files changed, 115 insertions(+), 130 deletions(-) create mode 100644 tests/plugins/Webhook/__init__.py create mode 100644 tests/plugins/Webhook/config.py create mode 100644 tests/plugins/_bradge-kook-cqhttp.py create mode 100644 tests/plugins/e.py delete mode 100644 tests/plugins/exc.py delete mode 100644 tests/plugins/test.py create mode 100644 tests/plugins/test2.py create mode 100644 tests/rules/rule-1.py create mode 100644 tests/rules/rule-2/__init__.py create mode 100644 tests/rules/rule-2/config.py create mode 100644 tests/rules/rule-2/wiki.py delete mode 100644 tests/rules/rules_default/wiki/config.toml delete mode 100644 tests/rules/rules_default/wiki/default.json create mode 100644 tests/web/server.py (limited to 'tests') 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/plugins/Webhook/config.py b/tests/plugins/Webhook/config.py new file mode 100644 index 0000000..e69de29 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/rule-2/__init__.py b/tests/rules/rule-2/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/rules/rule-2/config.py b/tests/rules/rule-2/config.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/rules/rule-2/wiki.py b/tests/rules/rule-2/wiki.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/rules/rules_default/wiki/config.toml b/tests/rules/rules_default/wiki/config.toml deleted file mode 100644 index e69de29..0000000 diff --git a/tests/rules/rules_default/wiki/default.json b/tests/rules/rules_default/wiki/default.json deleted file mode 100644 index e69de29..0000000 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 -- cgit v1.2.3-70-g09d2