Простая Java-бот-телеграмма: сообщения в цикле - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь сделать простого бота-телеграммы на Java.

Вопрос: как я могу получать сообщения в цикле, когда пользователь набрал /start?У меня уже есть

@Override
public void onUpdateReceived(Update update) {
    Message msg = update.getMessage();
    String txt = msg.getText();
    if (txt.equals("/start")) {
        sendMsg(msg, "Привет, меня зовут бот " + name + "!");
        showHelp(msg);
        run(msg, update);
    } else if (txt.equals("/help")) {
        showHelp(msg);
    }
}

Вот showhelp:

private void showHelp(Message msg) {
    try {
        String inAbout = ReadFile.readFileInString(this.about);
        sendMsg(msg, inAbout);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

sendMsg:

private void sendMsg(Message msg, String text) {
    SendMessage s = new SendMessage();
    s.setChatId(msg.getChatId());
    s.setText(text);
    try {
        execute(s);
    } catch (TelegramApiException e) {
        e.printStackTrace();
    }
}

В режиме «Выполнить» я хочу прочитать вопросы из данных и дождаться ответа пользователя, проверьте правильность и сделайте это в цикле.В конце покажите, сколько он ответил правильно.

public void run(Message msg, Update update) {
        try {
            List<String> data = ReadFile.readFileInList(this.getData());
            List<String> dataAnswers = ReadFile.readFileInList(this.answers);
            this.sizeOfAnswers = data.size();
            for (int i = 0; i < data.size(); i++) {
                String line = data.get(i);
                sendMsg(msg, line);
                String inAnswer = update.getMessage().getText();
                String rAns = dataAnswers.get(i);
                boolean flag = checkAnswer(inAnswer, rAns);
                if (flag) {
                    this.currentUser.incrementScore();
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            String finalString = "Поздравляю, ты ответил на " + this.currentUser.getScore() + "/" + this.sizeOfAnswers
                    + " вопросов!";
            sendMsg(msg, finalString);
        }
    }

Также вот, возможно, некоторые многопользовательские проблемы.Как я должен это делать?Теперь он показывает все вопросы за одну секунду, не дожидаясь ответа. Как это работает сейчас

...