Просто посмотрите на этот код

Утром кодил и захотел с кем-нибудь поделиться кодом для обработки входящих сообщений. Обратите внимание на маленькие функции — каждая делает ровно одно.

Обработчики хранятся в мапе, ключ к ним определяется в messageType(), и всё это объединяется в processMessage()

private static final BiFunction<Message, User, @Nullable NewMessageBody> REGISTER_PROCESSOR = (message, user) -> { var contactAttachment = ((ContactAttachment) message.body().attachments().getFirst()); var phoneNumber = Ezvcard.parse(contactAttachment.payload().vcfInfo()) .first() .getTelephoneNumbers() .getFirst() .getText(); State.updateUserManagement(() -> UserManagement.registerVisitor(State.getUserManagement(), phoneNumber, user.firstName())); return new NewMessageBody(""" 🎉 Регистрация завершена! Теперь я смогу напомнить вам о посещении в клинику. """, null, null, null, null); }; private static final BiFunction<Message, User, @Nullable NewMessageBody> AUTHOR_PROCESSOR = (_, _) -> new NewMessageBody( "abc", null, null, null, TextFormat.MARKDOWN); private static final BiFunction<Message, User, @Nullable NewMessageBody> UNKNOWN_PROCESSOR = (_, _) -> unknownInput(); static Map<String, BiFunction<Message, User, @Nullable NewMessageBody>> messageProcessors = Map.of( "register", REGISTER_PROCESSOR, "author", AUTHOR_PROCESSOR, "unknown", UNKNOWN_PROCESSOR); private static NewMessageBody processMessage(Message message, User user) { return messageProcessors.get(messageType(message)).apply(message, user); } private static String messageType(Message message) { if (isRegisterMessage(message)) return "register"; if (isAuthorMessage(message)) return "author"; return "unknown"; } private static boolean isRegisterMessage(Message message) { var attachments = message .body() .attachments(); if (attachments == null) { return false; } return attachments.getFirst() instanceof ContactAttachment; } private static boolean isAuthorMessage(Message message) { var text = message .body() .text(); return "автор".equals(text); }

Всем хорошего дня!