I want to write a bot telegram.How to put possible option in my bot.I insert a picture of sample bot with this functionality.

- 1,437
- 2
- 18
- 40
4 Answers
For that, you have to talk to BotFather.
In the Telegram App, open the chat with BotFather.
Send him
/setcommands
. He will present you with a list of your bots.Pick the bot for which you want to set the command menu.
Compose and send the command list. Using your image as an example, these 4 lines should do:
start - Description 1
menu - Description 2
help - Description 3
stop - Description 4
Note that command part of each line(left side of -
signs) must have just lowercase characters, and no slashes. There should also be spaces around the -
sign.
Once you complete this process, exit and kill the Telegram App. Re-open it, go to the chat with your target bot, type a /
(or tab on the /
button next to the text field), the command menu should come up.
-
Thanks a lot for the information, i think there is no way to control admin and user commands. if you don't want users to see your admin commands you should not put them here. – GurhanCagin Dec 03 '18 at 07:13
-
3EDIT ROLLBACK: ***Note that each command should be written in lowercase, and that the command may not begin with a /slash. There should also be spaces around the - sign. Otherwise it won't work. – JaFizz Jan 12 '20 at 00:07
-
No need to restart Telegram, works instantly – vrnvorona Nov 24 '22 at 10:40
New dynamic way to set commands
Telegram introduced a separate method setMyCommands
which allows you to set commands via API directly from your code.
{
"commands": [
{
"command": "start",
"description": "Start using bot"
},
{
"command": "help",
"description": "Display help"
},
{
"command": "menu",
"description": "Display menu"
}
],
"language_code": "en"
}
Moreover, it allows you to customize commands per language code with language_code
parameter

- 10,019
- 9
- 74
- 96
Without json.dumps([]) I get error response from Tlg: {'ok': False, 'error_code': 400, 'description': "Bad Request: can't parse commands JSON object"}
The code below works as expected.
{
"commands": json.dumps([
{
"command": "start",
"description": "Start using bot"
},
{
"command": "help",
"description": "Display help"
},
{
"command": "menu",
"description": "Display menu"
}
])
}

- 21
- 3
<?php
$comandos = [
["command" => "a", "description" => "aaa"],
["command" => "b", "description" => "bbb"],
["command" => "c", "description" => "ccc"],
];
defineMenuOptions($comandos);
function defineMenuOptions($comandos) {
$comandosEnc = "setMyCommands?commands=" . json_encode($comandos);
$retorno = file_get_contents(API_URL.$comandosEnc);
}
?>

- 14
- 2