@@ -143,21 +143,27 @@ async def video(self, seg: Video, bot: Union[Bot, None]) -> "MessageSegment":
143143
144144 @export
145145 async def file (self , seg : File , bot : Union [Bot , None ]) -> "MessageSegment" :
146+ filename = seg .name if seg .name != seg .__default_name__ else None
146147 if seg .path :
147- return MessageSegment ("$milky:file" , {"uri" : Path (seg .path ).resolve ().as_uri ()})
148+ return MessageSegment (
149+ "$milky:file" , {"uri" : Path (seg .path ).resolve ().as_uri (), "name" : filename or Path (seg .path ).name }
150+ )
151+ if filename is None :
152+ raise SerializeFailed (lang .require ("nbp-uniseg" , "invalid_segment" ).format (type = "file" , seg = seg ))
148153 if seg .url :
149- return MessageSegment ("$milky:file" , {"uri" : seg .url })
154+ return MessageSegment ("$milky:file" , {"uri" : seg .url , "name" : filename })
150155 if seg .raw :
151156 if seg .__class__ .to_url :
152157 return MessageSegment (
153158 "$milky:file" ,
154159 {
155160 "uri" : await seg .__class__ .to_url (
156161 seg .raw , bot , None if seg .name == seg .__default_name__ else seg .name
157- )
162+ ),
163+ "name" : filename ,
158164 },
159165 )
160- return MessageSegment ("$milky:file" , {"uri" : to_uri (raw = seg .raw_bytes )})
166+ return MessageSegment ("$milky:file" , {"uri" : to_uri (raw = seg .raw_bytes ), "name" : filename })
161167 raise SerializeFailed (lang .require ("nbp-uniseg" , "invalid_segment" ).format (type = "file" , seg = seg ))
162168
163169 @export
@@ -171,7 +177,7 @@ async def reference(self, seg: Reference, bot: Union[Bot, None]) -> "MessageSegm
171177 if seg .id :
172178 messages = await bot .get_forwarded_messages (forward_id = seg .id )
173179 return MessageSegment .forward (
174- [MessageSegment .node (msg . sender_id , msg .sender . nickname , msg .message ) for msg in messages ]
180+ [MessageSegment .node (int ( bot . self_id ) if bot else 10001 , msg .name , msg .message ) for msg in messages ]
175181 )
176182 if not seg .children :
177183 raise SerializeFailed (lang .require ("nbp-uniseg" , "invalid_segment" ).format (type = "forward" , seg = seg ))
@@ -210,12 +216,14 @@ async def send_to(self, target: Union[Target, Event], bot: Bot, message: Message
210216 file_id = await bot .upload_private_file (
211217 user_id = int (_target .id ),
212218 url = msg [0 ].data ["uri" ],
219+ file_name = msg [0 ].data ["name" ],
213220 ** kwargs ,
214221 )
215222 else :
216223 file_id = await bot .upload_group_file (
217224 group_id = int (_target .id ),
218225 url = msg [0 ].data ["uri" ],
226+ file_name = msg [0 ].data ["name" ],
219227 ** kwargs ,
220228 )
221229 return File (file_id )
0 commit comments