操作栏

有时,当通过私密或秘密聊天与 Telegram 用户互动时,需要在聊天窗口顶部显示一个操作栏,提供方便的操作按钮或与用户相关的通知。

模式:

peerSettings#f47741f7 flags:# report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true autoarchived:flags.7?true invite_members:flags.8?true request_chat_broadcast:flags.10?true business_bot_paused:flags.11?true business_bot_can_reply:flags.12?true geo_distance:flags.6?int request_chat_title:flags.9?string request_chat_date:flags.9?int business_bot_id:flags.13?long business_bot_manage_url:flags.13?string charge_paid_message_stars:flags.14?long registration_month:flags.15?string phone_country:flags.16?string name_change_date:flags.17?int photo_change_date:flags.18?int = PeerSettings;userFull#c577b5ad flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true voice_messages_forbidden:flags.20?true translations_disabled:flags.23?true stories_pinned_available:flags.26?true blocked_my_stories_from:flags.27?true wallpaper_overridden:flags.28?true contact_require_premium:flags.29?true read_dates_private:flags.30?true flags2:# sponsored_enabled:flags2.7?true can_view_revenue:flags2.9?true bot_can_manage_emoji_status:flags2.10?true display_gifts_button:flags2.16?true id:long about:flags.1?string settings:PeerSettings personal_photo:flags.21?Photo profile_photo:flags.2?Photo fallback_photo:flags.22?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int ttl_period:flags.14?int theme:flags.15?ChatTheme private_forward_name:flags.16?string bot_group_admin_rights:flags.17?ChatAdminRights bot_broadcast_admin_rights:flags.18?ChatAdminRights wallpaper:flags.24?WallPaper stories:flags.25?PeerStories business_work_hours:flags2.0?BusinessWorkHours business_location:flags2.1?BusinessLocation business_greeting_message:flags2.2?BusinessGreetingMessage business_away_message:flags2.3?BusinessAwayMessage business_intro:flags2.4?BusinessIntro birthday:flags2.5?Birthday personal_channel_id:flags2.6?long personal_channel_message:flags2.6?int stargifts_count:flags2.8?int starref_program:flags2.11?StarRefProgram bot_verification:flags2.12?BotVerification send_paid_messages_stars:flags2.14?long disallowed_gifts:flags2.15?DisallowedGiftsSettings stars_rating:flags2.17?StarsRating stars_my_pending_rating:flags2.18?StarsRating stars_my_pending_rating_date:flags2.18?int main_tab:flags2.20?ProfileTab saved_music:flags2.21?Document = UserFull;updatePeerSettings#6a7e7366 peer:Peer settings:PeerSettings = Update;messages.peerSettings#6880b94d settings:PeerSettings chats:Vector<Chat> users:Vector<User> = messages.PeerSettings;---functions---messages.getPeerSettings#efd9a6a2 peer:InputPeer = messages.PeerSettings;messages.hidePeerSettingsBar#4facb138 peer:InputPeer = Bool;

操作栏由peerSettings构造函数表示,可通过messages.getPeerSettings获取;它也包含在users.getFullUser返回的userFull构造函数中。

服务器也可以使用updatePeerSettings通知聊天栏的更改。

也可以使用messages.hidePeerSettingsBar关闭当前活动的操作栏。

接下来列出了各种(互斥的)聊天栏类型,以及通过检查peerSettings的相应标志来识别每种类型的条件。

举报垃圾邮件、屏蔽或添加联系人

inputReportReasonSpam#58dbcab8 = ReportReason;---functions---account.reportPeer#c5ba3d86 peer:InputPeer reason:ReportReason message:string = Bool;contacts.addContact#e8f463d0 flags:# add_phone_privacy_exception:flags.0?true id:InputUser first_name:string last_name:string phone:string = Updates;contacts.block#2e2e8734 flags:# my_stories_from:flags.0?true id:InputPeer = Bool;

此操作栏与私密或秘密聊天相关联,为用户提供以下按钮:

条件:peerSettings。report_spam、peerSettingsadd_contact、peerSettings标志block_contact都必须设置。

此外,如果设置了peerSettings标志,geo_distance则该栏还应显示我们与用户之间的距离,表明用户是通过调用contacts.getLocated找到我们的,因为我们目前正使用相同的方法宣传我们的位置。

账户信息

peerSettings#f47741f7 flags:# report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true autoarchived:flags.7?true invite_members:flags.8?true request_chat_broadcast:flags.10?true business_bot_paused:flags.11?true business_bot_can_reply:flags.12?true geo_distance:flags.6?int request_chat_title:flags.9?string request_chat_date:flags.9?int business_bot_id:flags.13?long business_bot_manage_url:flags.13?string charge_paid_message_stars:flags.14?long registration_month:flags.15?string phone_country:flags.16?string name_change_date:flags.17?int photo_change_date:flags.18?int = PeerSettings;

