Merge pull request #33 from AzideCupric/fix

修复命令“群管理”的bug
This commit is contained in:
felinae98 2022-03-15 23:45:51 +08:00 committed by GitHub
commit 3a245e17f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 12 deletions

1
.gitignore vendored
View File

@ -22,6 +22,7 @@
__pycache__/
*.py[cod]
*$py.class
venv_test/
# C extensions
*.so

View File

@ -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
@ -294,11 +294,16 @@ 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, state: T_State):
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")
res_text = "请选择需要管理的群:\n"
group_number_idx = {}

View File

@ -1,9 +1,11 @@
import pytest
from nonebug import App
from .utils import fake_admin_user, fake_private_message_event, fake_superuser
from .utils import fake_group_message_event, fake_private_message_event, fake_superuser
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
@ -11,7 +13,10 @@ async def test_query(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()
@ -23,23 +28,57 @@ async def test_query(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()
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,
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)