diff --git a/nonebot/adapters/red/bot.py b/nonebot/adapters/red/bot.py index 51d108b..75ed92b 100644 --- a/nonebot/adapters/red/bot.py +++ b/nonebot/adapters/red/bot.py @@ -68,6 +68,20 @@ def _check_at_me(bot: "Bot", event: MessageEvent) -> None: event.elements.pop(i) +def _check_reply_me(bot: "Bot", event: MessageEvent) -> None: + first_element = event.elements[0] + if ( + first_element.elementType == 7 + and first_element.replyElement + and ( + first_element.replyElement.senderUin == bot.self_id + or first_element.replyElement.senderUid == bot.self_id + ) + ): + event.to_me = True + event.reply = event.elements.pop(0) + + def _check_nickname(bot: "Bot", event: MessageEvent) -> None: element = event.elements[0] if element.elementType != 1: @@ -112,6 +126,7 @@ async def handle_event(self, event: Event): # TODO: 检查事件是否有回复消息,调用平台 API 获取原始消息的消息内容 if isinstance(event, MessageEvent): _check_at_me(self, event) + _check_reply_me(self, event) _check_nickname(self, event) await handle_event(self, event) diff --git a/nonebot/adapters/red/event.py b/nonebot/adapters/red/event.py index 6e597ba..9378545 100644 --- a/nonebot/adapters/red/event.py +++ b/nonebot/adapters/red/event.py @@ -9,7 +9,7 @@ from .message import Message from .api.model import Message as MessageModel -from .api.model import MsgType, ChatType, ShutUpTarget +from .api.model import MsgType, ChatType, ShutUpTarget, Element class Event(BaseEvent): @@ -56,6 +56,7 @@ class MessageEvent(Event, MessageModel): """消息事件""" to_me: bool = False + reply: Optional[Element] @override def get_type(self) -> str: