From 410c9619d5582d657f2754b32ee15592b254bf65 Mon Sep 17 00:00:00 2001 From: Azide Date: Mon, 14 Mar 2022 20:04:14 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86group=5Fmanage?= =?UTF-8?q?=5Fmatcher=E7=9A=84=E9=87=8D=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/nonebot_bison/config_manager.py | 5 +++- tests/test_config_manager_admin.py | 26 +++++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/plugins/nonebot_bison/config_manager.py b/src/plugins/nonebot_bison/config_manager.py index ee5ebf9..9e59b2b 100644 --- a/src/plugins/nonebot_bison/config_manager.py +++ b/src/plugins/nonebot_bison/config_manager.py @@ -12,7 +12,7 @@ from nonebot.internal.params import ArgStr from nonebot.internal.rule import Rule from nonebot.log import logger from nonebot.matcher import Matcher -from nonebot.params import Depends, EventMessage, EventPlainText, EventToMe +from nonebot.params import Depends, EventMessage, EventPlainText, EventToMe, EventType from nonebot.permission import SUPERUSER from nonebot.rule import to_me from nonebot.typing import T_State @@ -296,6 +296,9 @@ do_del_sub(del_sub_matcher) group_manage_matcher = on_command("群管理") +@group_manage_matcher.handle() +async def send_group_list(bot: Bot, event: GroupMessageEvent, state: T_State): + await group_manage_matcher.finish(Message("该功能只支持私聊使用,请私聊Bot")) @group_manage_matcher.handle() async def send_group_list(bot: Bot, state: T_State): diff --git a/tests/test_config_manager_admin.py b/tests/test_config_manager_admin.py index fc6581d..77e9ac1 100644 --- a/tests/test_config_manager_admin.py +++ b/tests/test_config_manager_admin.py @@ -1,9 +1,11 @@ from nonebug import App -from .utils import fake_admin_user, fake_private_message_event, fake_superuser +from .utils import fake_admin_user, fake_private_message_event, fake_group_message_event, fake_superuser +import pytest -async def test_query(app: App): +@pytest.mark.asyncio +async def test_query_with_superuser_private(app: App): from nonebot.adapters.onebot.v11.bot import Bot from nonebot.adapters.onebot.v11.message import Message from nonebot_bison.config_manager import group_manage_matcher @@ -43,3 +45,23 @@ async def test_query(app: App): message=Message("查询订阅"), sender=fake_superuser ) ctx.receive_event(bot, event_2_ok) + ctx.should_pass_rule() + ctx.should_pass_permission() + +@pytest.mark.asyncio +async def test_query_with_superuser_group_tome(app: App): + from nonebot.adapters.onebot.v11.bot import Bot + from nonebot.adapters.onebot.v11.message import Message + from nonebot_bison.config_manager import group_manage_matcher + + async with app.test_matcher(group_manage_matcher) as ctx: + bot = ctx.create_bot(base=Bot) + event = fake_group_message_event( + message=Message("群管理"), sender=fake_superuser,to_me=True + ) + ctx.receive_event(bot, event) + ctx.should_pass_rule() + ctx.should_pass_permission() + ctx.should_call_send( + event, '', True + ) \ No newline at end of file From 574e4916284b6c0f565084b9de1c71365fea6b47 Mon Sep 17 00:00:00 2001 From: Azide Date: Mon, 14 Mar 2022 17:46:27 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/nonebot_bison/config_manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/nonebot_bison/config_manager.py b/src/plugins/nonebot_bison/config_manager.py index 9e59b2b..e701779 100644 --- a/src/plugins/nonebot_bison/config_manager.py +++ b/src/plugins/nonebot_bison/config_manager.py @@ -294,14 +294,14 @@ del_sub_matcher = on_command( del_sub_matcher.handle()(set_target_user_info) do_del_sub(del_sub_matcher) -group_manage_matcher = on_command("群管理") +group_manage_matcher = on_command("群管理",rule=to_me(),permission=SUPERUSER,priority=4) @group_manage_matcher.handle() async def send_group_list(bot: Bot, event: GroupMessageEvent, state: T_State): await group_manage_matcher.finish(Message("该功能只支持私聊使用,请私聊Bot")) @group_manage_matcher.handle() -async def send_group_list(bot: Bot, state: T_State): +async def send_group_list(bot: Bot, event: PrivateMessageEvent, state: T_State): groups = await bot.call_api("get_group_list") res_text = "请选择需要管理的群:\n" group_number_idx = {} From dae092402dfe6ef27990dd2ab32ec64b738ee369 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 14 Mar 2022 13:01:10 +0000 Subject: [PATCH 3/9] auto fix by pre-commit hooks --- src/plugins/nonebot_bison/config_manager.py | 4 +++- tests/test_config_manager_admin.py | 16 ++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/plugins/nonebot_bison/config_manager.py b/src/plugins/nonebot_bison/config_manager.py index e701779..7e7255e 100644 --- a/src/plugins/nonebot_bison/config_manager.py +++ b/src/plugins/nonebot_bison/config_manager.py @@ -294,12 +294,14 @@ del_sub_matcher = on_command( del_sub_matcher.handle()(set_target_user_info) do_del_sub(del_sub_matcher) -group_manage_matcher = on_command("群管理",rule=to_me(),permission=SUPERUSER,priority=4) +group_manage_matcher = on_command("群管理", rule=to_me(), permission=SUPERUSER, priority=4) + @group_manage_matcher.handle() async def send_group_list(bot: Bot, event: GroupMessageEvent, state: T_State): await group_manage_matcher.finish(Message("该功能只支持私聊使用,请私聊Bot")) + @group_manage_matcher.handle() async def send_group_list(bot: Bot, event: PrivateMessageEvent, state: T_State): groups = await bot.call_api("get_group_list") diff --git a/tests/test_config_manager_admin.py b/tests/test_config_manager_admin.py index 77e9ac1..877edbf 100644 --- a/tests/test_config_manager_admin.py +++ b/tests/test_config_manager_admin.py @@ -1,8 +1,13 @@ +import pytest from nonebug import App -from .utils import fake_admin_user, fake_private_message_event, fake_group_message_event, fake_superuser +from .utils import ( + fake_admin_user, + fake_group_message_event, + fake_private_message_event, + fake_superuser, +) -import pytest @pytest.mark.asyncio async def test_query_with_superuser_private(app: App): @@ -48,6 +53,7 @@ async def test_query_with_superuser_private(app: App): ctx.should_pass_rule() ctx.should_pass_permission() + @pytest.mark.asyncio async def test_query_with_superuser_group_tome(app: App): from nonebot.adapters.onebot.v11.bot import Bot @@ -57,11 +63,9 @@ async def test_query_with_superuser_group_tome(app: App): async with app.test_matcher(group_manage_matcher) as ctx: bot = ctx.create_bot(base=Bot) event = fake_group_message_event( - message=Message("群管理"), sender=fake_superuser,to_me=True + message=Message("群管理"), sender=fake_superuser, to_me=True ) ctx.receive_event(bot, event) ctx.should_pass_rule() ctx.should_pass_permission() - ctx.should_call_send( - event, '', True - ) \ No newline at end of file + ctx.should_call_send(event, "", True) From 08387943bafa6b68707cac1425c171732de5eaef Mon Sep 17 00:00:00 2001 From: Azide Date: Mon, 14 Mar 2022 22:31:22 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E6=9B=B4=E6=96=B0gitignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + tests/test_config_manager_admin.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8b8f3e5..0753ec4 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ __pycache__/ *.py[cod] *$py.class +venv_test/ # C extensions *.so diff --git a/tests/test_config_manager_admin.py b/tests/test_config_manager_admin.py index 77e9ac1..47c32b4 100644 --- a/tests/test_config_manager_admin.py +++ b/tests/test_config_manager_admin.py @@ -1,7 +1,10 @@ +import imp from nonebug import App from .utils import fake_admin_user, fake_private_message_event, fake_group_message_event, fake_superuser +from .conftest import app + import pytest @pytest.mark.asyncio @@ -63,5 +66,5 @@ async def test_query_with_superuser_group_tome(app: App): ctx.should_pass_rule() ctx.should_pass_permission() ctx.should_call_send( - event, '', True + event, Message("该功能只支持私聊使用,请私聊Bot"), True ) \ No newline at end of file From a671264c39145f580b58b6a54cef692467d1071d Mon Sep 17 00:00:00 2001 From: felinae98 <731499577@qq.com> Date: Mon, 14 Mar 2022 23:26:50 +0800 Subject: [PATCH 5/9] fix some bug --- tests/test_config_manager_admin.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_config_manager_admin.py b/tests/test_config_manager_admin.py index 877edbf..c130f71 100644 --- a/tests/test_config_manager_admin.py +++ b/tests/test_config_manager_admin.py @@ -18,7 +18,10 @@ async def test_query_with_superuser_private(app: App): async with app.test_matcher(group_manage_matcher) as ctx: bot = ctx.create_bot(base=Bot) event = fake_private_message_event( - message=Message("群管理"), sender=fake_superuser + message=Message("群管理"), + sender=fake_superuser, + to_me=True, + user_id=fake_superuser.user_id, ) ctx.receive_event(bot, event) ctx.should_pass_rule() From a6321cdf4092ccf144e2f3fc2ed55328eca610bf Mon Sep 17 00:00:00 2001 From: Azide Date: Mon, 14 Mar 2022 23:47:42 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86test=5Fconfig=5F?= =?UTF-8?q?manager=5Fadmin=E4=B8=AD=E7=9A=84test=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_config_manager_admin.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/test_config_manager_admin.py b/tests/test_config_manager_admin.py index 47c32b4..5daabdd 100644 --- a/tests/test_config_manager_admin.py +++ b/tests/test_config_manager_admin.py @@ -1,4 +1,4 @@ -import imp + from nonebug import App from .utils import fake_admin_user, fake_private_message_event, fake_group_message_event, fake_superuser @@ -16,7 +16,7 @@ async def test_query_with_superuser_private(app: App): async with app.test_matcher(group_manage_matcher) as ctx: bot = ctx.create_bot(base=Bot) event = fake_private_message_event( - message=Message("群管理"), sender=fake_superuser + message=Message("群管理"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id ) ctx.receive_event(bot, event) ctx.should_pass_rule() @@ -28,24 +28,24 @@ async def test_query_with_superuser_private(app: App): event, Message("请选择需要管理的群:\n1. 101 - test group\n请输入左侧序号"), True ) event_1_err = fake_private_message_event( - message=Message("0"), sender=fake_superuser + message=Message("0"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id ) ctx.receive_event(bot, event_1_err) - ctx.should_rejected() ctx.should_call_send(event_1_err, "请输入正确序号", True) + ctx.should_rejected() event_1_ok = fake_private_message_event( - message=Message("1"), sender=fake_superuser + message=Message("1"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id ) ctx.receive_event(bot, event_1_ok) ctx.should_call_send(event_1_ok, "请输入需要使用的命令:添加订阅,查询订阅,删除订阅", True) event_2_err = fake_private_message_event( - message=Message("222"), sender=fake_superuser + message=Message("222"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id ) ctx.receive_event(bot, event_2_err) - ctx.should_rejected() ctx.should_call_send(event_2_err, "请输入正确的命令", True) + ctx.should_rejected() event_2_ok = fake_private_message_event( - message=Message("查询订阅"), sender=fake_superuser + message=Message("查询订阅"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id ) ctx.receive_event(bot, event_2_ok) ctx.should_pass_rule() @@ -60,7 +60,7 @@ async def test_query_with_superuser_group_tome(app: App): async with app.test_matcher(group_manage_matcher) as ctx: bot = ctx.create_bot(base=Bot) event = fake_group_message_event( - message=Message("群管理"), sender=fake_superuser,to_me=True + message=Message("群管理"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id ) ctx.receive_event(bot, event) ctx.should_pass_rule() From 1f0f452cd1ce3b7bd650897ac9bdc4e3ccd7bf9a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 14 Mar 2022 16:00:42 +0000 Subject: [PATCH 7/9] auto fix by pre-commit hooks --- tests/test_config_manager_admin.py | 34 ++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/tests/test_config_manager_admin.py b/tests/test_config_manager_admin.py index 36d6637..09371a6 100644 --- a/tests/test_config_manager_admin.py +++ b/tests/test_config_manager_admin.py @@ -18,7 +18,10 @@ async def test_query_with_superuser_private(app: App): async with app.test_matcher(group_manage_matcher) as ctx: bot = ctx.create_bot(base=Bot) event = fake_private_message_event( - message=Message("群管理"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id + message=Message("群管理"), + sender=fake_superuser, + to_me=True, + user_id=fake_superuser.user_id, ) ctx.receive_event(bot, event) ctx.should_pass_rule() @@ -30,24 +33,36 @@ async def test_query_with_superuser_private(app: App): event, Message("请选择需要管理的群:\n1. 101 - test group\n请输入左侧序号"), True ) event_1_err = fake_private_message_event( - message=Message("0"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id + message=Message("0"), + sender=fake_superuser, + to_me=True, + user_id=fake_superuser.user_id, ) ctx.receive_event(bot, event_1_err) ctx.should_call_send(event_1_err, "请输入正确序号", True) ctx.should_rejected() event_1_ok = fake_private_message_event( - message=Message("1"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id + message=Message("1"), + sender=fake_superuser, + to_me=True, + user_id=fake_superuser.user_id, ) ctx.receive_event(bot, event_1_ok) ctx.should_call_send(event_1_ok, "请输入需要使用的命令:添加订阅,查询订阅,删除订阅", True) event_2_err = fake_private_message_event( - message=Message("222"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id + message=Message("222"), + sender=fake_superuser, + to_me=True, + user_id=fake_superuser.user_id, ) ctx.receive_event(bot, event_2_err) ctx.should_call_send(event_2_err, "请输入正确的命令", True) ctx.should_rejected() event_2_ok = fake_private_message_event( - message=Message("查询订阅"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id + message=Message("查询订阅"), + sender=fake_superuser, + to_me=True, + user_id=fake_superuser.user_id, ) ctx.receive_event(bot, event_2_ok) ctx.should_pass_rule() @@ -63,11 +78,12 @@ async def test_query_with_superuser_group_tome(app: App): async with app.test_matcher(group_manage_matcher) as ctx: bot = ctx.create_bot(base=Bot) event = fake_group_message_event( - message=Message("群管理"), sender=fake_superuser,to_me=True,user_id=fake_superuser.user_id + message=Message("群管理"), + sender=fake_superuser, + to_me=True, + user_id=fake_superuser.user_id, ) ctx.receive_event(bot, event) ctx.should_pass_rule() ctx.should_pass_permission() - ctx.should_call_send( - event, Message("该功能只支持私聊使用,请私聊Bot"), True - ) + ctx.should_call_send(event, Message("该功能只支持私聊使用,请私聊Bot"), True) From eaf76a65068e324cac7f9be9e0f07c368016b424 Mon Sep 17 00:00:00 2001 From: felinae98 <731499577@qq.com> Date: Tue, 15 Mar 2022 23:23:38 +0800 Subject: [PATCH 8/9] update --- tests/test_config_manager_admin.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/test_config_manager_admin.py b/tests/test_config_manager_admin.py index 09371a6..51d7e35 100644 --- a/tests/test_config_manager_admin.py +++ b/tests/test_config_manager_admin.py @@ -1,12 +1,7 @@ import pytest from nonebug import App -from .utils import ( - fake_admin_user, - fake_group_message_event, - fake_private_message_event, - fake_superuser, -) +from .utils import fake_group_message_event, fake_private_message_event, fake_superuser @pytest.mark.asyncio From 0d67d46fc6fb2ba3b59b96c9bd3ae6889afdd1d5 Mon Sep 17 00:00:00 2001 From: felinae98 <731499577@qq.com> Date: Tue, 15 Mar 2022 23:44:59 +0800 Subject: [PATCH 9/9] update doc file --- docs/dev/README.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/docs/dev/README.md b/docs/dev/README.md index f69fe22..945e47c 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md @@ -2,7 +2,32 @@ sidebar: auto --- -# 开发指南 +# 基本开发须知 + +## 语言以及工具 + +1. 本项目使用了`python3.9`的特性进行开发,所以请确保你的 Python 版本>=3.9 +2. 本项目使用 poetry 进行依赖管理,请确保开发之前已经进行过`poetry install`,运行时在`poetry shell`的环境中进行运行 +3. 本项目使用的 node 项目管理工具是 yarn + +## 前端 + +本项目使用了前端,如果单独 clone 仓库本身,里面是**不包含**编译过的前端的,请使用`yarn && yarn build`进行前端的构建。 +如果想要开发前端,推荐在`.env.dev`中加入`BISON_OUTER_URL="http://localhost:3000/bison/"`,然后分别运行 bot 和`yarn dev` +::: warning +请在开发前端的时候删除项目根目录中的`node_modules`,否则编译和运行的时候可能会出现奇怪的问题。 +::: + +## 文档 + +文档的相关部分在`docs`目录中,可以在项目根目录执行`yarn docs:dev`预览文件更改效果。 + +## 代码格式 + +本项目使用了 pre-commit 来进行代码美化和格式化。在`poetry shell`状态下执行`pre-commit install`来安装 git hook,可自动在 commit 时 +格式化代码。 + +# 适配新网站 本插件需要你的帮助!只需要会写简单的爬虫,就能给本插件适配新的网站。