Comments 4
Раз статья для новичков, то выделю то, что их хорошему не научит.
"message_text" и "chat_id" — в джаве принят другой формат именования переменных.
Смущает ".split(" ");" — а если пользователь ввел два и более пробелов случайно? А если клиент телеграма перестанет убирать пробелы до и после текста сообщения, которые тоже случайно были добавлены? А обработка текста со спецсимволами? А если вес на одной строке, а рост на другой? Так что надо тримить, а после из двух и более пробелов делать одинарный. А еще может потом захочется сделать другой разделитель, точка с запятой или еще что-то. А еще проверка на валидность роста, например, что выше 250 быть не может. Кейсов накидать можно много, но хотело бы видеть хотя бы намеки на проверки, хотя бы комментариями. Понятно, что это пет проджект и не более, но привычка подумать о том, как реальный человек будет пользоваться — всегда пригодится. "Все остальные запросы должны блокироваться" — все же это слишком искусственное требование.
Не очень понятно, в чем смысл проверки на наличие пробела ("// если сообщение с текстом содержит пробел"). Она вообще не нужна. Вы же в любом случае делаете массив строк через split и если длина не 2, то отправляете ошибку.
Название переменной "weightAntHeight" тоже не отражает сути массива и может путать.
И неплохо было бы добавить обработку, что если сообщение "/start", то высылать инструкцию. для тех, кто впервые открыл его.
Читая статью, я не знаю, что такое "WriteUser" и "ImtCount". Для этого надо лезть на гитхаб и изучать уже там. Но вот в самой статье это мешает и не несет никакой смысловой нагрузки. Лучше расписать про базу в следующих статьях, материала-то можно много сделать.
Если без этих мелочей, то статья хорошая, пишите еще.
1. Про отход от camelCase согласна, спасибо, что указали (порой переклинивает…).
2. Насчет ".split(" ");" — такова была изначально задумка – жесткие требования к формату запроса пользователя, тем более сам запрос очень простой. Но в будущем да, согласна, что должно быть больше вариаций на некорректные действия пользователя + проверка на валидность роста и даже веса.
3. Насчет обработки "/start" в статье специально не раскрывается тема обработки команд, о чем так и указано: «.. если опустить реализацию методов, участвующих в обработке команд, …». А так по коду в onUpdateReceived это есть, и увидеть можно в полной версии кода на ГитХаб.
4. Возможно, в демонстрационной части кода нужно было оставить пробелы в том месте, где идет реализация различных методов после обработки сообщений пользователя, но мне казалось достаточным комментария «// производим расчет ИМТ, высылаем пользователю результаты и рекомендации, заносим результаты в базу данных». И если кто-то захочет самостоятельно разобраться в подробностях, выходящих за рамки обозначенной темы статьи, может пройти в полную версию кода на ГитХаб.
5. А в целом обсуждения чьих-то предложенных решений очень полезно, поскольку со стороны можно разглядеть то, на чем «замыливается» взгляд изнутри. Поэтому спасибо за комментарий.
.... Тем, кто так или иначе уже сталкивался с разработкой Telegram-ботов на java, известно, что для того, чтобы класс, содержащий логику бота, реализовывал взаимодействие с сервисами Telegram, его необходимо унаследовать от класса TelegramLongPollingBot ...
Немного умею в ботов. В java не умею, но интересно.
Тут видимо упоминается некая библиотека или фреймворк. Это предложение я перечитал несколько раз. Тут прям безапиляционное утверждение что нужно использовать именно некий TelegramLongPollingBot без него никак, вообще. Если использовать другое или своё собственное - работать ничего не будет. Класс реализующий взаимодействие с тележкой обязательно должен быть унаследован от TelegramLongPollingBot. То есть если я напишу свой велосипед класс обработчик я обязан назвать TelegramLongPollingBot, если назову TlgmLngPollBot - магия не произойдет.
Не сочтите за хейт и ответьте нубу)
1. Так по-человечески описали свои рассуждения и вопрос, и так нелепо завершили сообщение сленгом… В общем, я не считаю ваше обращение проявлением ненависти (может быть провокацией да, но это - на вашей совести), а также вы не производите впечатление новичка.
2. Спасибо, что своим вопросом обратили мое внимание на некоторую узость мысли и отсутствие уточнений, какой из способов взаимодействия с ботом я использую, на чьем примере рассматриваю реализацию методов. В статью внесла пояснения.
3. Ну и, на всякий случай, вдруг вам это пригодится для постижения ботов на java.
Простыми словами про обработку текстовых запросов пользователя в Телеграмм ботах на java