@@ -50,6 +50,11 @@ def merge_text(msg: TM) -> TM:
5050
5151async def _auto_fallback (seg : Segment , bot : Union [Bot , None ]):
5252 if isinstance (seg , Media ):
53+ if seg .children :
54+ msg = []
55+ for but in seg .children :
56+ msg .extend (await _auto_fallback (but , bot ))
57+ return msg
5358 if seg .url :
5459 return [Text (f"[{ seg .type } ]{ seg .url } " )]
5560 if seg .__class__ .to_url and seg .raw :
@@ -68,9 +73,16 @@ async def _auto_fallback(seg: Segment, bot: Union[Bot, None]):
6873 if isinstance (seg , Emoji ):
6974 return [Text (f"[{ seg .name } ]" )] if seg .name else [Text (f"[表情:{ seg .id } ]" )]
7075 if isinstance (seg , Hyper ):
71- return [Text (f"[{ seg .format } ]" )]
76+ return [Text (f"[{ seg .format } ]" ), * seg . children ]
7277 if isinstance (seg , Reply ):
73- return [] # Text(f"> 回复{seg.msg or seg.id}的消息\n")]
78+ if seg .children :
79+ msg = []
80+ for but in seg .children :
81+ msg .extend (await _auto_fallback (but , bot ))
82+ return msg
83+ if seg .msg :
84+ return [Text (f"> 回复{ seg .msg } \n " )]
85+ return [Text (f"> 回复{ seg .id } 的消息\n " )]
7486 if isinstance (seg , Button ):
7587 if seg .flag == "link" :
7688 return [Text (f"[{ seg .label } ]({ seg .url } )" )]
@@ -195,16 +207,8 @@ async def export(self, source: Sequence[Segment], bot: Union[Bot, None], fallbac
195207 continue
196208 if fallback == FallbackStrategy .to_text :
197209 message += str (seg )
198- elif fallback == FallbackStrategy .rollback :
199- if not seg .children :
200- if isinstance (seg , Media ):
201- if seg .url :
202- message += f"[{ seg .type } ]{ seg .url } "
203- else :
204- message += f"[{ seg .type } ]{ '' if seg .name == seg .__default_name__ else seg .name } "
205- else :
206- message += str (seg )
207- elif isinstance (seg , Reference ):
210+ elif fallback == FallbackStrategy .rollback and seg .children :
211+ if isinstance (seg , Reference ):
208212 for node in seg .children :
209213 if isinstance (node , CustomNode ):
210214 if isinstance (node .content , str ):
@@ -215,15 +219,10 @@ async def export(self, source: Sequence[Segment], bot: Union[Bot, None], fallbac
215219 message += f"> msg:{ node .id } \n "
216220 else :
217221 message .extend (await self .export (seg .children , bot , fallback ))
218- elif seg .children :
219- message .extend (await self .export (seg .children , bot , FallbackStrategy .auto ))
220222 else :
221223 message .extend (await self .export ((await _auto_fallback (seg , bot )), bot , FallbackStrategy .auto ))
222224 elif fallback is True :
223- if seg .children :
224- message .extend (await self .export (seg .children , bot , FallbackStrategy .auto ))
225- else :
226- message .extend (await self .export ((await _auto_fallback (seg , bot )), bot , FallbackStrategy .auto ))
225+ message .extend (await self .export ((await _auto_fallback (seg , bot )), bot , FallbackStrategy .auto ))
227226 else :
228227 raise SerializeFailed (
229228 lang .require ("nbp-uniseg" , "failed" ).format (
0 commit comments