upd: база даних — 5$
Upd: база даних тепер 5$
update November 20, 2022: heroku запускає mini — плани (eco dynos — 1000 dyno-hours за 5$, heroku postgres mini — 0.01$). Також діють спеціальні безкоштовні умови для студентів (в межах 13$ на місяць)
update November 20, 2022: heroku запускає mini — плани (eco dynos — 1000 dyno-hours за 5$, heroku postgres mini — 0.01$). Також діють спеціальні безкоштовні умови для студентів (в межах 13$ на місяць)
Upd: heroku закриває безкоштовні плани, але це все ще крута платформа 🥲
Новина на dou + обговорення + альтернативи в коментарях:
dou.ua/forums/topic/39797
Upd: heroku закриває безкоштовні плани, але це все ще крута платформа 🥲
Новина на dou + обговорення + альтернативи в коментарях:
dou.ua/forums/topic/39797
Ага, але з aws прийдеться трохи понастроювати , а якраз heroku класний тим що мінімум налаштувань треба робити💪 і дуже добре підходив під пет-проекти. Але я так зрозумів там люди зловживали цими безплатними планами, може майнили біткоїн на 100+ акаунтах або що і через це хероку прикрив лавочку🥲
Тут якраз новина про це була на доу:
dou.ua/...elegram&utm_medium=social
Upd: бачу що в коментарях там люди рекомендують схожі платформи
До речі дійсно так, дуже шкода :( наразі не підкажу, бо ще не дізнавався, але також планую шукати якусь безкоштовну альтернативу
Таа, є така штука :) хероку любить здивувати :D, але отакі міграції інстансів або бази без попереджень відбуваються лиш на безкоштовних тарифах для їхньої внутрішньої оптимізації, а так то зазвичай вони попереджають емейлами.
є така можливість core.telegram.org/bots/api#getfile
Тема цікава, і разом з тим там ще є багато цікавих моментів при створенні ботів, але насправді важко все покрити в одній статті.
Додам щодо картинок, в Telegram Bot API з ними дуже зручно працювати, оскільки кожному медіа-файлу телеграм присвоює унікальний ID, і достатньо зберігати лише цей ідентифікатор у базі. Потім при відправці повідомлень необхідно просто передати ID, і фото чи відео буде відправлено користувачу.
Привіт Andrew, з опису виглядає що ви використовуєте конструктор для телеграм ботів(напевне @Manybot). Напишіть мені в телеграмі @tarasvv, я допоможу
Привіт Andrew, дякую за відгук :)
Спробую відповісти
В телеграмі кожен юзер має унікальний ID. Допустимо робимо так, коли перша людина натискає start — ми зберігаємо до її ідентифікатор, коли друга людина натискає /start, тоді ми можемо надіслати першій людині контакт першої
тут є 2 варіанти:
— якщо в людини є @username — то можна відправити прямо цей юзернейм
— якщо немає юзернейму — можна дати посилання на контакт людини використовуючи markdown — [inline mention of a user](tg://user?id=123456789)
детальніше: core.telegram.org/bots/api#markdown-style
Також по ідеї можна попросити людину поділитися своїм контактом використовуючи цей спосіб:
core.telegram.org/...tro#locations-and-numbers
і потім відправити іншій людині контакт використавши API метод:
core.telegram.org/bots/api#sendcontact
Ага, звісно, там до речі Heroku дає вбудовані хороші можливості по інтеграції з GitHub.
Проте також зверніть увагу, в Heroku недавно сталася серйозна хакерська атака якраз через токени GitHub («GitHub-related OAuth security breach») і хакери отримали доступи до великої кількості приватних репозиторіїв і т. д. На даний момент, виглядає що проблеми пов’язані з безпекою поправили, і разом з тим наразі ще працюють над покращеннями:
Я здогадуюся в чому може бути причина, там pom.xml в гілці deployable — він заточений під spring-boot проект, тому відповідно треба буде ще деякі налаштування додати щоб аплікація запустилася.
Тобто щоб виправити необхідно додати налаштування як отут:
prnt.sc/zi9-WjsciPXa
Або можна інший варіант, щоб не робити spring-boot проект, вернути pom до того стану в якому він був перед додаванням spring-boot залежностей.
І після цього додати в pom.xml оцей плагін(той що я описував вище в коментарях)
maven-assembly-plugin
І тоді теж має запрацювати(вчора сам пробував з цим плагіном, і все запрацювало)
Ну в цій статті конкретно суто кроки по деплойменту, там в принципі на будь-якій мові буде плюс-мінус так само 😊. Але по факту там робиться все досить швидко, просто розписав кроки максимально детально, з нюансами які можуть виникнути і т д.
Але порозбиратися є з чим, тут згоден, зате один раз ознайомившись і спробувавши потім буде не проблема задеплоїти будь-який інший java-проект на Heroku, тому думаю стаття має бути корисною.
Дякую, приємно що стаття приносить користь 😊
А щодо помилки, то виглядає так що падає конкретно через цю помилку
2022-06-10T15:58:34.237531+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch
Перевірте добре, чи тут вказано тип web і після цього перезапустіть за допомогою перемикача справа
prnt.sc/RUFX-rMyWSUO
А також в Procfile теж має бути вказано тип web:
web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/*.jar
В загальному
Виглядає так що потрібно додати плагін який дозволить збілдити коректний jar.
1. Якщо ви використовуєте spring-boot, то необхідно додати у pom.xml
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
Детальніше писав про це в статті в секції «Поширені помилки на цьому етапі» → «Помилка „unable to find jar“, „unable to detect main class“ »
Повний приклад з налаштуваннями для деплойменту і повним pom.xml лежить в окремій гілці:
github.com/...egram-bot/tree/deployable
2. Якщо це звичайний java-проект без spring boot
Я спробував запропоновані рішення з stack overflow(з посилання яке ви скинули)
Одна з відповідей допомогла: stackoverflow.com/a/27662742
Потрібно додати в pom.xml наступний плагін(Також верніть увагу на те що потрібно вказати коректний шлях до класу де лежить «main» )
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>org.vladyka.Application</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>
Молодці! Дуже потрібна функція!