Как реализовать мини-бд вопрос-ответ?

209
11 декабря 2017, 15:11

Я даже не могу нормально написать заголовок вопроса, т.к. не представляю, как это назвать. Суть в том, что я пишу Tg-бота, и мне надо что бы он отвечал на сообщения. Я могу сделать это с помощью if-else, но это будет очень громоздко. Как примерно это реализовать?

Answer 1
  1. Создать файл answer.properties (например)
  2. Записать туда список вопросы и ответы, если в вопросе или ответе возможно наличие символов =,-,: или похожих то самое простое на первой строке писать вопрос, на следующей ответ.
  3. При запуске боту загрузить список вопрос-ответ в Map

    Map<String, String> allAnswer = new HashMap<>();
    public void init(){
        BufferedReader reader = new BufferedReader(new FileReader("путь к фалу"));
        String question;
        while( (question = reader.readLine()) != null){
            String answer = reader.readLine();
            allAnswer.put(question, answer);
        }
    }
    

    В данном случае ответственность за валидность файла (у каждого вопроса должен быть ответ) лежит на вас.

  4. Создать метод в который приходит вопрос от пользователя и возвращается ответ:

    public String answer(String question){
        String answer = allAnswer.get(allAnswer);
        if (answer == null)
            return "нет ответа";
        return answer;
    }
    
Answer 2

В боте может быть много команд, и у каждой команды может быть много параметров. Можно для каждой команды добавить слушателя, и реализовать его обработчик. Теперь вы можете написать switch, и при необходимости (при нужной команде) извещать слушателя о пришедшем сообщении.

В обработчике будет обработка параметров команды, некоторые действия, и ответ. Обработчик также должен возвращать сообщение -- успешное, или с ошибкой.

См. паттерн "Наблюдатель" (https://ru.wikipedia.org/wiki/Наблюдатель_(шаблон_проектирования))

Делать таблицу для команд я не вижу смысла. А вот для обработки параметров -- наверно, стоит.

READ ALSO
Cоздание объекта класса HWPFDocument

Cоздание объекта класса HWPFDocument

При попытке создания объекта класса, не выходит создать объект класса, ссылаясь на:

208
Внешнее отсечении формы окном

Внешнее отсечении формы окном

Добрый день! Не могу решить данную задачу, буду очень признателенНеобходимо выполнить внешнее отсечение пятиугольника окном на основе алгоритма...

183
Fragment не обновляется

Fragment не обновляется

У меня 2 Activity на одном RecyclerView, на другом FragmentВ Activity в котором RecyclerView все хорошо работает, он заполняется

188
jQuery.Deferred exception: Illegal invocation TypeError: Illegal invocation

jQuery.Deferred exception: Illegal invocation TypeError: Illegal invocation

Пытаюсь вставить значение из inputКогда прописываю строкой - все работает, когда тяну из переменной - jQuery

327