From b2c3271c2c2e14c437a74bcf75816ba926381f7c Mon Sep 17 00:00:00 2001 From: Ju4tCode <42488585+yanyongyu@users.noreply.github.com> Date: Fri, 10 Jan 2025 03:50:41 +0000 Subject: [PATCH] :bug: skip escape for qq --- nonebot/adapters/qq/bot.py | 14 ++++++++------ nonebot/adapters/qq/message.py | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/nonebot/adapters/qq/bot.py b/nonebot/adapters/qq/bot.py index a1e0098..905af96 100644 --- a/nonebot/adapters/qq/bot.py +++ b/nonebot/adapters/qq/bot.py @@ -285,9 +285,11 @@ def _prepare_message(message: Union[str, Message, MessageSegment]) -> Message: return _message @staticmethod - def _extract_send_message(message: Message) -> dict[str, Any]: + def _extract_send_message( + message: Message, escape_text: bool = True + ) -> dict[str, Any]: kwargs = {} - content = message.extract_content() or None + content = message.extract_content(escape_text) or None kwargs["content"] = content if embed := (message["embed"] or None): kwargs["embed"] = embed[-1].data["embed"] @@ -351,7 +353,7 @@ async def send_to_dms( guild_id=guild_id, msg_id=msg_id, event_id=event_id, - **self._extract_send_message(message=message), + **self._extract_send_message(message=message, escape_text=True), **self._extract_guild_image(message=message), ) @@ -367,7 +369,7 @@ async def send_to_channel( channel_id=channel_id, msg_id=msg_id, event_id=event_id, - **self._extract_send_message(message=message), + **self._extract_send_message(message=message, escape_text=True), **self._extract_guild_image(message=message), ) @@ -380,7 +382,7 @@ async def send_to_c2c( event_id: Optional[str] = None, ) -> Union[PostC2CMessagesReturn, PostC2CFilesReturn]: message = self._prepare_message(message) - kwargs = self._extract_send_message(message=message) + kwargs = self._extract_send_message(message=message, escape_text=False) if kwargs.get("embed"): msg_type = 4 elif kwargs.get("ark"): @@ -429,7 +431,7 @@ async def send_to_group( event_id: Optional[str] = None, ) -> Union[PostGroupMessagesReturn, PostGroupFilesReturn]: message = self._prepare_message(message) - kwargs = self._extract_send_message(message=message) + kwargs = self._extract_send_message(message=message, escape_text=False) if kwargs.get("embed"): msg_type = 4 elif kwargs.get("ark"): diff --git a/nonebot/adapters/qq/message.py b/nonebot/adapters/qq/message.py index 35cb7eb..a3e029a 100644 --- a/nonebot/adapters/qq/message.py +++ b/nonebot/adapters/qq/message.py @@ -532,9 +532,9 @@ def content_type(seg: QQAttachment): ) return msg - def extract_content(self) -> str: + def extract_content(self, escape_text: bool = True) -> str: return "".join( - str(seg) + seg.data["text"] if not escape_text and seg.type == "text" else str(seg) for seg in self if seg.type in ("text", "emoji", "mention_user", "mention_everyone", "mention_channel")