简单的Java bot电报:循环中的消息

时间:2018-10-08 11:00:24

标签: java telegram telegram-bot

我正在尝试在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);
        }
    }

这里可能还存在一些多用户问题。我该怎么办?现在,它在一秒钟内显示所有问题,而无需等待答案。 How it's working now

0 个答案:

没有答案