L
L
lif5272020-08-26 12:07:25
Java
lif527, 2020-08-26 12:07:25

How can I do it?

How can I implement so that the bot after the message "Game" guessed a number and the user tried to guess a number from 1 to 10, and if he wrote something wrong, then the bot wrote to him so that he wrote the number and also ignored other commands (for example: "About the bot ")
Here is the code:

import org.telegram.telegrambots.ApiContextInitializer;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.api.objects.games.Game;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboardMarkup;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardRow;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;

import java.util.ArrayList;
import java.util.List;

public class Bot extends TelegramLongPollingBot {

    public void Keyboard(SendMessage sendMessage) {
        ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
        sendMessage.setReplyMarkup(replyKeyboardMarkup);
        replyKeyboardMarkup.setSelective(true);
        replyKeyboardMarkup.setResizeKeyboard(true);
        replyKeyboardMarkup.setOneTimeKeyboard(false);

        // Создаем список строк клавиатуры
        List<KeyboardRow> keyboard = new ArrayList<>();

        // Первая строчка клавиатуры
        KeyboardRow keyboardFirstRow = new KeyboardRow();
        // Добавляем кнопки в первую строчку клавиатуры
        keyboardFirstRow.add("О боте");
        keyboardFirstRow.add("Игра");
        // Вторая строчка клавиатуры
        // Добавляем кнопки во вторую строчку клавиатур

        // Добавляем все строчки клавиатуры в список
        keyboard.add(keyboardFirstRow);
        // и устанваливаем этот список нашей клавиатуре
        replyKeyboardMarkup.setKeyboard(keyboard);
    }

    public static void main(String[] args) {
        //инцилизируем
        ApiContextInitializer.init();
        TelegramBotsApi botsApi = new TelegramBotsApi();
        //регистрируем
        try {
            botsApi.registerBot(new Bot());
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }

    }
    public void Game(Message message) {
        sendMsg(message,"Попробуй угадать мое число(от 0 до 10), а я скажу: оно больше или меньше");
        //Тут должно все реализовано
    }
    //функция для отправики сообщения
    public void sendMsg(Message message, String text) {
        SendMessage sendMessage = new SendMessage();
        sendMessage.enableMarkdown(true);
        sendMessage.setChatId(message.getChatId().toString());
        sendMessage.setText(text);
        Keyboard(sendMessage);
        try {
            //отправка
            execute(sendMessage);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpdateReceived(Update update) {
        Message message = update.getMessage();
        if (message != null && message.hasText()) {
            switch (update.getMessage().getText()) {
                case "/start":
                    sendMsg(message, "Нажимай на кнопки, чтобы контактировать со мной");
                    break;
                case "/help":
                    sendMsg(message, "Нажимай на кнопки");
                    break;
                case "О боте":
                    sendMsg(message, "Меня создали 11 мая");
                    break;
                case "Игра":
                    Game(message);
                    break;
            }
        }
    }

    @Override
    public String getBotUsername() {
        return "Тут мой бот";
    }

    @Override
    public String getBotToken() {
        return "Тут мой токен";
    }
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
szanislo, 2020-08-27
@szanislo

For this you need to use states

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question