7

How could I create a three-dashes menus on a Telegram bot, similarly to what they do to the Jobs bot? It should be similar to this:

How do we call this kind of menu?

CallMeStag
  • 5,467
  • 1
  • 7
  • 22
Gabriel Diego
  • 950
  • 2
  • 10
  • 22

3 Answers3

8

You can add your commands which will be displayed on the menu using the Bot father commands.

I followed the below steps:

  • Open BotFather send command /setcommand
  • BotFather will ask for the bot you want to set the command
  • Provide the command name along with the description in "command - description" format

Now open your bot and the command you send will be displayed on the Menu.

Hope this helps.

Himanshu Gupta
  • 189
  • 2
  • 5
2

In java case with this library.

if the commands already was created, so simply in the class that extends TelegramLongPollingBot:

 this.execute(new GetMyCommands());

In other case:

  1. Create new List BotCommand

    List<> commandsList = new ArrayList();

  2. Adding BotCommand to the list with name and description

    commandsList.add(new BotCommand("commandName", "description"));

  3. Create a new SetMyCommands whit the botCommandList and executed

    this.execute(new SetMyCommands(commands));

more information about: https://telegram.org/blog/animated-backgrounds#bot-menu

Federremu
  • 84
  • 1
  • 7
  • Since OP didn't specify a programming language, he's probably looking for a generic solution. A Java only solution, based on same random library won't help OP. – 0stone0 Sep 20 '21 at 15:56
  • ok, understand. Sorry, I am very new and I can't ask him in a comment. Maybe the last link help. https://telegram.org/blog/animated-backgrounds#bot-menu Thank you for the feedback 0stone0 – Federremu Sep 20 '21 at 16:09
  • Actually this answers my question. Even if the answer was in Java, at least I can navigate my way to the implementation in Python, which is the one I wanna use. Thanks @Federremu! – Gabriel Diego Sep 21 '21 at 01:02
0

If you are looking for a solution using python-telegram-bot, here is a simple code reference:


from telegram import BotCommand
from telegram.ext import ApplicationBuilder, Application, CommandHandler

config = dotenv_values(".env")

command_info = [
    BotCommand("hello", "Say hello to the bot"),
]
command_handlers = [
    CommandHandler("hello", hello),
]


async def post_init(application: Application) -> None:
    bot = application.bot
    await bot.set_my_commands(commands=command_info)


if __name__ == "__main__":
    log("Starting bot...")
    app = (
        ApplicationBuilder()
        .token(config["BOT_TOKEN"])
        .post_init(post_init)
        .build()
    )
    app.add_handlers(command_handlers)
    log("Bot started!")
    app.run_polling()

References:

s3m3dov
  • 11
  • 2