From bd7aaa94c6d5abf89553feb92dbd02b4af8d731d Mon Sep 17 00:00:00 2001 From: yanyongyu Date: Thu, 10 Sep 2020 18:31:53 +0800 Subject: [PATCH] :bug: fix: strip after at bot --- nonebot/adapters/cqhttp.py | 3 +++ nonebot/plugin.py | 2 ++ tests/bot.py | 2 +- tests/test_plugins/test_message.py | 3 ++- tests/test_plugins/test_permission.py | 15 +++++++++++++++ 5 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 tests/test_plugins/test_permission.py diff --git a/nonebot/adapters/cqhttp.py b/nonebot/adapters/cqhttp.py index 6424c1d0..19614ccd 100644 --- a/nonebot/adapters/cqhttp.py +++ b/nonebot/adapters/cqhttp.py @@ -84,6 +84,9 @@ def _check_at_me(bot: "Bot", event: "Event"): if first_msg_seg == at_me_seg: event.to_me = True del event.message[0] + if event.message[0].type == "text": + event.message[0].data["text"] = event.message[0].data[ + "text"].lstrip() if not event.to_me: # check the last segment diff --git a/nonebot/plugin.py b/nonebot/plugin.py index ba526fcf..4dbfcd81 100644 --- a/nonebot/plugin.py +++ b/nonebot/plugin.py @@ -151,6 +151,8 @@ def on_command(cmd: Union[str, Tuple[str, ...]], async def _strip_cmd(bot, event, state: dict): message = event.message + print(message[0].data) + print(state["_prefix"]) event.message = message.__class__( str(message)[len(state["_prefix"]["raw_command"]):].strip()) diff --git a/tests/bot.py b/tests/bot.py index 31ffb6c8..b55faab4 100644 --- a/tests/bot.py +++ b/tests/bot.py @@ -20,7 +20,7 @@ nonebot.init() app = nonebot.get_asgi() # load builtin plugin -nonebot.load_plugin("nonebot.plugins.base") +nonebot.load_builtin_plugins() # load local plugins nonebot.load_plugins("test_plugins") diff --git a/tests/test_plugins/test_message.py b/tests/test_plugins/test_message.py index 76164bf7..e683b630 100644 --- a/tests/test_plugins/test_message.py +++ b/tests/test_plugins/test_message.py @@ -1,11 +1,12 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- +from nonebot.rule import to_me from nonebot.typing import Event from nonebot.plugin import on_message from nonebot.adapters.cqhttp import Bot -test_message = on_message(state={"default": 1}) +test_message = on_message(to_me(), state={"default": 1}) @test_message.handle() diff --git a/tests/test_plugins/test_permission.py b/tests/test_plugins/test_permission.py new file mode 100644 index 00000000..a7f577a7 --- /dev/null +++ b/tests/test_plugins/test_permission.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from nonebot.rule import to_me +from nonebot.typing import Event +from nonebot.plugin import on_startswith +from nonebot.adapters.cqhttp import Bot +from nonebot.permission import GROUP_ADMIN + +test_command = on_startswith("hello", to_me(), permission=GROUP_ADMIN) + + +@test_command.handle() +async def test_handler(bot: Bot, event: Event, state: dict): + await test_command.finish("hello")