|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Приветствую! Хотел переписать своего телеграм бота, написанного на чистой Java, на новый лад с использованием Spring. Для начала решил попробовать написать простейшего бота, который просто отвечает "Hello"! Нашел подходящую библиотеку: https://github.com/rubenlagus/TelegramBots/tree/master/telegrambots-spring-boot-starter Пошёл настраивать xml, получилось так: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Возможно, нахватал лишних зависимостей, так как Spring я только начинаю осваивать, подсмотрел в каком-то проекте на гитхабе. Создаю главный класс: Код: java 1. 2. 3. 4. 5. 6. 7.
И класс бота: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Далее запускаю, в консоли получаю следующий лог: Код: java 1. 2. 3. 4. 5. 6. 7. 8.
После этого бот падает, приложение останавливается, никаких дополнительных ошибок или сообщений нет. Он просто перестает работать, не успев начать. WARNING - классические для бота, написанный не на спринге бот выплевывает их таким же образом, но это не мешает ему работать. Пробовал и с VPN - не помогло. Не знаю, куда копать. Возможно, проблема тут: No active profile set, falling back to default profiles: default ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 14:11 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Какую же глупую ошибку я обнаружил спустя 3 часа. Неверный класс указываю для Код: java 1.
В этом и была проблема. Хотя мне изначально казалось, что мне необходимо передавать в аргументы тот класс, который наследуется от LongPollingBot. А нужен тот, где init(). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 16:36 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Вот прекрасный пример бота под Хероку на этой библиотеке: https://github.com/INFINITE-TECHNOLOGY/DAVID ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 21:29 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Напишите хоть полезного бота. Типа там... ProbeiNomera или ProbeiTelefon. А если нету - то предложить юзеру и внести инфу. Будет такая себе самонаполняющаяся базка. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 18:23 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Zzz79, я тебя умоляю. Тогда все соц-сети надо закрыть. Там же личной инфы столько скольку угрозыску не снилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 18:46 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Подобные базы уже создаются. По крайней мере для Андроид приложений что-то есть. А с государством на его территории конечно я в кошки-мышки играть не буду. Это не моё. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 19:17 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Вот вчера я в перерывах между анализом китайского AWS-кода и чтением спек слушал вот этого перца. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 19:48 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Термин - "работать на дядю" мне непонятен. Поясни что ты понимаешь под этим. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 19:59 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton, это такой эффемизм вопроса: "Ты капиталист или пролетарий?" Стандартный ответом может быть: "Мелкобуржуазный пролетарий" ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 20:02 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Стартапа точно нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 20:26 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Работа. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 21:54 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Продолжаю мучаться, пыхтеть и пробовать. Возникла проблема следующего рода. В общем, если я размещаю всю логику в классе, который наследуется от LongPolling: Код: java 1. 2.
то, мой бот прекрасно работает и по определенным запросам сохраняет информацию в базу данных. По другому запросу забирает информацию из БД и возвращает пользователю. Стоить мне всё вынести в отдельный класс (обработку Update), и бот не может достать информацию из БД - он возвращает всегда null. Есть репа для обращения к БД: Код: java 1. 2. 3.
Есть сам класс-сущность, которую добавляю в БД (с геттерами/сеттерами/конструкторами): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
В главный класс внедряю репу: Код: java 1. 2.
Ну сохраняю и достаю примерно так: Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Так всё работает. Бот отвечает на запросы и корректно добавляет/забирает в/из БД. Пробую перенести все эти методы в другой класс: Код: java 1. 2. 3. 4. 5. 6.
И при попытке сохранить в БД или достать из нее, я получаю NPE. Ошибки о том, что я не могу подключиться к БД, я не получаю. Таблица в БД на месте. Да и не знаю, как проверить, подключается ли он вообще к БД. При этом обычные команды работают, если не обращаться к БД. Где я свернул не туда? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 22:42 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Дружище. NPE происходит в конкретной строке. В стектрейсе видно. Подсвети ее в твоих сорцах. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 22:46 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton Дружище. NPE происходит в конкретной строке. В стектрейсе видно. Подсвети ее в твоих сорцах. Я понимаю что в конкретной (лог забыл приложить), я сисаутами заплевал консоль и все корректно, до момента обращения к репозиторию. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Т.е. при попытке достать игру из БД падает тут: Код: java 1.
При попытке сохранить в БД падает тут: Код: java 1.
Т.е. при заходе в два метода, которые работают с БД через репу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 22:55 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Что такое главный класс? Вот эта штука предположительно не инициализировалась. Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 23:02 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton Что такое главный класс? Вот эта штука предположительно не инициализировалась. Код: java 1. 2.
Здесь у меня главный тот, который наследуется от LongPolling и получает апдейты, т.е. вот этот: Код: java 1. 2.
Да, скорее всего репозиторий не инициализируется. Выходит спринг не может внедрить зависимость из-за того, что я через new создаю объект класса UpdatesReceiver и вызываю на нем метод. Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 23:10 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Сложно понять по этим огрызкам что из себя представляет твоё приложение. Попробуй так Код: java 1. 2. 3. 4.
Или так Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 23:18 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton, Получилось так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Я создавал UpdatesReceiver, которому переадресую Update и, в котором обращаюсь далее к репе, через new. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 23:22 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Zzz79 репозиторий нужно пометить анотацией репозиторий @Repository тогда @Autowired будет работать Можно и не помечать. Можно в конфигурационном классе указать где лежать интерфейсы репозитория. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
:-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 12:41 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Zzz79 mad_nazgul пропущено... Можно и не помечать. Можно в конфигурационном классе указать где лежать интерфейсы репозитория. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
:-) я думаю для проекта автора это будет overhead ,достаточно простой анотации чтобы инициализация прошла успешно Вполне, но узнать что-то новое и попробовать это, всегда полезно :) Возник вопрос про контроллер. Как я могу его "красиво" использовать без веб составляющей? У меня нет url и соответсвующих маппингов, типа такого: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Я глубоко ещё не копал про контроллер и маппинги, но тут условно при запросе url с /main на конце я попаду в этот метод и верну соответсвующую модель. А если рассмотреть мой проект, у меня есть условно этот UpdatesReceiver. Могу я к нему добавить маппинги, но чтобы маппинг связывался с сообщением пользователя? Т.е. примерно так: Код: java 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 20:03 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
"Странного" захотелось? Что такое "сообщение " в твоём проекте? JMS? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 20:15 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton, Обычное пользовательское сообщение в чат, которое приходит от телеграм бота. Просто репозиторий есть, модель есть, а контроллера нет, вот я и подумал, что и его тоже как-нибудь надо реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 20:22 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
miroooha mayton, Обычное пользовательское сообщение в чат, которое приходит от телеграм бота. Просто репозиторий есть, модель есть, а контроллера нет, вот я и подумал, что и его тоже как-нибудь надо реализовать. Смотри. Я могу просто подсказать тебе фреймворк который в декларативном стиле (тыже хочешь декларативности) роутит сообщения. Любого типа. И не обязательно примитивы. Фреймворк называется Apache Camel https://camel.apache.org/docs/ Это - вершина MQ-процессинга. Если тебе нужно построить свой Crew Dragon на месседжах то бери его не прогадаешь. В нем есть примерно 2 approaches для достижения такой конфигурации. Один с использованием XML routes. Другой с динамическими роутами которые можно как-то на Java кодить. Мы использовали только первый вариант. Вот конфигурация для твоего случая. У тебя "Привет" должен быть свойством объекта-месседжа. https://camel.apache.org/components/latest/eips/message-router.html Но это все красиво летает реально при очень большом проекте с сложной бизнес-логикой и я не уверен что здесь телеграмный бот подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 22:53 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
mayton, Я вот еще вариант нашел, как раз того, чего я примерно хотел. https://habr.com/ru/post/335490/ Только сложновато для меня, а тупо копипастить не хочу. Наверное, проще убрать вообще контроллер и сделать обычную обработку в обычном java коде без привязки к MVC архитектуре. Но сущность (model) оставлю, как и репозиторий. Вот такой вот обрубок MV без C получится. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 00:19 |
|
Не получается поднять бота на Spring Boot
|
|||
---|---|---|---|
#18+
Вот есть 2 задачи. Первое - это сделать бота. И второе - сделать бота "странным образом". Я-бы на твоем месте просто делал бота. В этом есть какая-то философская идея а также следование принципам KISS/YAGNI. Согласен? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 08:55 |
|
|
start [/forum/topic.php?fid=59&msg=39967552&tid=2120769]: |
0ms |
get settings: |
22ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
495ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 616ms |
0 / 0 |