当使用 Aiogram 发送转发消息时,可能会遇到消息未发送的问题。可以尝试使用以下代码序列化转发消息:
from aiogram.types import MessageEntity, InputMessageContent, InlineQueryResultArticle, InlineQuery
import json
async def on_inline_query(inline_query: InlineQuery):
results = []
forward_message = # 转发消息
forward_message_text = forward_message.text
entities = forward_message.entities
input_message_content = InputMessageContent(
message_text=forward_message_text,
parse_mode='HTML' # 或者 'Markdown'
)
# 序列化转发消息
entities_json = json.dumps([entity.to_dict() for entity in entities])
message_entity = MessageEntity(type=entities[0].type, offset=entities[0].offset, length=entities[0].length)
message_entity_json = json.dumps(message_entity.to_dict(), ensure_ascii=False)
# 添加转发消息到结果列表
results.append(
InlineQueryResultArticle(
id='0',
title='Forward Message',
input_message_content=input_message_content,
description=forward_message_text,
reply_markup=None,
url=None,
hide_url=None,
thumb_url=None,
thumb_width=None,
thumb_height=None,
message_text=forward_message_text,
message_entities=[message_entity_json],
parse_mode='HTML' # 或者 'Markdown'
)
)
await inline_query.answer(results, cache_time=0)
上述代码中,我们对消息实体使用了 json.dumps
进行序列化。同时,使用 InlineQueryResultArticle
将转发消息作为内联查询结果返回。
这是发生转发消息发送问题时的一种解决方法。