Телеграм бот на 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

КОМЕНТАРІ • 122

  • @nastyav8226
    @nastyav8226 Рік тому +9

    Как же интересно и, главное, понятно! Спасибо за ваш труд🙂

    • @enter_IT
      @enter_IT  Рік тому +1

      Спасибо :) Надеюсь, и последующие уроки не разочаруют :)

  • @drnbndd
    @drnbndd Рік тому +1

    Большое спасибо, автор! Именно по этому видео у меня всё получилось! Впервые что-то пишу на Java, после недавнего начала изучения азов. В IDEA были проблемы с библиотеками, плагинами, зависимостями, но после этого видео - всё получилось.

  • @user-kk9dc6pd8u
    @user-kk9dc6pd8u Рік тому

    Спасибо, отлично рассказываете, жду продолжения)

  • @user-on8ih8qt6q
    @user-on8ih8qt6q Рік тому

    Большое спасибо за урок, все очень доходчиво и подача классная)

    • @enter_IT
      @enter_IT  Рік тому +1

      Добро пожаловать :)

  • @user-hm8wx2us8l
    @user-hm8wx2us8l Рік тому +4

    очень интересно послушать историю про размещенного бота на гитхабе с токеном в методе 😁
    урок пушка, спасибо!

    • @taannik
      @taannik 6 місяців тому

      Страшилки на ночь )

  • @bxneslxrd2224
    @bxneslxrd2224 Рік тому

    иии наконец нашел что мне нужно, спасибо автор , ты молодец(обнял)

  • @Mr.J248
    @Mr.J248 Рік тому

    Мега полезные видео )

  • @user-ux6rk1ry2e
    @user-ux6rk1ry2e 9 місяців тому

    Спасибо за видео!

  • @user-mq4bs3qc5g
    @user-mq4bs3qc5g Рік тому

    спасибо за урок

  • @ivanstrelka3448
    @ivanstrelka3448 4 місяці тому

    Спасибо! огонь!

  • @mrpunch_777_
    @mrpunch_777_ Рік тому

    Поехали 🚀🚀🚀

  • @user-uz1nn2yh2l
    @user-uz1nn2yh2l Місяць тому +6

    Здравствуйте, на 9:12 вы запускаете бота и пишете ему сообщения. Я делаю так же, но мои сообщения не появляются в консоли. Почему это может так происходить?

    • @user-rm1gx2to3t
      @user-rm1gx2to3t 20 днів тому +1

      Здравствуйте, такая фигня, не нашли решение?

    • @dzentai
      @dzentai 17 днів тому

      @@user-rm1gx2to3t @Component на класс TelegramBot добавьте

    • @alekseykhalezov9213
      @alekseykhalezov9213 9 днів тому

      @@user-rm1gx2to3t привет! тоже бьюсь уже вторые сутки... и ничего... решения нет пока что?

  • @user-by4gw7nz6m
    @user-by4gw7nz6m 6 місяців тому +1

    Не знаю может раньше не было но надо не забыть зарегистрировать бот в конфигурациях и сделать бин

  • @withotsoul7252
    @withotsoul7252 Рік тому

    СПАСИИИИБООО!!!!!!!!!!!!!!!

  • @enter_IT
    @enter_IT  Рік тому +1

    Группа-беседка в тг: 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

  • @ilya9852
    @ilya9852 Рік тому

    не знал что всё так легко

  • @andreynam8084
    @andreynam8084 6 місяців тому

    Добрый день, возник такой вопрос(возможно странный), можно ли использовать такой же домен как и у вас в ролике, или лучше свой где-нибудь накопать?

  • @somecapo
    @somecapo 7 місяців тому

    Будут ещё проекты? Очень понравилось!!

    • @enter_IT
      @enter_IT  7 місяців тому

      Спасибо) Этот бы доделать) Новые проекты не планирую - хочу отдельные видео записывать на разные темы - код ревью, онбординг, наставничество, организация рабочего процесса

  • @user-kn9nq5wi5p
    @user-kn9nq5wi5p Рік тому +4

    НАРОД, ИСПОЛЬЗУЙТЕ ВСЕ БИБЛИОТЕКИ ТОЙ ЖЕ ВЕРСИИ, ЧТО И В ВИДЕО, ИНАЧЕ ТАКОГО ДЕРЬМА НАХЛЕБАЕТЕСЬ В ПОСЛЕДУЮЩЕМ НАПИСАНИИ БОТА... ОСОБЕННО ЭТО КАСАЕТСЯ ВЕРСИИ SPRING BOOT STARTER PARENT.

    • @enter_IT
      @enter_IT  Рік тому +2

      эмоционально, но рационально =))

  • @user-qw9cg3is4j
    @user-qw9cg3is4j 10 місяців тому

    Здраствуйте а какую библиотеку для телеграма использовали

  • @alexkorel4494
    @alexkorel4494 Рік тому

    Ничего не понятно, но очень интересно🙂. Почему log error в конце выходит? Не было ведь ошибки. Свой код проверил, все также, а логи только от originalMessage

    • @enter_IT
      @enter_IT  Рік тому

      В следующем уроке объясняется)

  • @Dronya_33
    @Dronya_33 Рік тому +1

    У меня при создании проекта вместо Maven выбор кучи Maven Archetype. Какой лучше выбрать в рамках данного курса?

    • @enter_IT
      @enter_IT  Рік тому +1

      Лучше всего пустой maven проект. В уроке я с нуля все создавал

    • @locbkm1269
      @locbkm1269 Рік тому +3

      Не нужно смотреть список архетипов, который в колонке Generators - Maven Archetype :) Выбираешь New Progect и справа в поле Build system: Maven.
      В новых версия Idea этот пункт запрятали, и я, помню, тоже затупил.

    • @Dronya_33
      @Dronya_33 Рік тому

      @@locbkm1269 спасибо огромное!

    • @user-hg2jh6jv3b
      @user-hg2jh6jv3b 11 місяців тому +1

      @@locbkm1269 Боже, люблю целую обнимаю. Спасибо господу Богу за присутствие таких святых людей как ты в комментариях 😘😘😘

  • @user-kk9dc6pd8u
    @user-kk9dc6pd8u Рік тому +10

    Делал как Вы, до 9 минуты 20 секунды, но бот никак не хотел отвечать в консоль, пока не создал конфиг класс с init методом и в нем зарегистрировал созданного нами бота через класс TelegramBotsApi и его метод registerBot()

    • @enter_IT
      @enter_IT  Рік тому +3

      Хм, странно. Я по описанной в видео схеме уже не одного бота создал ) А класс TelegramBot точно наследуется от правильного класса? (import org.telegram.telegrambots.bots.TelegramLongPollingBot;) Если интересно разобраться - я бы посоветовал скачать мой код с гитхаба, подставить в application.properties ваши botname/token и попробовать запустить. Если заработает, то проверьте правильность наследования и соответствие версий библиотек )

    • @user-fj4tb2ym5c
      @user-fj4tb2ym5c Рік тому

      у меня такая же проблема, подскажи как конфиг настроил

    • @user-fj4tb2ym5c
      @user-fj4tb2ym5c Рік тому

      @@enter_IT если я 18 джаву использую может ли из-за этого ошибка быть? указываю родительский старте 2.5.2 ошибка , ставлю свежую версию например 3.0.0 запускается без ошибок, но бот не отвечает в консоль

    • @enter_IT
      @enter_IT  Рік тому

      @@user-fj4tb2ym5c с 18й джавой может быть всё, что угодно ) работоспособность бота гарантирую только на 11й =)

    • @user-fj4tb2ym5c
      @user-fj4tb2ym5c Рік тому +2

      @@enter_IT :)) зарегистрировал бота через TelegramBotsApi и все заработало)

  • @maxpro7135
    @maxpro7135 11 місяців тому

    какая версия Java используется в проекте?

  • @QWERTY-xy9dn
    @QWERTY-xy9dn Рік тому +3

    Как мне кажется, вставки с мемами несколько излишни. Это отвлекает от той информации, которую ты говоришь. А так действительно очень доходчиво и просто. Хорошие уроки и автор)

    • @enter_IT
      @enter_IT  Рік тому

      Да, в дальнейших уроках вставок гораздо меньше или вообще нет)

    • @user-yj7fd9fw2o
      @user-yj7fd9fw2o Рік тому +4

      @@enter_IT а мне кажется это наоборот убирает формализм описания и вносит разнообразие в повествование. Вставки очень даже зашли!

    • @Yan1249
      @Yan1249 Рік тому

      @@user-yj7fd9fw2o Согласен с вами, мемы наоборот помогают

  • @XXX24225
    @XXX24225 Рік тому

    Как импортировать Spring Boot в Idea ?

  • @user-ql3rm2ci3w
    @user-ql3rm2ci3w Рік тому

    Приветствую! Очень крутой цикл уроков, над этим бился 3 часа с java 18😄, библиотеки стонут, Logger вообще в истерике: добавил зависимость, импортирую, а метода .getLogger там нет((

    • @enter_IT
      @enter_IT  Рік тому +1

      Привет! Импортировал не ту библиотеку логгера) Удали импорт из класса и посмотри у меня в гите какой импорт должен быть (import ... вверху класса)

    • @user-ql3rm2ci3w
      @user-ql3rm2ci3w Рік тому

      @@enter_IT Благодарю, но не вкуриваю: в гите у вас указан импорт lombock уже, надобавлял зависимостей на log4j-api, log4j-core, просто log4j; импортирую org.apache.log4j, не находит метод этот(

    • @user-ql3rm2ci3w
      @user-ql3rm2ci3w Рік тому

      @@enter_IT не те библиотеки добавлял, троил уже, благодарю!)

    • @rflwnq
      @rflwnq 6 місяців тому

      @@user-ql3rm2ci3w у меня та же проблема) не помнишь откуда какую добавлял либу? .getLogger не видно все никак

  • @azatnabiullin2263
    @azatnabiullin2263 3 місяці тому

    Подскажите, пожалуйста. На первом же шаге (1:08) не то получается. У меня добавленные зависимости красным горят и "Cannot find declaration to go to". Почему так?

  • @MQXlM
    @MQXlM Рік тому

    Здравствуйте, не совсем понял зачем нужно создавать модуль и зачем добавлять spring-boot-starter-parent

    • @enter_IT
      @enter_IT  Рік тому +8

      Привет! Модуль мы создали, так как это удобная "единица" деления нашего приложения на отдельные микросервисы и "библиотеки" с общим кодом. В следующих уроках создадим другие модули.
      А spring-boot-starter-parent нужен для того, чтобы приложение не "рассыпалось", когда обрастёт кучей зависимосте. Бывает часто такое, что библиотеки разных версий между собой конфликтуют. Чтобы подключить/обновить одну библиотеку -- нужно обновить другую и т.д. Хорошо, если о конфликте мы узнаем на этапе компиляции, но намного хуже, если она вылезет в рантайме, когда приложение уже будет где-то на проде. А родительский "помник" немного упрощает управление базовыми зависимостями -- мы указываем для него версию, а для всех прочих стартеров Spring и некоторых других библиотек/плагинов версии будут тянуться из родительского pom.xml, в котором уже подобрана правильная комбинация версий библиотек. Из описания spring-boot-starter-parent:
      "Parent pom providing dependency and plugin management for applications built with Maven"

  • @Mr.J248
    @Mr.J248 Рік тому

    8 минут 49 сек в методе onUpdateReceived не могу инициализировать переменную var. Может ли это быть из за java 8 версии?

    • @enter_IT
      @enter_IT  Рік тому +2

      Ага, var добавился в 10й, кажется

    • @Mr.J248
      @Mr.J248 Рік тому

      @@enter_IT понял спасибо

  • @Melnislav
    @Melnislav 2 місяці тому

    Я не заметил такого момента - properties файл тогда в GIT не заливаем, отдельно его носим и подсовываем только в проект установленный локально у разработчика? Так что ли живём? =)

    • @enter_IT
      @enter_IT  2 місяці тому

      Не помню, как там было в первом уроке, но когда я запишу урок с деплоем, то переменные в конфиги будут сетиться из специального докеровского ENV файлика

    • @Melnislav
      @Melnislav 2 місяці тому

      @@enter_IT ого, супер, спасибо!

  • @spark7978
    @spark7978 Рік тому

    я если честно вообще не понимаю работу метода sendAnswerMessage(SendMessage message)
    типа мы кидаем наш message в метод execute( ), который что делает, для меня загадка.
    пожалуйста, умоляю, объясните и возможно я стану немного умнее

    • @enter_IT
      @enter_IT  Рік тому +2

      Смотри, класс TelegramBot наследуется от TelegramLongPollingBot. В TelegramLongPollingBot есть метод execute, который отправляет сообщение обратно в чат телеграмма -- это внутренний метод из телеграмовской либы -- как он работает под капотом (т.е. его реализация) нас не особо интересует. Но если очень интересно, то можно с помощью комбинации кнопок Alt + Ctrl + ЛКМ тыкнуть на название метода -- и провалиться вглубь библиотеки, заходя во все вложенные методы. Там (org.telegram.telegrambots.bots.DefaultAbsSender#sendMethodRequest) формируется обычный http запрос к серверу телеги -- никакой магии.) Такие же запросы мы делаем с другим микросервисам. А метод sendAnswerMessage -- это не более чем обертка над методом execute, которая инкапсулирует в себе (скрывает от внешнего пользователя) обработку ошибок.

    • @spark7978
      @spark7978 Рік тому

      @@enter_IT спасибо класс ,все стало чуть проще))

  • @wishmast777
    @wishmast777 Рік тому

    если делать по видео. нестыковка идет уже на 1:15. версию 2.5.2 подсвечивает красным

    • @enter_IT
      @enter_IT  Рік тому +1

      красным подсвечивает потому что зависимость еще не скачана в ваш локальный репозиторий. Нужно после добавления зависимости в pom.xml нажать в правом верхнем углу на всплывающую кнопку "m с синим кружочком"

    • @MellFanChick
      @MellFanChick Рік тому

      @@enter_IT А если нету этой буквы m с кружочком?

    • @enter_IT
      @enter_IT  Рік тому

      @@MellFanChick можно внести какие-нибудь правки в pom.xml -- и он появится

  • @youtube_user8
    @youtube_user8 Рік тому

    7:27 При установлении анотации, класс TelegramBot не подсветился, соответственно не подключился. Подскажите, как могу решить данную проблему?

    • @enter_IT
      @enter_IT  Рік тому

      То, что класс не подсветился - ещё ничего не значит. Возможно, IDEA лагонула. Нужно запустить приложение и проверить заработает ли

    • @youtube_user8
      @youtube_user8 Рік тому

      @@enter_IT Да, была ошибка. Я подключился через TelegramBotApi и программа запустилась

    • @youtube_user8
      @youtube_user8 Рік тому +1

      Теперь @Value не устанавливает значиния...

    • @enter_IT
      @enter_IT  Рік тому

      Может ${} пропущено? Также обратите внимание, что Value засетит значение не в момент создание Java объекта, а в момент создания спринг-бина

    • @honey7460
      @honey7460 13 днів тому

      @@youtube_user8чувак, ты решил проблему с установкой Value? У меня тоже такое

  • @patron9336
    @patron9336 Рік тому

    Что за ошибка десериализации в конце видео?

    • @enter_IT
      @enter_IT  Рік тому +1

      Уставревшая версия телеграмовской либы. Будет исправлено в следующем уроке.

  • @saintroome7062
    @saintroome7062 Рік тому +1

    При использовании аннотации ломбока @Log4j для генерации логгера появляется ошибка "The field DefaultAbsSender.log is not visible", в чем может быть проблема? (IDE Eclipse, Ubuntu)

  • @anwon9253
    @anwon9253 Рік тому

    9:00 У меня не работает. Прочитал в коментах что может быть из-за версий, поставил те же что и у вас, всё равно не работает... Просто при отправке сообщений в тот метод даже не заходит

    • @enter_IT
      @enter_IT  Рік тому

      Попробуй скачать мой код с гита, откатить на коммит первого урока и запустить у себя локально (подставив в конфиги свой токен). Если зарабоатет, то нужно сравнивать твой код и мой с гита -- где-то ошибка

    • @user-tp8jt6yb8e
      @user-tp8jt6yb8e Рік тому

      получилось? А то у меня такая же проблема

    • @anwon9253
      @anwon9253 Рік тому

      @@user-tp8jt6yb8e да

  • @user-jn8op5zg5x
    @user-jn8op5zg5x 4 місяці тому

    почему то когда отправляю сообщение у меня не приходит ответ с телеграма, как решить проблему?

    • @enter_IT
      @enter_IT  2 місяці тому

      если кратко, то нужно деббажить ) ставить "точки останова" (деббаг поинты/бряки) и смотреть в какой момент возникает проблема

  • @user-vd8kt4td7i
    @user-vd8kt4td7i 4 місяці тому

    Ошибка у меня на 9:00 , после того как пишу с телеграма боту , сообщение в консоль не приходит ко мне , у меня джава 20 сдк . Ставил ваш код что на гитхабе , тоже не хотел даже ошибка вышла при прогрузки программы. Думал может брендмауэ на виндовс блокирует сообщение, когда первый раз запустил вышло уведомление что он заблокировал и там был выбор разрешить или блокировать , я дал разрешение но сообщения всеравно не приходят. Не понимаю что не так

    • @gal_domkrat
      @gal_domkrat 4 місяці тому

      вы решили вопрос?
      У меня аналогичная проблема.

    • @azatnabiullin2263
      @azatnabiullin2263 3 місяці тому

      аналогично, пока хз как решить проблему

    • @azatnabiullin2263
      @azatnabiullin2263 3 місяці тому +1

      Проблему решил. Использовал 11 джаву. Вообще лучше использовать всё то же самое, что и автор - так точно заработает. Также такую проблему решили в комментах, писал чел с ником @user-kk9dc6pd8u

  • @Leg1tKenny
    @Leg1tKenny Рік тому

    что можно сделать имея токен бота?

    • @enter_IT
      @enter_IT  Рік тому +3

      Подменить бэк. Запросы с данными будут идти не к тебе в приложение, а к злоумышленнику с твоим токеном

  • @user-cq6oz3vq8u
    @user-cq6oz3vq8u 21 день тому +1

    Работает только с SDK 11. почему так я хз)

    • @user-cq6oz3vq8u
      @user-cq6oz3vq8u 21 день тому +1

      Update, spring-boot-starter-parent версии 3.0.0 нормально не работает с sdk 17. версия 2.7.18 работает норм. P.S. Если брать версию 3.0.0 и старше не приходит update из telegram

    • @enter_IT
      @enter_IT  20 днів тому

      Наверное, для 3-го спринг бута нужно либу телеграмма обновить

  • @cr1tup
    @cr1tup Рік тому

    Интересно, но пиздец как сложно

  • @wishmast777
    @wishmast777 Рік тому

    не видит библиотеки на 4:45

    • @enter_IT
      @enter_IT  Рік тому

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

    • @wishmast777
      @wishmast777 Рік тому

      @@enter_IT зашел в maven и там галочки поставил и выбрал compile. помогло)

    • @enter_IT
      @enter_IT  Рік тому

      @@wishmast777 странно, но ок =)

    • @wishmast777
      @wishmast777 Рік тому

      @@enter_IT за такие быстрые ответы отдельное спасибо)

  • @spark7978
    @spark7978 Рік тому

    мда , все таки очень сложно и непонятно

  • @kozzztik
    @kozzztik 11 місяців тому

    Здравствуйте. Все первые две минуты видео повторял за вами, но на таймкоде 2:27 у меня почему то "Disconnected from the target VM, address: '(здесь какой-то адрес типа: 123.0.0.1:1234, и я не знаю, можно ли его писать тут.)', transport: 'socket' " Прошу вас, подскажите как решить мою проблему.

  • @Mr.J248
    @Mr.J248 Рік тому

    Подскажите содержимое файла log4j . properties руками прописывать?) в гите я ничего не нашел)

    • @enter_IT
      @enter_IT  Рік тому +2

      Как же нет - если есть )
      github.com/AndreyYermolenko/BabushkinPogreb/blob/dev/dispatcher/src/main/resources/log4j.properties

  • @wishmast777
    @wishmast777 Рік тому

    не запускается. 9:00 с ошибкой
    "org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'telegramBot': Lookup method resolution failed"
    не пойму, где то метод неправильно обозвали?

    • @QWERTY-xy9dn
      @QWERTY-xy9dn Рік тому

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

  • @eduiaremchuk2917
    @eduiaremchuk2917 Місяць тому

    при запуске бота выдаёт ошибку Cannot instantiate interface org.springframework.context.ApplicationContextInitializer : org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer

  • @BitkinaEng
    @BitkinaEng 11 місяців тому

    В самом начале ошибка при проверка старта dispatcherapplication. Мавен стоит, зависимости все подтянулись. ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefini

    • @sayora8288
      @sayora8288 11 місяців тому

      нашли решение ?

    • @sayora8288
      @sayora8288 11 місяців тому

      только полное копирование хмл кода с гита помогло