Пишем Telegram bot на Java | Spring. Урок 1: Состояния бота

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ธ.ค. 2024

ความคิดเห็น • 92

  • @СергейВячеслаев
    @СергейВячеслаев  4 ปีที่แล้ว +12

    Ребята, рекомендую в начале посмотреть Вводный ролик по ботам, там рассказывают откуда берутся настройки proxy, что такое ngrok и прочее. Ссылка на вводный ролик в описании к этому видео.

    • @СергейМихалёв-ю8д
      @СергейМихалёв-ю8д 4 ปีที่แล้ว

      на 15ой минуте вы рассказываете про файл message.properties. Могли бы вы подсказать, можно ли в данном файле использовать сложные текстовые блоки с форматированием при помощи HTML?

  • @Wansery
    @Wansery ปีที่แล้ว +2

    ой зря ты int использовал) Теперь idшники людей превышают максимальное допустимое значение для int'а. Для тех ребят кто собирается делать по его образцу, используйте сразу Long или String

  • @mrprogre_avandy_electronics
    @mrprogre_avandy_electronics 11 หลายเดือนก่อน

    Спасибо за видео! Смотрю его после создания своего бота.
    Чуть доработаю и сниму видос о нём с обзором кода.. через пару-тройку недель.
    Кому интересно как сделать бота на Java чуть по другому и проще - заходите.

  • @whitenights8047
    @whitenights8047 4 ปีที่แล้ว +5

    Спасибо, очень круто все обьяснил! Снимай еще)

  • @АндрейКоротков-у8х
    @АндрейКоротков-у8х 4 ปีที่แล้ว +10

    Сергей, непонятно каким образом будет очищаться кеш? Что будет если у приложения огромный поток пользователей для которых постоянно генерируется кеш?

  • @НикитаИвашкевич-е3й
    @НикитаИвашкевич-е3й 4 ปีที่แล้ว +1

    Автору огромнейшее спасибо за подробное объяснение

  • @liliyaaltemirova9807
    @liliyaaltemirova9807 4 ปีที่แล้ว +2

    спасибо! замечательный материал, хотелось бы больше ваших видео)))

  • @BMWCREW
    @BMWCREW 4 ปีที่แล้ว +2

    Огонь, давай продолжай, интересно бот для магазина.

    • @СергейВячеслаев
      @СергейВячеслаев  4 ปีที่แล้ว +1

      спасибо, в свободное время записываю)

    • @assasinvm
      @assasinvm 4 ปีที่แล้ว

      ​@@СергейВячеслаев в проекте представленным вами возникают ошибки ngrok-a :404,405,503

  • @evgeniyn702
    @evgeniyn702 ปีที่แล้ว

    привет! что если одним из полей профайла было фото, как/где бы тогда обрабатывался апдейт? поменялась бы как-то логика с учетом состояний?

    • @evgeniyn702
      @evgeniyn702 ปีที่แล้ว

      Разобрался. Спасибо за видео!

  • @АлександрМан-в6ъ
    @АлександрМан-в6ъ 3 ปีที่แล้ว +2

    У меня три вопроса :
    1. Можно как отключить реакцию на нажатие кнопки после того как пользователь перешел к следующему вопросу, т.к любое нажатие на любую из кнопок вносит полный хаос. Я понимаю, что можно понаставить проверок. Но может есть простое решение отключить их действие после перехода к следующему пункту?
    2. Я заметил, что если в коде что-то идет не так, т.е. просто не был отправлен ответ, а пользователь что-то продолжает писать. И эти все сообщения скапливаются в каком то буфере.
    Т.к. при перезапуске программы они все вываливаются разом. Можно как-то чистить это буфер? Или надо обязательно хоть что то отправлять на каждое сообщение?
    3. У тебя в коде все работает в одном потоке. А проблем не было с работой бота, когда его юзают несколько пользователей? Я думал, что для ботов надо обязательно создавать много поточное приложение. Ты в РЖД боте тоже все в одном потоке кодишь? Я не пойму как они разруливают между собой доступ к объектам?

  • @artemrogov7471
    @artemrogov7471 3 ปีที่แล้ว +12

    Всё конечно замечательно, вот только слово в названии "пишем" совсем не соответствует видео и вводит в заблуждение. Суть видео "я написал бота, смотрите как я это сделал", никакого объяснения с чего начать, что импортировать, такого даже близко нет, просто куски кода и рассказы в стиле "ну вот тут я написал так-то так-то".

    • @dervil
      @dervil 3 ปีที่แล้ว +1

      реально, если кто только начал изучать - то вообще нихрена не поймет! Честно - я даже не верю, что он сам это написал.

    • @vshum44
      @vshum44 3 ปีที่แล้ว

      а ты смотрел предыдущий урок?

    • @fairecr6084
      @fairecr6084 3 ปีที่แล้ว +1

      @@dervil читаем Telegram Api, Spring Framework, методологию SOLID, учим стандарт Java SE 8, используем код данного человека как методические указания или базовый шаблон бизнес логики для бота. В предыдущем уроке есть в принципе описание всего, есть свободный доступ к репозиторию, есть ссылки на уроки по спрингу

  • @НикитаИвашкевич-е3й
    @НикитаИвашкевич-е3й 4 ปีที่แล้ว +1

    Столкнулся со следующей проблемой: {"ok":false,"error_code":401,"description":"Unauthorized"}. Решение заключается в использовании одного из 4х возможных портов: 443, 80, 88, 8443 при создании webhook через ngrok вместо любого другого (к примеру 5000, который показан в видео). Надеюсь, кому-нибудь поможет.

    • @Igor-uz3vn
      @Igor-uz3vn 4 ปีที่แล้ว

      Такая же проблема(

    • @ВалентинБадасин
      @ВалентинБадасин 3 ปีที่แล้ว

      т.е ты вместо 5000 использовал 443, 80, 88, 8443? у меня ngrok не создает сервер - выдает постоянно 502.

    • @НикитаИвашкевич-е3й
      @НикитаИвашкевич-е3й 3 ปีที่แล้ว

      @@ВалентинБадасин Я использую 8443, т.к. в ином случае telegram api выдаёт ошибку 502. С ngrok проблем не было

  • @fantomchik1183
    @fantomchik1183 5 หลายเดือนก่อน

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

  • @maxrus6173
    @maxrus6173 4 ปีที่แล้ว

    4:02. 41 строчка. Разве _ допускается в именах переменных у джавы?

    • @Minister_Kitty
      @Minister_Kitty 4 ปีที่แล้ว

      Да :)

    • @maxrus6173
      @maxrus6173 4 ปีที่แล้ว

      Александр Галковский camelCase же

    • @Minister_Kitty
      @Minister_Kitty 4 ปีที่แล้ว

      @@maxrus6173 Я имел в виду что технически _ допускается в названиях, но, да, по стандарту переменные нужно именовать через camelCase.
      _обычно используют для переменных с цифр.
      Допустим
      _1HourDelay и т.д

  • @mika2557
    @mika2557 4 ปีที่แล้ว +2

    Не сталкивался с ошибкой 502 Bad Gateway? Бот мне вообще отвечать не хочет.

    • @СергейВячеслаев
      @СергейВячеслаев  4 ปีที่แล้ว

      Это в ngrok ? Или где выдает. Если ngrok проверь зарегистрирован ли webhook и прописан ли он в настройках ботп

    • @mika2557
      @mika2557 4 ปีที่แล้ว

      @@СергейВячеслаев хук зарегистрировал, в его статусе указано 502, ngrok тоже выдает эту ошибку. В настройках все прописано.

    • @mika2557
      @mika2557 4 ปีที่แล้ว

      @@СергейВячеслаев Разобрался, мой косяк, ngrok не на том порту запускал

    • @alexeyverishko915
      @alexeyverishko915 4 ปีที่แล้ว

      Была такая же проблема удалил из кода прокси и в настройках удалил всё заработало

  • @kattaris
    @kattaris 4 ปีที่แล้ว

    В ngrok'e ошибка:
    {
    "timestamp": "2020-08-21T09:28:13.595+00:00",
    "status": 404,
    "error": "Not Found",
    "message": "",
    "path": "/"
    }
    с чем может быть связана?

    • @СергейВячеслаев
      @СергейВячеслаев  4 ปีที่แล้ว

      Не встречался, зарегистрирован ли вебхук через телеграм апи ? Загугли ngrok 404

    • @kattaris
      @kattaris 4 ปีที่แล้ว

      @@СергейВячеслаев Зарегистрирован, гугл ничего не дает, похоже проблема в спринге\webhookcontroller'e - в консоли ngrok'a постоянно: POST / 404, если остановить сервер то POST / 502 Bad Gateway

    • @СергейВячеслаев
      @СергейВячеслаев  4 ปีที่แล้ว

      @@kattaris посмотри настройки прокси, убери их, сейчас вроде телеграм разблокировали. Посмотри что в логах выдает спринг. Больше ничего сказать не могу, уже давно не открывал проект - сейчас занимаюсь другим.

  • @ВладАрсии-ы5д
    @ВладАрсии-ы5д 3 ปีที่แล้ว

    Большое спасибо, сделал бота по вашему примеру

  • @МатвейАнуфриев-ц7з
    @МатвейАнуфриев-ц7з 4 ปีที่แล้ว +4

    привет сергей, посмотрел видео про состояния бота и мне показалось не очень понятным, я не понимаю как ты додумался написать такого сложного бота. Сколько ты программируешь на java?

    • @СергейВячеслаев
      @СергейВячеслаев  4 ปีที่แล้ว

      Привет около года посмотри вводное видео про бота, это был дипломный проект

    • @dervil
      @dervil 3 ปีที่แล้ว +3

      Украсть код и сделать под себя тоже надо у меть))) плюс раз это выпускной проект - значит и руководитель был, который подсказывал что и как))) а сказки типа я сам это все написал только сказки😂😂😂

  • @assasinvm
    @assasinvm 4 ปีที่แล้ว +1

    Ошибки :
    Переменная - log
    И ошибки в методах (файл: FillingProfileHandler)

    • @perpetualgod5038
      @perpetualgod5038 4 ปีที่แล้ว +2

      насчета log - у меня тоже аннотация не сработала, написал вручную: private static final Logger log = org.slf4j.LoggerFactory.getLogger(TelegramFacade.class);

    • @perpetualgod5038
      @perpetualgod5038 4 ปีที่แล้ว +2

      Почему-то я не вижу коммент, на который вы мне пишите, поэтому отвечу тут.
      "Perpetual God , а у вас была ошибка в FillingProfileHandle­r(setName , setAge и т.д.)?"
      Да, снова пришлось писать в ручную сеттеры. Я не понимаю, почему у автора видео аннотации работают, возможно, нужно что-то дополнительно скачать

    • @blackview2404
      @blackview2404 3 ปีที่แล้ว

      @@perpetualgod5038 , благодарочка . та же фигня была, а теперь все блестит-сверкает :)

    • @M.Darsky
      @M.Darsky 2 ปีที่แล้ว

      @@perpetualgod5038 у него библиотека lombok стоит (упоминал его вначале ролика), таким образом код типа сокращается. сам не пользую ломбок, и вам не рекомендую. а в обучающих видео он вообще противопоказан, так как кроме путаницы ничего не даёт,)

  • @assasinvm
    @assasinvm 4 ปีที่แล้ว +1

    А можно выложить все файлы ? У меня одни ошибки из за не тех библиотек

    • @perpetualgod5038
      @perpetualgod5038 4 ปีที่แล้ว

      Они выложены, находятся в разных ветках

    • @КостянПацанский-к3й
      @КостянПацанский-к3й 4 ปีที่แล้ว

      @@perpetualgod5038 как их найти? непонятно

    • @Taktweider
      @Taktweider 3 ปีที่แล้ว

      Шпаргалка по Telegraf 4.4.0: telegra.ph/TELEGRAM-BOTS-21221-07-15 // Там же его TH-cam канал

  • @ekimosik
    @ekimosik 3 ปีที่แล้ว

    Спасибо за видео! Пытаюсь запилить нечто похожее. Мой бот использует такую же структуру и фреймворки, но томкат падает с NPE. В итоге долго разбирался, пока не увидел, что нужно подцепить @Autowired к конструкторам. Вопрос: почему у тебя код работает на данном этапе без Autowired?

    • @M.Darsky
      @M.Darsky 2 ปีที่แล้ว +1

      видимо, старая версия спринга у вас была. а в новых @Autowired можно опускать, да не только в конструкторах, а и в полях, если нет неоднозначности. но код в разы хуже читается, лучше этим маразмом не страдать. сам @Override всегда пишу даже, чего и вам советую,))

  • @assasinvm
    @assasinvm 4 ปีที่แล้ว +1

    Проект не работает : ngrok error- 504 404 405

    • @СергейВячеслаев
      @СергейВячеслаев  4 ปีที่แล้ว +1

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

    • @assasinvm
      @assasinvm 4 ปีที่แล้ว +1

      @@СергейВячеслаев Спасибо ! (не зарегистрировал вебхук)

  • @ЕвгенийЗубов-м2ф
    @ЕвгенийЗубов-м2ф 4 ปีที่แล้ว

    немного оффтоп вопрос. У меня ngrok закрывается сразу же после открытия. У кого-то есть подобная проблема? Как бороться?

    • @СергейВячеслаев
      @СергейВячеслаев  4 ปีที่แล้ว +1

      Привет) попробуй запустить сначала cmd.exe если в виндах, то есть терминал. В нем перейти в папку где лежит ngrok.exe и далее уже в ней запустить ngrok http 5000 или другой нужный порт

    • @ЕвгенийЗубов-м2ф
      @ЕвгенийЗубов-м2ф 4 ปีที่แล้ว

      @@СергейВячеслаев спасибо, так работает

  • @postaek117
    @postaek117 3 ปีที่แล้ว

    А разве в бесплатной версии есть spring initializer ?

    • @fairecr6084
      @fairecr6084 3 ปีที่แล้ว

      start.spring.io/
      В extended версии idea просто обращается сюда, поэтому разницы особой нет

    • @postaek117
      @postaek117 3 ปีที่แล้ว

      @@fairecr6084 ну ладно, спасибо

  • @gradleshade
    @gradleshade 4 ปีที่แล้ว +1

    Ошибка 404, с чем может быть связано?

    • @ПавелБуров-в2р
      @ПавелБуров-в2р 4 ปีที่แล้ว

      +1 Расскажи, пожалуйста с чем связана ошибка:
      org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException: Error sending message: [404] Not Found
      И еще: В классе "BotConfig" IDEA выдает предупреждение: Spring Boot Configuration Annotation Processor not configured
      Подскажи, пожалуйста, как с этим бороться?

    • @ПавелБуров-в2р
      @ПавелБуров-в2р 4 ปีที่แล้ว +1

      Методом проб и ошибок разобрался. Причина ошибки: Я закомментировал строки:
      private DefaultBotOptions.ProxyType proxyType;
      private String proxyHost;
      private int proxyPort;
      Комменты убрал, всё заработало.
      Сергей, объясните, пожалуйста, почему не работает без этих строк, если единственные строки, где встречаются эти переменные, у меня тоже закомментированы:
      // options.setProxyHost(proxyHost);
      // options.setProxyPort(proxyPort);
      // options.setProxyType(proxyType);

    • @ПавелБуров-в2р
      @ПавелБуров-в2р 4 ปีที่แล้ว +1

      Ну и мозг совсем взоравлся, когда я снова закомментил первые строки и всё работает. Не быть мне программистом =))

    • @ДенисТерновский-я1ь
      @ДенисТерновский-я1ь 3 ปีที่แล้ว

      @@ПавелБуров-в2р, не разобрались в чем была проблема? выскакивает такая же ошибка, никак не могу с ней справиться(

    • @ПавелБуров-в2р
      @ПавелБуров-в2р 3 ปีที่แล้ว

      К сожалению, нет.

  • @artsbrand
    @artsbrand 4 ปีที่แล้ว

    спасибо! я только думал тебе написать

  • @Андрей-ь2к4й
    @Андрей-ь2к4й 4 ปีที่แล้ว

    А из-за чего весь код проекта не доступен на гите?

  • @alexmeh1919
    @alexmeh1919 4 ปีที่แล้ว +1

    Круть, когда следующий видос?

    • @СергейВячеслаев
      @СергейВячеслаев  4 ปีที่แล้ว +1

      сегодня уже запилил)

    • @laughingcoffin6269
      @laughingcoffin6269 4 ปีที่แล้ว

      @@СергейВячеслаев Здравствуйте, у меня вопрос. Вот вы говорили когда про файл "application.properties" Там где мы указываем:
      server.port
      telegrambot.webHookPath =
      telegrambot.userName =
      telegrambot.botToken =
      что такое нгрок?
      Для прокси инфу где брать?
      И т.д.
      Если не сложно.
      Можно по подробнее указать,откуда брать инфу про порт,прокси и прочее,я только учусь джаве,
      не совсем понимаю что и как.

    • @СергейВячеслаев
      @СергейВячеслаев  4 ปีที่แล้ว

      @@laughingcoffin6269 привет посмотри вводный ролик по ботам, я там рассказываю, ссылка на него в описании под этим видео.

  • @tomozi1
    @tomozi1 4 ปีที่แล้ว

    Спасибо!

  • @ВасилийПетров-л1й
    @ВасилийПетров-л1й 2 ปีที่แล้ว +1

    не сплинг а спринг

  • @ezfootball6246
    @ezfootball6246 3 ปีที่แล้ว

    Хороший урок только есть пару вопросов , для чего ты используешь мапы для кэша а не напрямую кэш Hibernate ? для чего опять же те же мапы для хранения состояния и месаг? а не базу данных

    • @Taktweider
      @Taktweider 3 ปีที่แล้ว

      Шпаргалка по Telegraf 4.4.0: telegra.ph/TELEGRAM-BOTS-21221-07-15 // Там же его TH-cam канал