Reputation: 1020
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
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
Reputation: 248
You can add your commands which will be displayed on the menu using the Bot father commands.
I followed the below steps:
Now open your bot and the command you send will be displayed on the Menu.
Hope this helps.
Upvotes: 10
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:
Create new List BotCommand
List<> commandsList = new ArrayList();
Adding BotCommand to the list with name and description
commandsList.add(new BotCommand("commandName", "description"));
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