Bots can choose the behavior of the menu button shown next to the text input field.
For a simplified description using the HTTP bot API, see here ยป.
Schema:
botMenuButtonDefault#7533a588 = BotMenuButton;
botMenuButtonCommands#4258c205 = BotMenuButton;
botMenuButton#c7b57ce6 text:string url:string = BotMenuButton;
inputUserEmpty#b98886cf = InputUser;
inputUser#f21158c6 user_id:long access_hash:long = InputUser;
---functions---
bots.setBotMenuButton#4504d54f user_id:InputUser button:BotMenuButton = Bool;
Bots can use bots.setBotMenuButton to change the menu button for a certain user, or for all users.
To change the menu button for all users use the following parameters:
user_id
- inputUserEmptybutton
- one of the following constructors:botMenuButtonDefault shouldn't be used as it has no effect, keeping the previously set menu button (either botMenuButton or botMenuButtonCommands).
To change the menu button for a specific user use the following parameters:
user_id
- inputUser with the user ID/access hashbutton
- one of the following constructors:botMenuButtonDefault#7533a588 = BotMenuButton;
botMenuButtonCommands#4258c205 = BotMenuButton;
botMenuButton#c7b57ce6 text:string url:string = BotMenuButton;
inputUserEmpty#b98886cf = InputUser;
inputUser#f21158c6 user_id:long access_hash:long = InputUser;
---functions---
bots.getBotMenuButton#9c60eb28 user_id:InputUser = BotMenuButton;
Bots might need to know the button type currently used in a given chat or in all chats: bots.getBotMenuButton can be used for this.
Users can't use this method, and should use the user method instead.
To get the menu button used for all users use the following parameter:
user_id
- inputUserEmptyOne of the following constructors will be returned:
botMenuButtonDefault will never be returned in this case.
To get the menu button used for a specific user use the following parameter:
user_id
- inputUser with the user ID access/hashOne of the following constructors will be returned:
updateBotMenuButton#14b85813 bot_id:long button:BotMenuButton = Update;
botMenuButtonCommands#4258c205 = BotMenuButton;
botMenuButton#c7b57ce6 text:string url:string = BotMenuButton;
botInfo#8f300b57 flags:# user_id:flags.0?long description:flags.1?string description_photo:flags.4?Photo description_document:flags.5?Document commands:flags.2?Vector<BotCommand> menu_button:flags.3?BotMenuButton = BotInfo;
userFull#93eadb53 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 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_emoticon:flags.15?string private_forward_name:flags.16?string bot_group_admin_rights:flags.17?ChatAdminRights bot_broadcast_admin_rights:flags.18?ChatAdminRights premium_gifts:flags.19?Vector<PremiumGiftOption> wallpaper:flags.24?WallPaper = UserFull;
---functions---
users.getFullUser#b60f5918 id:InputUser = users.UserFull;
Users will receive an updateBotMenuButton update when a bot changes the behavior of the menu button globally or in the private chat with the user.
For new bots, users.getFullUser can be used to fetch the userFull related to the bot, containing the botInfo constructor with various info about the bot, including the menu button behavior.
botMenuButtonDefault will never be returned in a updateBotMenuButton or in a botInfo (but if it does happen, treat it like a botMenuButtonCommands).
Bots should use the bot method instead.