顶级同行评级

如果启用,顶级同行的评分会显示某个类别中常用同行的相关性(例如,经常收到消息的用户、经常使用的机器人、内联机器人、经常访问的频道等等)。

模式:

topPeerCategoryBotsPM#ab661b5b = TopPeerCategory; topPeerCategoryBotsInline#148677e2 = TopPeerCategory; topPeerCategoryCorrespondents#637b7ed = TopPeerCategory; topPeerCategoryGroups#bd17a14a = TopPeerCategory; topPeerCategoryChannels#161d9628 = TopPeerCategory; topPeerCategoryPhoneCalls#1e76a78c = TopPeerCategory; topPeerCategoryForwardUsers#a8406ca9 = TopPeerCategory; topPeerCategoryForwardChats#fbeec0f0 = TopPeerCategory; topPeerCategoryBotsApp#fd9e7bec = TopPeerCategory;topPeer#edcdc05b peer:Peer rating:double = TopPeer;topPeerCategoryPeers#fb834291 category:TopPeerCategory count:int peers:Vector<TopPeer> = TopPeerCategoryPeers;contacts.topPeersNotModified#de266ef5 = contacts.TopPeers; contacts.topPeers#70b772a8 categories:Vector<TopPeerCategoryPeers> chats:Vector<Chat> users:Vector<User> = contacts.TopPeers; contacts.topPeersDisabled#b52c939d = contacts.TopPeers;---functions---contacts.toggleTopPeers#8514bdda enabled:Bool = Bool; contacts.getTopPeers#973478b6 flags:# correspondents:flags.0?true bots_pm:flags.1?true bots_inline:flags.2?true phone_calls:flags.3?true forward_users:flags.4?true forward_chats:flags.5?true groups:flags.10?true channels:flags.15?true bots_app:flags.16?true offset:int limit:int hash:long = contacts.TopPeers; contacts.resetTopPeerRating#1ae373ac category:TopPeerCategory peer:InputPeer = Bool;

速率增量是通过计算用户上次使用某个对等节点与上次通过contacts.getTopPeers收到该对等节点的评分之间的时间增量,并将其除以config 中的指数衰减来计算的。

具体而言,客户应该:

  1. 启动时,调用contacts.getTopPeers获取所有必需的对等评分类别,并将所有顶级对等节点的评分存储在本地数据库中。
  2. 每次用户打开(例如)聊天时,123456789必须对缓存的顶级对等节点信息执行以下操作。
     
    dateOpened指示对等节点的使用时间。
    normalizeRate是最近的任意时间(当使用contacts.getTopPeers和上述模式从服务器接收评分时,它是接收到评分的时间)。
    config.rating_e_decay是从配置开始的指数衰减。
topPeer.rating += e^((dateOpened - normalizeRate) / config.rating_e_decay)
  1. 每当客户端需要显示常用机器人、用户、小程序、呼叫目的地等的列表时(例如,在全局搜索选项卡中),按rating指定类别对同行进行排序。

使用contacts.toggleTopPeers可以启用或禁用顶级用户评分。
使用contacts.resetTopPeerRating可以重置特定用户在特定类别中的最高评分。