#java #telegram
Вопрос:
Я использую библиотеку для своего бота: https://github.com/rubenlagus/TelegramBots/wiki/Simple-Example . Вот мой код:
public Ability sayHi() {
Reply replyNext = Reply.of(upd -> silent.send("Good!", getChatId(upd)), hasMessageWith("ok"));
return Ability
.builder()
.name("up")
.info("command up")
.locality(ALL)
.privacy(PUBLIC)
.action(ctx -> silent.send("How are you?", ctx.chatId()))
.reply(replyNext)
.build();
}
@NotNull
private Predicate<Update> hasMessageWith(String msg) {
return upd -> upd.getMessage().getText().equalsIgnoreCase(msg);
}
Все довольно просто:
1 [user] /up
2 [bot] How are you?
3 [user] ok
4 [bot] Good!
Что, если в ответе # 3 пользователь введет что-то другое, например, «sad»? Бот должен отвечать по-другому, например, «Это нехорошо» replyNext
.
Как с этим справиться?
Нужно ли мне создавать отдельный Reply.of
для каждого такого случая или его можно переписать Predictate<Update>
? Мой реальный метод бота выглядит следующим образом
for(String param:largeIncomeMessage.split("n")){
switch (param) {
case "param1":
if (val.contains("thebest") amp;amp; val.contains("good")) {
// send OK message to the user
} else {
throw new NotFoundException("Error in" incomeMessage "'. param1");
// send ERROR message to the user
}
break;
case "param2"
// do allmost the same
break;
...
}