当用户首次与您联系时,将在其peerSettings构造函数中设置registration_month、phone_country和标志:这些字段应用于生成一个信息框,其中包含以下信息:name_change_datephoto_change_date

以上信息可以帮助用户检测和阻止垃圾邮件或最近被盗用的帐户。

举报垃圾邮件或取消存档

inputReportReasonSpam#58dbcab8 = ReportReason;---functions---account.reportPeer#c5ba3d86 peer:InputPeer reason:ReportReason message:string = Bool;

此操作栏与私人或秘密聊天相关联,为用户提供了一个按钮,可以使用account.reportPeer和inputReportReasonSpam举报聊天中的垃圾邮件。

如果对方用户有表情符号状态,则栏中也应显示一条通知,表明表情符号状态显示在用户名称旁边是因为他们购买了Telegram Premium(也就是说,如果用户使用类似于已验证勾号的表情符号状态,这有助于避免出现问题)。

条件:必须设置peerSettings.标志,且不能设置peerSettings.和peerSettings.标志。report_spamadd_contactblock_contact

此外,如果聊天记录已自动存档»(根据peerSettings) 。autoarchived,则可以显示一个额外的按钮,用于按照此处所述取消存档聊天记录»,而不是举报它。

添加联系人

---functions---contacts.addContact#e8f463d0 flags:# add_phone_privacy_exception:flags.0?true id:InputUser first_name:string last_name:string phone:string = Updates;

此操作栏与私人或秘密聊天相关联,为用户提供了一个按钮,可以使用contacts.addContact将聊天中的其他用户添加到联系人列表中。

条件:必须设置peerSettings标志,并且:add_contact

也可以选择设置peerSettings标志:如果设置了该标志,则当用户点击添加联系人按钮并调用contacts.addContact时,必须设置该标志。need_contacts_exceptionadd_phone_privacy_exception

分享电话号码

---functions---contacts.acceptContact#f831a20f id:InputUser = Updates;

此操作栏与私人或秘密聊天相关联,为用户提供了一个按钮,可以使用contacts.acceptContact与其他用户分享他们的电话号码。

条件:必须设置peerSettings标志。share_contact

只有当其他用户使用contacts.addContact将我们添加为联系人,而未使用电话号码,并且未设置任何add_contact,report_spam,block_contact标志时,才会设置此标志并激活该栏。

报告无关地理位置

inputReportReasonGeoIrrelevant#dbd4feed = ReportReason;---functions---account.reportPeer#c5ba3d86 peer:InputPeer reason:ReportReason message:string = Bool;

此栏表示可以使用一个栏按钮来报告关联的基于位置的超级组的位置不相关,该按钮会调用account.reportPeer并传入reasoninputReportReasonGeoIrrelevant。

条件:必须设置peerSettings标志。report_geo

邀请新成员

---functions---messages.addChatUser#cbc6d107 chat_id:long user_id:InputUser fwd_limit:int = messages.InvitedUsers;channels.inviteToChannel#c9e33d54 channel:InputChannel users:Vector<InputUser> = messages.InvitedUsers;

此栏表示关联的群组是最近创建的,并且提供了一个栏按钮,可以使用messages.addChatUser或channels.inviteToChannel邀请新成员,具体取决于关联的对等方是群组还是超级群组。

条件:必须设置peerSettings标志。invite_members

一位最近收到加入请求的管理员正在联系您。

此栏表示关联的私人或秘密聊天是与用户已发送加入请求的群组或频道的管理员进行的聊天,有关加入请求的更多信息,请参阅此处»。

条件:peerSettingsrequest_chat_title的 ` and`request_chat_date字段必须都已设置;还可以选择性地设置 `:`request_chat_broadcast

管理互联企业机器人

此栏表示与另一位用户相关的私人(非秘密)聊天当前由连接到我们当前帐户的业务机器人管理»。

条件:peerSettingsbusiness_bot_id的 ` and`business_bot_manage_url字段必须都已设置;可选地,还可以设置`and` 和/或 `or` :business_bot_pausedbusiness_bot_can_reply

操作栏的主要操作按钮应该是暂停/恢复按钮,该按钮会调用account.toggleConnectedBotPaused »。

操作栏下拉菜单应包含:

请点击这里»了解更多关于商业机器人的信息。

机器人广告

这家酒吧有广告。

条件:当前聊天是与机器人进行的私人聊天,并且消息。getSponsoredMessages返回了一些针对此机器人的赞助消息。

请点击这里»查看有关如何渲染此操作栏的更多信息。