@lif527

Как мне это сделать?

Как мне реализовать, чтобы бот после сообщение "Игра" загадал число и пользователь пытался угадать число от 1 до 10, а если он писал не то, то бот писал ему, чтобы он написал число и еще игнорировал другие команды(например: "О боте")
Вот код:
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 "Тут мой токен";
    }
}
  • Вопрос задан
  • 536 просмотров
Пригласить эксперта
Ответы на вопрос 1
@szanislo
для этого нужно использовать состояния
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы