导入的消息
Telegram允许从国外聊天应用导入消息和媒体文件。
注:本文面向 MTProto API 开发人员。如果您想了解如何将其他聊天应用的聊天记录导入 Telegram,请查看Telegram 的相关博客文章。
1. 验证聊天记录导出文件
messages.historyImportParsed#5e0fb7b9 flags:# pm:flags.0?true group:flags.1?true title:flags.2?string = messages.HistoryImportParsed;---functions---messages.checkHistoryImport#43fe19f3 import_head:string = messages.HistoryImportParsed;
导入过程首先调用messages.checkHistoryImport,传递import_head最多 100 行聊天导出文件的内容,从文件开头开始。
返回的构造函数包含有关导出聊天记录的信息,包括其标题或类型。如果pm设置了 `--private-chat` 标志,则表示聊天记录导出文件是从私聊生成的。如果group设置了 `--group-chat` 标志,则表示聊天记录导出文件是从群聊生成的。如果 `--private-chat`pm或 `group--group-chat` 标志均未设置,则表示指定的聊天记录导出文件是从未知类型的聊天记录生成的。
2. 选择目标 Telegram 聊天
messages.checkedHistoryImportPeer#a24de717 confirm_text:string = messages.CheckedHistoryImportPeer;---functions---messages.checkHistoryImportPeer#5dc60f03 peer:InputPeer = messages.CheckedHistoryImportPeer;
使用messages.checkHistoryImportPeer,检查从其他聊天应用导出的聊天记录是否可以导入到peer用户选择的特定 Telegram 群组中。
通常,聊天记录仅允许导入到与共同联系人的私聊或具有管理员权限的超级群组中。change_info
如果检查成功且未返回任何 RPC 错误,则会返回messages.CheckedHistoryImportPeer构造函数,其中包含将在确认提示中向用户显示的确认文本。
用户最终确认后,导入过程即被初始化。
3. 初始化导入
messages.historyImport#1662af0b id:long = messages.HistoryImport;---functions---messages.initHistoryImport#34090c3b peer:InputPeer file:InputFile media_count:int = messages.HistoryImport;
使用messages.initHistoryImport初始化导入过程,并传递以下参数:
- peer- 需要导入历史记录的 Telegram 聊天记录。
- file- 聊天记录导出文件。
- media_count- 与导出相关的媒体文件数量,将在下一步上传。
4. 上传媒体
---functions---messages.uploadImportedMedia#2a862092 peer:InputPeer import_id:long file_name:string media:InputMedia = MessageMedia;
使用messages.uploadImportedMedia上传最终与聊天导出关联的媒体文件。
import_id它包含在messages.historyImportid构造函数中,由messages.initHistoryImport在上一步中返回。
5. 完成导入
message#9815cec8 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true invert_media:flags.27?true flags2:# offline:flags2.1?true video_processing_pending:flags2.4?true paid_suggested_post_stars:flags2.8?true paid_suggested_post_ton:flags2.9?true id:int from_id:flags.8?Peer from_boosts_applied:flags.29?int peer_id:Peer saved_peer_id:flags.28?Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long via_business_bot_id:flags2.0?long reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long reactions:flags.20?MessageReactions restriction_reason:flags.22?Vector<RestrictionReason> ttl_period:flags.25?int quick_reply_shortcut_id:flags.30?int effect:flags2.2?long factcheck:flags2.3?FactCheck report_delivery_until_date:flags2.5?int paid_message_stars:flags2.6?long suggested_post:flags2.7?SuggestedPost = Message;messageFwdHeader#4e4df4bb flags:# imported:flags.7?true saved_out:flags.11?true from_id:flags.0?Peer from_name:flags.5?string date:int channel_post:flags.2?int post_author:flags.3?string saved_from_peer:flags.4?Peer saved_from_msg_id:flags.4?int saved_from_id:flags.8?Peer saved_from_name:flags.9?string saved_date:flags.10?int psa_type:flags.6?string = MessageFwdHeader;---functions---messages.startHistoryImport#b43df344 peer:InputPeer import_id:long = Bool;
最后,调用messages.startHistoryImport完成历史记录导入过程,将所有消息导入到聊天中。
与往常一样,import_id这是messages.historyImportid构造函数中包含的内容,由messages.initHistoryImport返回。
导入的消息将在聊天记录中显示为包含带有标志的messageFwdHeader构造函数的消息,并且应在用户界面中适当地标记为从外部聊天应用程序导入的消息。fwd_fromimported