简介
在 Telegram Bot API 中,启动菜单通常是指当用户开始与机器人交互时出现的自定义键盘或命令列表。这可以通过设置命令或使用 ReplyKeyboardMarkup
来实现。
功能实现:
第一种:BotFather
TG上搜索 BotFather
第二种:通过代码实现
1.添加创建添加启动菜单方法
public void registerCommands() {
List<BotCommand> commands = Arrays.asList(
new BotCommand("/start", "启动TG BOT"),
new BotCommand("/help", "查看TG BOT简介"));
SetMyCommands setMyCommands = new SetMyCommands();
setMyCommands.setCommands(commands);
try {
execute(setMyCommands);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
2.结合上篇文章,在Initializer中添加启动方法
@Component
public class Initializer {
@Autowired
BotServiceImpl bot;
@EventListener({ContextRefreshedEvent.class})
public void init() throws TelegramApiException {
TelegramBotsApi telegramBotsApi = new TelegramBotsApi(DefaultBotSession.class);
try{
telegramBotsApi.registerBot(bot);
bot.registerCommands(); //添加启动菜单
}catch (TelegramApiException e){
throw new RuntimeException(e);
}
}
}
3.在做具体操作
public void onUpdateReceived(Update update) {
//我们检查更新是否有消息,消息是否有文本
if (update.hasMessage() && update.getMessage().hasText()){
//设置变量
if (update.getMessage().hasText()) {
String message_text = update.getMessage().getText();
Long chat_id = update.getMessage().getChatId();
if (message_text.equals("/start")){
SendMessage message = new SendMessage();
message.setChatId(String.valueOf(chat_id));
message.setText("启动TG BOT");
try {
execute(message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}else if (message_text.equals("/help")){
SendMessage message = new SendMessage();
message.setChatId(String.valueOf(chat_id));
message.setText("查看TG BOT帮助");
try {
execute(message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
}
}
}
第二中方法,结合上篇文章观看