🐛 fix got handler running more than once

This commit is contained in:
yanyongyu 2021-08-16 16:47:57 +08:00
parent 57a60ae45b
commit 3d4d3b0f24
2 changed files with 8 additions and 3 deletions

View File

@ -456,7 +456,8 @@ class Matcher(metaclass=MatcherMeta):
parser_handler = cls.append_handler(_key_parser) parser_handler = cls.append_handler(_key_parser)
def _decorator(func: T_Handler) -> T_Handler: def _decorator(func: T_Handler) -> T_Handler:
if not hasattr(cls.handlers[-1], "__wrapped__"): print("deco", key, hasattr(cls.handlers[-1].func, "__wrapped__"))
if not hasattr(cls.handlers[-1].func, "__wrapped__"):
parser = cls.handlers.pop() parser = cls.handlers.pop()
func_handler = Handler(func) func_handler = Handler(func)

View File

@ -405,10 +405,14 @@ def on_command(cmd: Union[str, Tuple[str, ...]],
async def _strip_cmd(bot: "Bot", event: "Event", state: T_State): async def _strip_cmd(bot: "Bot", event: "Event", state: T_State):
message = event.get_message() message = event.get_message()
if len(message) < 1:
return
segment = message.pop(0) segment = message.pop(0)
segment_text = str(segment).lstrip()
if not segment_text.startswith(state["_prefix"]["raw_command"]):
return
new_message = message.__class__( new_message = message.__class__(
str(segment).lstrip() segment_text[len(state["_prefix"]["raw_command"]):].lstrip())
[len(state["_prefix"]["raw_command"]):].lstrip()) # type: ignore
for new_segment in reversed(new_message): for new_segment in reversed(new_message):
message.insert(0, new_segment) message.insert(0, new_segment)