Gabriel Diego
Gabriel Diego

Reputation: 1020

How to create a three dashes menu on a Telegram bot?

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?

Upvotes: 11

Views: 17113

Answers (3)

s3m3dov
s3m3dov

Reputation: 31

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:

Upvotes: 1

Himanshu Gupta
Himanshu Gupta

Reputation: 248

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.

Upvotes: 10

Federremu
Federremu

Reputation: 94

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

Upvotes: 2

Related Questions