⚗️ add got receive overload #142

This commit is contained in:
yanyongyu 2021-01-06 18:29:24 +08:00
parent a211f09a99
commit b6bf477551
2 changed files with 49 additions and 2 deletions

View File

@ -294,18 +294,27 @@ class Matcher(metaclass=MatcherMeta):
*
"""
async def _receive(bot: "Bot", event: "Event",
state: T_State) -> NoReturn:
async def _receive(bot: "Bot", event: "Event") -> NoReturn:
raise PausedException
cls.process_handler(_receive)
if cls.handlers:
# 已有前置handlers则接受一条新的消息否则视为接收初始消息
cls.append_handler(_receive)
def _decorator(func: T_Handler) -> T_Handler:
cls.process_handler(func)
if not cls.handlers or cls.handlers[-1] is not func:
cls.append_handler(func)
_receive.__params__.update({
"bot":
func.__params__["bot"],
"event":
func.__params__["event"] or _receive.__params__["event"]
})
return func
return _decorator
@ -368,6 +377,25 @@ class Matcher(metaclass=MatcherMeta):
cls.append_handler(wrapper)
wrapper.__params__.update({
"bot":
func.__params__["bot"],
"event":
func.__params__["event"] or wrapper.__params__["event"]
})
_key_getter.__params__.update({
"bot":
func.__params__["bot"],
"event":
func.__params__["event"] or wrapper.__params__["event"]
})
_key_parser.__params__.update({
"bot":
func.__params__["bot"],
"event":
func.__params__["event"] or wrapper.__params__["event"]
})
return func
return _decorator

View File

@ -0,0 +1,19 @@
from nonebot import on_command
from nonebot.adapters.cqhttp import Bot, PrivateMessageEvent, GroupMessageEvent
overload = on_command("overload")
@overload.handle()
async def handle_first_receive(bot: Bot):
return
@overload.got("message", prompt="群?")
async def handle_group(bot: Bot, event: GroupMessageEvent):
return
@overload.got("message", prompt="私?")
async def handle_private(bot: Bot, event: PrivateMessageEvent):
return