Ребята, рекомендую в начале посмотреть Вводный ролик по ботам, там рассказывают откуда берутся настройки proxy, что такое ngrok и прочее. Ссылка на вводный ролик в описании к этому видео.
на 15ой минуте вы рассказываете про файл message.properties. Могли бы вы подсказать, можно ли в данном файле использовать сложные текстовые блоки с форматированием при помощи HTML?
ой зря ты int использовал) Теперь idшники людей превышают максимальное допустимое значение для int'а. Для тех ребят кто собирается делать по его образцу, используйте сразу Long или String
Спасибо за видео! Смотрю его после создания своего бота. Чуть доработаю и сниму видос о нём с обзором кода.. через пару-тройку недель. Кому интересно как сделать бота на Java чуть по другому и проще - заходите.
У меня три вопроса : 1. Можно как отключить реакцию на нажатие кнопки после того как пользователь перешел к следующему вопросу, т.к любое нажатие на любую из кнопок вносит полный хаос. Я понимаю, что можно понаставить проверок. Но может есть простое решение отключить их действие после перехода к следующему пункту? 2. Я заметил, что если в коде что-то идет не так, т.е. просто не был отправлен ответ, а пользователь что-то продолжает писать. И эти все сообщения скапливаются в каком то буфере. Т.к. при перезапуске программы они все вываливаются разом. Можно как-то чистить это буфер? Или надо обязательно хоть что то отправлять на каждое сообщение? 3. У тебя в коде все работает в одном потоке. А проблем не было с работой бота, когда его юзают несколько пользователей? Я думал, что для ботов надо обязательно создавать много поточное приложение. Ты в РЖД боте тоже все в одном потоке кодишь? Я не пойму как они разруливают между собой доступ к объектам?
Всё конечно замечательно, вот только слово в названии "пишем" совсем не соответствует видео и вводит в заблуждение. Суть видео "я написал бота, смотрите как я это сделал", никакого объяснения с чего начать, что импортировать, такого даже близко нет, просто куски кода и рассказы в стиле "ну вот тут я написал так-то так-то".
@@dervil читаем Telegram Api, Spring Framework, методологию SOLID, учим стандарт Java SE 8, используем код данного человека как методические указания или базовый шаблон бизнес логики для бота. В предыдущем уроке есть в принципе описание всего, есть свободный доступ к репозиторию, есть ссылки на уроки по спрингу
Столкнулся со следующей проблемой: {"ok":false,"error_code":401,"description":"Unauthorized"}. Решение заключается в использовании одного из 4х возможных портов: 443, 80, 88, 8443 при создании webhook через ngrok вместо любого другого (к примеру 5000, который показан в видео). Надеюсь, кому-нибудь поможет.
@@maxrus6173 Я имел в виду что технически _ допускается в названиях, но, да, по стандарту переменные нужно именовать через camelCase. _обычно используют для переменных с цифр. Допустим _1HourDelay и т.д
В ngrok'e ошибка: { "timestamp": "2020-08-21T09:28:13.595+00:00", "status": 404, "error": "Not Found", "message": "", "path": "/" } с чем может быть связана?
@@СергейВячеслаев Зарегистрирован, гугл ничего не дает, похоже проблема в спринге\webhookcontroller'e - в консоли ngrok'a постоянно: POST / 404, если остановить сервер то POST / 502 Bad Gateway
@@kattaris посмотри настройки прокси, убери их, сейчас вроде телеграм разблокировали. Посмотри что в логах выдает спринг. Больше ничего сказать не могу, уже давно не открывал проект - сейчас занимаюсь другим.
привет сергей, посмотрел видео про состояния бота и мне показалось не очень понятным, я не понимаю как ты додумался написать такого сложного бота. Сколько ты программируешь на java?
Украсть код и сделать под себя тоже надо у меть))) плюс раз это выпускной проект - значит и руководитель был, который подсказывал что и как))) а сказки типа я сам это все написал только сказки😂😂😂
насчета log - у меня тоже аннотация не сработала, написал вручную: private static final Logger log = org.slf4j.LoggerFactory.getLogger(TelegramFacade.class);
Почему-то я не вижу коммент, на который вы мне пишите, поэтому отвечу тут. "Perpetual God , а у вас была ошибка в FillingProfileHandler(setName , setAge и т.д.)?" Да, снова пришлось писать в ручную сеттеры. Я не понимаю, почему у автора видео аннотации работают, возможно, нужно что-то дополнительно скачать
@@perpetualgod5038 у него библиотека lombok стоит (упоминал его вначале ролика), таким образом код типа сокращается. сам не пользую ломбок, и вам не рекомендую. а в обучающих видео он вообще противопоказан, так как кроме путаницы ничего не даёт,)
Спасибо за видео! Пытаюсь запилить нечто похожее. Мой бот использует такую же структуру и фреймворки, но томкат падает с NPE. В итоге долго разбирался, пока не увидел, что нужно подцепить @Autowired к конструкторам. Вопрос: почему у тебя код работает на данном этапе без Autowired?
видимо, старая версия спринга у вас была. а в новых @Autowired можно опускать, да не только в конструкторах, а и в полях, если нет неоднозначности. но код в разы хуже читается, лучше этим маразмом не страдать. сам @Override всегда пишу даже, чего и вам советую,))
Привет, сейчас не могу сказать почему у тебя такая ошибка, давно не запускал, возможно были внесены какие то изменения, или ты не зарегистрировал вебхук через апи телеграма, в вводном видео есть про ето. Сейчас очень занят другим.
Привет) попробуй запустить сначала cmd.exe если в виндах, то есть терминал. В нем перейти в папку где лежит ngrok.exe и далее уже в ней запустить ngrok http 5000 или другой нужный порт
+1 Расскажи, пожалуйста с чем связана ошибка: org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException: Error sending message: [404] Not Found И еще: В классе "BotConfig" IDEA выдает предупреждение: Spring Boot Configuration Annotation Processor not configured Подскажи, пожалуйста, как с этим бороться?
Методом проб и ошибок разобрался. Причина ошибки: Я закомментировал строки: private DefaultBotOptions.ProxyType proxyType; private String proxyHost; private int proxyPort; Комменты убрал, всё заработало. Сергей, объясните, пожалуйста, почему не работает без этих строк, если единственные строки, где встречаются эти переменные, у меня тоже закомментированы: // options.setProxyHost(proxyHost); // options.setProxyPort(proxyPort); // options.setProxyType(proxyType);
@@СергейВячеслаев Здравствуйте, у меня вопрос. Вот вы говорили когда про файл "application.properties" Там где мы указываем: server.port telegrambot.webHookPath = telegrambot.userName = telegrambot.botToken = что такое нгрок? Для прокси инфу где брать? И т.д. Если не сложно. Можно по подробнее указать,откуда брать инфу про порт,прокси и прочее,я только учусь джаве, не совсем понимаю что и как.
Хороший урок только есть пару вопросов , для чего ты используешь мапы для кэша а не напрямую кэш Hibernate ? для чего опять же те же мапы для хранения состояния и месаг? а не базу данных
Ребята, рекомендую в начале посмотреть Вводный ролик по ботам, там рассказывают откуда берутся настройки proxy, что такое ngrok и прочее. Ссылка на вводный ролик в описании к этому видео.
на 15ой минуте вы рассказываете про файл message.properties. Могли бы вы подсказать, можно ли в данном файле использовать сложные текстовые блоки с форматированием при помощи HTML?
ой зря ты int использовал) Теперь idшники людей превышают максимальное допустимое значение для int'а. Для тех ребят кто собирается делать по его образцу, используйте сразу Long или String
Спасибо за видео! Смотрю его после создания своего бота.
Чуть доработаю и сниму видос о нём с обзором кода.. через пару-тройку недель.
Кому интересно как сделать бота на Java чуть по другому и проще - заходите.
Спасибо, очень круто все обьяснил! Снимай еще)
Сергей, непонятно каким образом будет очищаться кеш? Что будет если у приложения огромный поток пользователей для которых постоянно генерируется кеш?
Автору огромнейшее спасибо за подробное объяснение
спасибо! замечательный материал, хотелось бы больше ваших видео)))
Огонь, давай продолжай, интересно бот для магазина.
спасибо, в свободное время записываю)
@@СергейВячеслаев в проекте представленным вами возникают ошибки ngrok-a :404,405,503
привет! что если одним из полей профайла было фото, как/где бы тогда обрабатывался апдейт? поменялась бы как-то логика с учетом состояний?
Разобрался. Спасибо за видео!
У меня три вопроса :
1. Можно как отключить реакцию на нажатие кнопки после того как пользователь перешел к следующему вопросу, т.к любое нажатие на любую из кнопок вносит полный хаос. Я понимаю, что можно понаставить проверок. Но может есть простое решение отключить их действие после перехода к следующему пункту?
2. Я заметил, что если в коде что-то идет не так, т.е. просто не был отправлен ответ, а пользователь что-то продолжает писать. И эти все сообщения скапливаются в каком то буфере.
Т.к. при перезапуске программы они все вываливаются разом. Можно как-то чистить это буфер? Или надо обязательно хоть что то отправлять на каждое сообщение?
3. У тебя в коде все работает в одном потоке. А проблем не было с работой бота, когда его юзают несколько пользователей? Я думал, что для ботов надо обязательно создавать много поточное приложение. Ты в РЖД боте тоже все в одном потоке кодишь? Я не пойму как они разруливают между собой доступ к объектам?
Всё конечно замечательно, вот только слово в названии "пишем" совсем не соответствует видео и вводит в заблуждение. Суть видео "я написал бота, смотрите как я это сделал", никакого объяснения с чего начать, что импортировать, такого даже близко нет, просто куски кода и рассказы в стиле "ну вот тут я написал так-то так-то".
реально, если кто только начал изучать - то вообще нихрена не поймет! Честно - я даже не верю, что он сам это написал.
а ты смотрел предыдущий урок?
@@dervil читаем Telegram Api, Spring Framework, методологию SOLID, учим стандарт Java SE 8, используем код данного человека как методические указания или базовый шаблон бизнес логики для бота. В предыдущем уроке есть в принципе описание всего, есть свободный доступ к репозиторию, есть ссылки на уроки по спрингу
Столкнулся со следующей проблемой: {"ok":false,"error_code":401,"description":"Unauthorized"}. Решение заключается в использовании одного из 4х возможных портов: 443, 80, 88, 8443 при создании webhook через ngrok вместо любого другого (к примеру 5000, который показан в видео). Надеюсь, кому-нибудь поможет.
Такая же проблема(
т.е ты вместо 5000 использовал 443, 80, 88, 8443? у меня ngrok не создает сервер - выдает постоянно 502.
@@ВалентинБадасин Я использую 8443, т.к. в ином случае telegram api выдаёт ошибку 502. С ngrok проблем не было
В гитхабе прикрепленном другой проект, ну меньше классов сразу видно
4:02. 41 строчка. Разве _ допускается в именах переменных у джавы?
Да :)
Александр Галковский camelCase же
@@maxrus6173 Я имел в виду что технически _ допускается в названиях, но, да, по стандарту переменные нужно именовать через camelCase.
_обычно используют для переменных с цифр.
Допустим
_1HourDelay и т.д
Не сталкивался с ошибкой 502 Bad Gateway? Бот мне вообще отвечать не хочет.
Это в ngrok ? Или где выдает. Если ngrok проверь зарегистрирован ли webhook и прописан ли он в настройках ботп
@@СергейВячеслаев хук зарегистрировал, в его статусе указано 502, ngrok тоже выдает эту ошибку. В настройках все прописано.
@@СергейВячеслаев Разобрался, мой косяк, ngrok не на том порту запускал
Была такая же проблема удалил из кода прокси и в настройках удалил всё заработало
В ngrok'e ошибка:
{
"timestamp": "2020-08-21T09:28:13.595+00:00",
"status": 404,
"error": "Not Found",
"message": "",
"path": "/"
}
с чем может быть связана?
Не встречался, зарегистрирован ли вебхук через телеграм апи ? Загугли ngrok 404
@@СергейВячеслаев Зарегистрирован, гугл ничего не дает, похоже проблема в спринге\webhookcontroller'e - в консоли ngrok'a постоянно: POST / 404, если остановить сервер то POST / 502 Bad Gateway
@@kattaris посмотри настройки прокси, убери их, сейчас вроде телеграм разблокировали. Посмотри что в логах выдает спринг. Больше ничего сказать не могу, уже давно не открывал проект - сейчас занимаюсь другим.
Большое спасибо, сделал бота по вашему примеру
привет сергей, посмотрел видео про состояния бота и мне показалось не очень понятным, я не понимаю как ты додумался написать такого сложного бота. Сколько ты программируешь на java?
Привет около года посмотри вводное видео про бота, это был дипломный проект
Украсть код и сделать под себя тоже надо у меть))) плюс раз это выпускной проект - значит и руководитель был, который подсказывал что и как))) а сказки типа я сам это все написал только сказки😂😂😂
Ошибки :
Переменная - log
И ошибки в методах (файл: FillingProfileHandler)
насчета log - у меня тоже аннотация не сработала, написал вручную: private static final Logger log = org.slf4j.LoggerFactory.getLogger(TelegramFacade.class);
Почему-то я не вижу коммент, на который вы мне пишите, поэтому отвечу тут.
"Perpetual God , а у вас была ошибка в FillingProfileHandler(setName , setAge и т.д.)?"
Да, снова пришлось писать в ручную сеттеры. Я не понимаю, почему у автора видео аннотации работают, возможно, нужно что-то дополнительно скачать
@@perpetualgod5038 , благодарочка . та же фигня была, а теперь все блестит-сверкает :)
@@perpetualgod5038 у него библиотека lombok стоит (упоминал его вначале ролика), таким образом код типа сокращается. сам не пользую ломбок, и вам не рекомендую. а в обучающих видео он вообще противопоказан, так как кроме путаницы ничего не даёт,)
А можно выложить все файлы ? У меня одни ошибки из за не тех библиотек
Они выложены, находятся в разных ветках
@@perpetualgod5038 как их найти? непонятно
Шпаргалка по Telegraf 4.4.0: telegra.ph/TELEGRAM-BOTS-21221-07-15 // Там же его TH-cam канал
Спасибо за видео! Пытаюсь запилить нечто похожее. Мой бот использует такую же структуру и фреймворки, но томкат падает с NPE. В итоге долго разбирался, пока не увидел, что нужно подцепить @Autowired к конструкторам. Вопрос: почему у тебя код работает на данном этапе без Autowired?
видимо, старая версия спринга у вас была. а в новых @Autowired можно опускать, да не только в конструкторах, а и в полях, если нет неоднозначности. но код в разы хуже читается, лучше этим маразмом не страдать. сам @Override всегда пишу даже, чего и вам советую,))
Проект не работает : ngrok error- 504 404 405
Привет, сейчас не могу сказать почему у тебя такая ошибка, давно не запускал, возможно были внесены какие то изменения, или ты не зарегистрировал вебхук через апи телеграма, в вводном видео есть про ето. Сейчас очень занят другим.
@@СергейВячеслаев Спасибо ! (не зарегистрировал вебхук)
немного оффтоп вопрос. У меня ngrok закрывается сразу же после открытия. У кого-то есть подобная проблема? Как бороться?
Привет) попробуй запустить сначала cmd.exe если в виндах, то есть терминал. В нем перейти в папку где лежит ngrok.exe и далее уже в ней запустить ngrok http 5000 или другой нужный порт
@@СергейВячеслаев спасибо, так работает
А разве в бесплатной версии есть spring initializer ?
start.spring.io/
В extended версии idea просто обращается сюда, поэтому разницы особой нет
@@fairecr6084 ну ладно, спасибо
Ошибка 404, с чем может быть связано?
+1 Расскажи, пожалуйста с чем связана ошибка:
org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException: Error sending message: [404] Not Found
И еще: В классе "BotConfig" IDEA выдает предупреждение: Spring Boot Configuration Annotation Processor not configured
Подскажи, пожалуйста, как с этим бороться?
Методом проб и ошибок разобрался. Причина ошибки: Я закомментировал строки:
private DefaultBotOptions.ProxyType proxyType;
private String proxyHost;
private int proxyPort;
Комменты убрал, всё заработало.
Сергей, объясните, пожалуйста, почему не работает без этих строк, если единственные строки, где встречаются эти переменные, у меня тоже закомментированы:
// options.setProxyHost(proxyHost);
// options.setProxyPort(proxyPort);
// options.setProxyType(proxyType);
Ну и мозг совсем взоравлся, когда я снова закомментил первые строки и всё работает. Не быть мне программистом =))
@@ПавелБуров-в2р, не разобрались в чем была проблема? выскакивает такая же ошибка, никак не могу с ней справиться(
К сожалению, нет.
спасибо! я только думал тебе написать
А из-за чего весь код проекта не доступен на гите?
Каждый урок есть в своей ветке на гите
Круть, когда следующий видос?
сегодня уже запилил)
@@СергейВячеслаев Здравствуйте, у меня вопрос. Вот вы говорили когда про файл "application.properties" Там где мы указываем:
server.port
telegrambot.webHookPath =
telegrambot.userName =
telegrambot.botToken =
что такое нгрок?
Для прокси инфу где брать?
И т.д.
Если не сложно.
Можно по подробнее указать,откуда брать инфу про порт,прокси и прочее,я только учусь джаве,
не совсем понимаю что и как.
@@laughingcoffin6269 привет посмотри вводный ролик по ботам, я там рассказываю, ссылка на него в описании под этим видео.
Спасибо!
не сплинг а спринг
Хороший урок только есть пару вопросов , для чего ты используешь мапы для кэша а не напрямую кэш Hibernate ? для чего опять же те же мапы для хранения состояния и месаг? а не базу данных
Шпаргалка по Telegraf 4.4.0: telegra.ph/TELEGRAM-BOTS-21221-07-15 // Там же его TH-cam канал