最小构造函数
在某些情况下,用户和频道构造函数中包含的字段集会减少(尽管某些字段id始终存在),并且会min设置一些标志。这样做是为了提高性能和保护隐私。
客户端在接收到上述构造函数时,必须首先检查本地对等数据库min中是否已存在不带标记的用户或聊天对象。如果存在,则客户端应合并远程对象和本地对象,并忽略远程对象中由用户和频道页面 指定的某些特定字段。
此外,客户端必须存储用户/频道出现的上下文(类似于文件引用access_hash)。之后,当客户端需要将用户/频道作为输入参数传递时(例如,传递以获取个人资料、禁言、封禁信息等),将使用该上下文来生成构造函数input*FromMessage,而不是使用普通的 `get_user_name`inputUser或inputChannel` get_channel_name`inputPeer。
- inputPeerUserFromMessage
- inputPeerChannelFromMessage
- inputUserFromMessage
- inputChannelFromMessage
access_hash构造函数的值仅min适用于用户和频道页面指定的特定条件。
通常情况下,min构造函数出现在群组或频道内的消息中。当找到提及(发送者、转发者或接收者等)此类用户或频道的消息时,构造函数必须与该消息的消息 ID 以及查看该消息的聊天记录关联起来。
例子
假设从超组(实际上是通道)收到一条ID 为 的消息。该消息由 发送。包含该消息的更新容器在字段中有一个 ID 为 的用户,但该用户设置了标志,并且提供的可能不存在,或者无法用于生成典型的inputPeerUser构造函数来发送消息或执行其他操作。34123456789from_id102424212102424212usersminaccess_hash
客户端会将消息102424212与通道123456789和消息 ID关联起来34。当客户端需要与用户交互时,它会生成上述构造函数102424212之一,并设置:*FromMessage
- msg_id到34
- peer到与通道关联的输入对等体123456789
- user_id到102424212
user_id也可以设置为在聊天中遇到的用户的 IDfwd_header(如果用户未启用转发隐私设置,则可以使用用户转发的消息与原始发送者互动)。消息中通过messageEntityMentionName提及的用户也可以使用。
min频道也可以采用同样的方法。
示例实现:iOS 版 Telegram,tdlib。