Телеграм бот на Java. Создаем проект, интегрируемся с телегой. Урок 1.
Вставка
- Опубліковано 25 вер 2022
- В этом уроке я создал проект, микросервис dispatcher на Spring boot, зарегистрировал тг-бота, интегрировался с телегой, настроил получение сообщений из чата и отправку ответа из приложения. Также, к проекту было подключено логирование (log4j) и lombok, настроено считывание данных из application.properties.
Группа-беседка в тг: t.me/enter_I7
Github с кодом проекта:
github.com/AndreyYermolenko/B...
Ресурсы компании РЕЛЭКС:
relex.ru/ru/?...
t.me/relexru
/ relex-group
relex_ru
#java #springboot #telegrambot #microservices
Как же интересно и, главное, понятно! Спасибо за ваш труд🙂
Спасибо :) Надеюсь, и последующие уроки не разочаруют :)
Большое спасибо, автор! Именно по этому видео у меня всё получилось! Впервые что-то пишу на Java, после недавнего начала изучения азов. В IDEA были проблемы с библиотеками, плагинами, зависимостями, но после этого видео - всё получилось.
Спасибо, отлично рассказываете, жду продолжения)
Большое спасибо за урок, все очень доходчиво и подача классная)
Добро пожаловать :)
очень интересно послушать историю про размещенного бота на гитхабе с токеном в методе 😁
урок пушка, спасибо!
Страшилки на ночь )
иии наконец нашел что мне нужно, спасибо автор , ты молодец(обнял)
=))
Мега полезные видео )
Спасибо за видео!
спасибо за урок
Спасибо! огонь!
Поехали 🚀🚀🚀
Здравствуйте, на 9:12 вы запускаете бота и пишете ему сообщения. Я делаю так же, но мои сообщения не появляются в консоли. Почему это может так происходить?
Здравствуйте, такая фигня, не нашли решение?
@@user-rm1gx2to3t @Component на класс TelegramBot добавьте
@@user-rm1gx2to3t привет! тоже бьюсь уже вторые сутки... и ничего... решения нет пока что?
Не знаю может раньше не было но надо не забыть зарегистрировать бот в конфигурациях и сделать бин
СПАСИИИИБООО!!!!!!!!!!!!!!!
Группа-беседка в тг: t.me/enter_I7
Компания РЕЛЭКС регулярно проводит наборы начинающих специалистов БЕЗ опыта работы на стажировку по различным направлениям ИТ.
Подписывайся на наши соц.сети и следи за новостями!
Github с кодом проекта:
github.com/AndreyYermolenko/BabushkinPogreb
Ресурсы компании РЕЛЭКС:
relex.ru/ru/?
t.me/relexru
www.linkedin.com/company/relex-group/
vk.com/relex_ru
не знал что всё так легко
Добрый день, возник такой вопрос(возможно странный), можно ли использовать такой же домен как и у вас в ролике, или лучше свой где-нибудь накопать?
Будут ещё проекты? Очень понравилось!!
Спасибо) Этот бы доделать) Новые проекты не планирую - хочу отдельные видео записывать на разные темы - код ревью, онбординг, наставничество, организация рабочего процесса
НАРОД, ИСПОЛЬЗУЙТЕ ВСЕ БИБЛИОТЕКИ ТОЙ ЖЕ ВЕРСИИ, ЧТО И В ВИДЕО, ИНАЧЕ ТАКОГО ДЕРЬМА НАХЛЕБАЕТЕСЬ В ПОСЛЕДУЮЩЕМ НАПИСАНИИ БОТА... ОСОБЕННО ЭТО КАСАЕТСЯ ВЕРСИИ SPRING BOOT STARTER PARENT.
эмоционально, но рационально =))
Здраствуйте а какую библиотеку для телеграма использовали
Ничего не понятно, но очень интересно🙂. Почему log error в конце выходит? Не было ведь ошибки. Свой код проверил, все также, а логи только от originalMessage
В следующем уроке объясняется)
У меня при создании проекта вместо Maven выбор кучи Maven Archetype. Какой лучше выбрать в рамках данного курса?
Лучше всего пустой maven проект. В уроке я с нуля все создавал
Не нужно смотреть список архетипов, который в колонке Generators - Maven Archetype :) Выбираешь New Progect и справа в поле Build system: Maven.
В новых версия Idea этот пункт запрятали, и я, помню, тоже затупил.
@@locbkm1269 спасибо огромное!
@@locbkm1269 Боже, люблю целую обнимаю. Спасибо господу Богу за присутствие таких святых людей как ты в комментариях 😘😘😘
Делал как Вы, до 9 минуты 20 секунды, но бот никак не хотел отвечать в консоль, пока не создал конфиг класс с init методом и в нем зарегистрировал созданного нами бота через класс TelegramBotsApi и его метод registerBot()
Хм, странно. Я по описанной в видео схеме уже не одного бота создал ) А класс TelegramBot точно наследуется от правильного класса? (import org.telegram.telegrambots.bots.TelegramLongPollingBot;) Если интересно разобраться - я бы посоветовал скачать мой код с гитхаба, подставить в application.properties ваши botname/token и попробовать запустить. Если заработает, то проверьте правильность наследования и соответствие версий библиотек )
у меня такая же проблема, подскажи как конфиг настроил
@@enter_IT если я 18 джаву использую может ли из-за этого ошибка быть? указываю родительский старте 2.5.2 ошибка , ставлю свежую версию например 3.0.0 запускается без ошибок, но бот не отвечает в консоль
@@user-fj4tb2ym5c с 18й джавой может быть всё, что угодно ) работоспособность бота гарантирую только на 11й =)
@@enter_IT :)) зарегистрировал бота через TelegramBotsApi и все заработало)
какая версия Java используется в проекте?
Как мне кажется, вставки с мемами несколько излишни. Это отвлекает от той информации, которую ты говоришь. А так действительно очень доходчиво и просто. Хорошие уроки и автор)
Да, в дальнейших уроках вставок гораздо меньше или вообще нет)
@@enter_IT а мне кажется это наоборот убирает формализм описания и вносит разнообразие в повествование. Вставки очень даже зашли!
@@user-yj7fd9fw2o Согласен с вами, мемы наоборот помогают
Как импортировать Spring Boot в Idea ?
Приветствую! Очень крутой цикл уроков, над этим бился 3 часа с java 18😄, библиотеки стонут, Logger вообще в истерике: добавил зависимость, импортирую, а метода .getLogger там нет((
Привет! Импортировал не ту библиотеку логгера) Удали импорт из класса и посмотри у меня в гите какой импорт должен быть (import ... вверху класса)
@@enter_IT Благодарю, но не вкуриваю: в гите у вас указан импорт lombock уже, надобавлял зависимостей на log4j-api, log4j-core, просто log4j; импортирую org.apache.log4j, не находит метод этот(
@@enter_IT не те библиотеки добавлял, троил уже, благодарю!)
@@user-ql3rm2ci3w у меня та же проблема) не помнишь откуда какую добавлял либу? .getLogger не видно все никак
Подскажите, пожалуйста. На первом же шаге (1:08) не то получается. У меня добавленные зависимости красным горят и "Cannot find declaration to go to". Почему так?
Отбой, опечатался🙈
бывает ))
Здравствуйте, не совсем понял зачем нужно создавать модуль и зачем добавлять spring-boot-starter-parent
Привет! Модуль мы создали, так как это удобная "единица" деления нашего приложения на отдельные микросервисы и "библиотеки" с общим кодом. В следующих уроках создадим другие модули.
А spring-boot-starter-parent нужен для того, чтобы приложение не "рассыпалось", когда обрастёт кучей зависимосте. Бывает часто такое, что библиотеки разных версий между собой конфликтуют. Чтобы подключить/обновить одну библиотеку -- нужно обновить другую и т.д. Хорошо, если о конфликте мы узнаем на этапе компиляции, но намного хуже, если она вылезет в рантайме, когда приложение уже будет где-то на проде. А родительский "помник" немного упрощает управление базовыми зависимостями -- мы указываем для него версию, а для всех прочих стартеров Spring и некоторых других библиотек/плагинов версии будут тянуться из родительского pom.xml, в котором уже подобрана правильная комбинация версий библиотек. Из описания spring-boot-starter-parent:
"Parent pom providing dependency and plugin management for applications built with Maven"
8 минут 49 сек в методе onUpdateReceived не могу инициализировать переменную var. Может ли это быть из за java 8 версии?
Ага, var добавился в 10й, кажется
@@enter_IT понял спасибо
Я не заметил такого момента - properties файл тогда в GIT не заливаем, отдельно его носим и подсовываем только в проект установленный локально у разработчика? Так что ли живём? =)
Не помню, как там было в первом уроке, но когда я запишу урок с деплоем, то переменные в конфиги будут сетиться из специального докеровского ENV файлика
@@enter_IT ого, супер, спасибо!
я если честно вообще не понимаю работу метода sendAnswerMessage(SendMessage message)
типа мы кидаем наш message в метод execute( ), который что делает, для меня загадка.
пожалуйста, умоляю, объясните и возможно я стану немного умнее
Смотри, класс TelegramBot наследуется от TelegramLongPollingBot. В TelegramLongPollingBot есть метод execute, который отправляет сообщение обратно в чат телеграмма -- это внутренний метод из телеграмовской либы -- как он работает под капотом (т.е. его реализация) нас не особо интересует. Но если очень интересно, то можно с помощью комбинации кнопок Alt + Ctrl + ЛКМ тыкнуть на название метода -- и провалиться вглубь библиотеки, заходя во все вложенные методы. Там (org.telegram.telegrambots.bots.DefaultAbsSender#sendMethodRequest) формируется обычный http запрос к серверу телеги -- никакой магии.) Такие же запросы мы делаем с другим микросервисам. А метод sendAnswerMessage -- это не более чем обертка над методом execute, которая инкапсулирует в себе (скрывает от внешнего пользователя) обработку ошибок.
@@enter_IT спасибо класс ,все стало чуть проще))
если делать по видео. нестыковка идет уже на 1:15. версию 2.5.2 подсвечивает красным
красным подсвечивает потому что зависимость еще не скачана в ваш локальный репозиторий. Нужно после добавления зависимости в pom.xml нажать в правом верхнем углу на всплывающую кнопку "m с синим кружочком"
@@enter_IT А если нету этой буквы m с кружочком?
@@MellFanChick можно внести какие-нибудь правки в pom.xml -- и он появится
7:27 При установлении анотации, класс TelegramBot не подсветился, соответственно не подключился. Подскажите, как могу решить данную проблему?
То, что класс не подсветился - ещё ничего не значит. Возможно, IDEA лагонула. Нужно запустить приложение и проверить заработает ли
@@enter_IT Да, была ошибка. Я подключился через TelegramBotApi и программа запустилась
Теперь @Value не устанавливает значиния...
Может ${} пропущено? Также обратите внимание, что Value засетит значение не в момент создание Java объекта, а в момент создания спринг-бина
@@youtube_user8чувак, ты решил проблему с установкой Value? У меня тоже такое
Что за ошибка десериализации в конце видео?
Уставревшая версия телеграмовской либы. Будет исправлено в следующем уроке.
При использовании аннотации ломбока @Log4j для генерации логгера появляется ошибка "The field DefaultAbsSender.log is not visible", в чем может быть проблема? (IDE Eclipse, Ubuntu)
9:00 У меня не работает. Прочитал в коментах что может быть из-за версий, поставил те же что и у вас, всё равно не работает... Просто при отправке сообщений в тот метод даже не заходит
Попробуй скачать мой код с гита, откатить на коммит первого урока и запустить у себя локально (подставив в конфиги свой токен). Если зарабоатет, то нужно сравнивать твой код и мой с гита -- где-то ошибка
получилось? А то у меня такая же проблема
@@user-tp8jt6yb8e да
почему то когда отправляю сообщение у меня не приходит ответ с телеграма, как решить проблему?
если кратко, то нужно деббажить ) ставить "точки останова" (деббаг поинты/бряки) и смотреть в какой момент возникает проблема
Ошибка у меня на 9:00 , после того как пишу с телеграма боту , сообщение в консоль не приходит ко мне , у меня джава 20 сдк . Ставил ваш код что на гитхабе , тоже не хотел даже ошибка вышла при прогрузки программы. Думал может брендмауэ на виндовс блокирует сообщение, когда первый раз запустил вышло уведомление что он заблокировал и там был выбор разрешить или блокировать , я дал разрешение но сообщения всеравно не приходят. Не понимаю что не так
вы решили вопрос?
У меня аналогичная проблема.
аналогично, пока хз как решить проблему
Проблему решил. Использовал 11 джаву. Вообще лучше использовать всё то же самое, что и автор - так точно заработает. Также такую проблему решили в комментах, писал чел с ником @user-kk9dc6pd8u
что можно сделать имея токен бота?
Подменить бэк. Запросы с данными будут идти не к тебе в приложение, а к злоумышленнику с твоим токеном
Работает только с SDK 11. почему так я хз)
Update, spring-boot-starter-parent версии 3.0.0 нормально не работает с sdk 17. версия 2.7.18 работает норм. P.S. Если брать версию 3.0.0 и старше не приходит update из telegram
Наверное, для 3-го спринг бута нужно либу телеграмма обновить
Интересно, но пиздец как сложно
не видит библиотеки на 4:45
Нужно сделать то же самое, что я советовал в предыдущей комменте - обновить зависимости, чтобы они скачались в проект
@@enter_IT зашел в maven и там галочки поставил и выбрал compile. помогло)
@@wishmast777 странно, но ок =)
@@enter_IT за такие быстрые ответы отдельное спасибо)
мда , все таки очень сложно и непонятно
Здравствуйте. Все первые две минуты видео повторял за вами, но на таймкоде 2:27 у меня почему то "Disconnected from the target VM, address: '(здесь какой-то адрес типа: 123.0.0.1:1234, и я не знаю, можно ли его писать тут.)', transport: 'socket' " Прошу вас, подскажите как решить мою проблему.
Подскажите содержимое файла log4j . properties руками прописывать?) в гите я ничего не нашел)
Как же нет - если есть )
github.com/AndreyYermolenko/BabushkinPogreb/blob/dev/dispatcher/src/main/resources/log4j.properties
не запускается. 9:00 с ошибкой
"org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'telegramBot': Lookup method resolution failed"
не пойму, где то метод неправильно обозвали?
Возможно, была проблема с зависимостями. Попробуй поставить версии как в видео
при запуске бота выдаёт ошибку Cannot instantiate interface org.springframework.context.ApplicationContextInitializer : org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer
В самом начале ошибка при проверка старта dispatcherapplication. Мавен стоит, зависимости все подтянулись. ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefini
нашли решение ?
только полное копирование хмл кода с гита помогло