Bot attachment menu entries

Bots can install attachment menu entries, offering conveniently accessible, versatile web apps.

Schema:

user#5d99adee flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus = User;

attachMenuBotsBot#93bf667f bot:AttachMenuBot users:Vector<User> = AttachMenuBotsBot;

attachMenuBot#c8aa2cd2 flags:# inactive:flags.0?true has_settings:flags.1?true bot_id:long short_name:string peer_types:Vector<AttachMenuPeerType> icons:Vector<AttachMenuBotIcon> = AttachMenuBot;

attachMenuPeerTypeSameBotPM#7d6be90e = AttachMenuPeerType;
attachMenuPeerTypeBotPM#c32bfa1a = AttachMenuPeerType;
attachMenuPeerTypePM#f146d31f = AttachMenuPeerType;
attachMenuPeerTypeChat#509113f = AttachMenuPeerType;
attachMenuPeerTypeBroadcast#7bfbdefc = AttachMenuPeerType;

attachMenuBotIcon#b2a7386b flags:# name:string icon:Document colors:flags.0?Vector<AttachMenuBotIconColor> = AttachMenuBotIcon;

attachMenuBotIconColor#4576f3f0 name:string color:int = AttachMenuBotIconColor;


updateAttachMenuBots#17b7a20b = Update;

attachMenuBotsNotModified#f1d88a5c = AttachMenuBots;
attachMenuBots#3c4301c0 hash:long bots:Vector<AttachMenuBot> users:Vector<User> = AttachMenuBots;


---functions---

messages.getAttachMenuBot#77216192 bot:InputUser = AttachMenuBotsBot;

messages.toggleBotInAttachMenu#1aee33af bot:InputUser enabled:Bool = Bool;

messages.getAttachMenuBots#16fcc2cb hash:long = AttachMenuBots;

Bots that have the bot_attach_menu flag set offer an attachment menu entry that can be added to the attachment menu.
Use messages.getAttachMenuBot to get info about the attachment menu entry, specifically:

  • attachMenuBot.peer_types indicates the dialog types supported by the attachment menu
  • attachMenuBot.icons contains a list of platform-specific static icons and animations to use for the attachment menu button.

Use messages.toggleBotInAttachMenu to enable or disable the attachment menu.
Changes made using this method will trigger an updateAttachMenuBots update in other clients, which should trigger a messages.getAttachMenuBots call to fetch the full updated list of installed attachment menu entries.

Once an attachment menu is enabled for a certain user, the user.attach_menu_enabled flag will be set for the bot, and the attachMenuBot.inactive flag will be unset.

Attachment menus can be installed and opened through attachment menu deep links.