Написал тестового Телеграмм бота на Java. В боте будут пару команд, но основное взаимодействие будет через кнопки.
Вопрос, как мне сохранять последовательность нажатий кнопок в боте, в какой-нибудь файл? И как сделать, чтобы каждый пользователь сохранялся отдельно и файл дополнялся?
Пример последовательности: Кнопка1>Кнопка1-3>Кнопка1-3-1>Кнопка1-3-1-5>... и т.д
package test1;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboardMarkup;
import org.telegram.telegrambots.api.objects.replykeyboard.buttons.KeyboardRow;
import org.telegram.telegrambots.exceptions.TelegramApiException;
import org.telegram.telegrambots.ApiContextInitializer;
import org.telegram.telegrambots.TelegramBotsApi;
import org.telegram.telegrambots.api.methods.send.SendMessage;
import org.telegram.telegrambots.api.objects.Message;
import org.telegram.telegrambots.api.objects.Update;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import java.security.Key;
import java.util.ArrayList;
import java.util.List;
public class SimpleBot extends TelegramLongPollingBot {
public static void main(String[] args) {
ApiContextInitializer.init();
TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
try {
telegramBotsApi.registerBot(new SimpleBot());
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
@Override
public String getBotUsername() {
return "Имя_моего_бота";
}
@Override
public String getBotToken() {
return "Мой_токен";
}
public void onUpdateReceived(Update update) {
Message message = update.getMessage();
if (message != null && message.hasText()) {
switch (message.getText()) {
case "/start":
sendMsg(message, "Это команда старт!");
System.out.println(message.getText());
break;
case "/test1":
sendMsg(message, "Это тестовая команда 1!");
System.out.println(message.getText());
break;
case "/test2":
sendMsg(message, "Это тестовая команда 2!");
System.out.println(message.getText());
break;
case "/test3":
sendMsg(message, "Это тестовая команда 3!");
System.out.println(message.getText());
break;
case "Команда 1":
sendMsgBtn1(message, "Это команда 1");
System.out.println(message.getText());
break;
case "Команда 1-1":
sendMsgBtn11(message, "Это команда 1-1");
System.out.println(message.getText());
break;
case "Команда 1-2":
sendMsgBtn12(message, "Это команда 1-2");
System.out.println(message.getText());
break;
case "Команда 1-3":
sendMsgBtn13(message, "Это команда 1-3");
System.out.println(message.getText());
break;
case "Команда 1-4":
sendMsgBtn14(message, "Это команда 1-4");
System.out.println(message.getText());
break;
case "Команда 2":
sendMsgBtn2(message, "Это команда 2");
System.out.println(message.getText());
break;
case "Команда 2-1":
sendMsgBtn21(message, "Это команда для отправки фидбека");
System.out.println(message.getText());
break;
case "/test":
sendMsg(message, "Возращаем все кнопки");
break;
case "Команда 3":
sendMsgBtn3(message, "Это команда 3");
System.out.println(message.getText());
break;
case "Команда 4":
sendMsgBtn4(message, "Это команда 4");
System.out.println(message.getText());
break;
default:
sendMsg(message, "Вернулись на главную");
System.out.println(message.getText());
break;
}
}
}
public void sendMsg(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 1");
keyboardFirstRow.add("Команда 2");
// Вторая строчка клавиатуры
KeyboardRow keyboardSecondRow = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboardSecondRow.add("Команда 3");
keyboardSecondRow.add("Команда 4");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboardSecondRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public void sendMsgBtn1(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 1-1");
keyboardFirstRow.add("Команда 1-2");
// Вторая строчка клавиатуры
KeyboardRow keyboardSecondRow = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboardSecondRow.add("Команда 1-3");
keyboardSecondRow.add("Команда 1-4");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboardSecondRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public void sendMsgBtn11(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 1-1-1");
keyboardFirstRow.add("Команда 1-1-2");
// Вторая строчка клавиатуры
KeyboardRow keyboardSecondRow = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboardSecondRow.add("Команда 1-1-3");
keyboardSecondRow.add("Команда 1-1-4");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboardSecondRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public void sendMsgBtn12(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 1-2-1");
keyboardFirstRow.add("Команда 1-2-2");
// Вторая строчка клавиатуры
KeyboardRow keyboardSecondRow = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboardSecondRow.add("Команда 1-2-3");
keyboardSecondRow.add("Команда 1-2-4");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboardSecondRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public void sendMsgBtn13(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 1-3-1");
keyboardFirstRow.add("Команда 1-3-2");
// Вторая строчка клавиатуры
KeyboardRow keyboardSecondRow = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboardSecondRow.add("Команда 1-3-3");
keyboardSecondRow.add("Команда 1-3-4");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboardSecondRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public void sendMsgBtn14(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 1-4-1");
keyboardFirstRow.add("Команда 1-4-2");
// Вторая строчка клавиатуры
KeyboardRow keyboardSecondRow = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboardSecondRow.add("Команда 1-4-3");
keyboardSecondRow.add("Команда 1-4-4");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboardSecondRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public void sendMsgBtn2(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 2-1");
keyboardFirstRow.add("Команда 2-2");
// Вторая строчка клавиатуры
KeyboardRow keyboardSecondRow = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboardSecondRow.add("Команда 2-3");
keyboardSecondRow.add("Команда 2-4");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboardSecondRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public void sendMsgBtn21(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 2-1-1");
keyboard.add(keyboardFirstRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public void sendMsgBtn3(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 3-1");
keyboardFirstRow.add("Команда 3-2");
// Вторая строчка клавиатуры
KeyboardRow keyboardSecondRow = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboardSecondRow.add("Команда 3-3");
keyboardSecondRow.add("Команда 3-4");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboardSecondRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public void sendMsgBtn4(Message message, String text) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Команда 4-1");
keyboardFirstRow.add("Команда 4-2");
// Вторая строчка клавиатуры
KeyboardRow keyboardSecondRow = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboardSecondRow.add("Команда 4-3");
keyboardSecondRow.add("Команда 4-4");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboardSecondRow);
// и устанваливаем этот список нашей клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setReplyToMessageId(message.getMessageId());
sendMessage.setText(text);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как в Java проверить деление на ноль? Пишу небольшой калькулятор и нужно вывести Toast об ошибке ,что нельзя делить число num1 на нольЧто-то я не соображаю...
В приложении для Андроид требуется строить блок схемы