Comments 13
Кстати, а существуют ли клиенты на Java, которые напрямую общаются через MTProto? Например, как pyrogram или telethon? Я пытался что-то такое найти, но нашёл лишь какую-то очень старую библиотеку с устаревшим layer (62, емнип).
Да, в этой статье как раз такой клиент построен :) Т.е. мы собираем нативную библиотеку td_api из официального репозитория telegram, которую после подключаем. В итоге мы можем строить свой полноценный клиент, подключение идет через MTProto, доступно все api. Разве что только на сторонние клиенты telegram может накладывать некоторые ограничения, например, первоначальная регистрация в telegram возможна только в одном из официальных приложений.
Вот тут можно посмотреть инструкции от разработчиков telegram для java.
Есть библиотека kotlogram для 133 layer, для java публично нет
Есть вот такое довольно свежее в разработке нативное для Java решение: https://github.com/Telegram4J/Telegram4J
Гм...
А чем это отличается от использования вполне рабочей библиотеки?
<dependency>
<groupId>it.tdlight</groupId>
<artifactId>tdlight-java</artifactId>
</dependency>
<dependency>
<groupId>it.tdlight</groupId>
<artifactId>tdlight-natives-linux-amd64</artifactId>
</dependency>
Здесь я сделал акцент на реализацию клиента в виде spring-boot-starter и удобство использования в spring-boot проектах, постарался добавить некоторую функциональность с учетом возможностей spring. Ну и хотелось самому иметь возможность оперативно вносить изменения при появлени новой версии библиотеки. Как результат - решил поделиться своим опытом)
tdlight-java - отличный проект!
Как бы и куда бы я не подпихивал эту библиотеку, всегда получаю java.lang.UnsatisfiedLinkError: no tdjni in java.library.path: /Users/andreyka/Library/Java/Extensions:/Library/Java/Extensions:........
При запуске приложения нужно указать jvm-свойство пути до нативных библиотек
-Djava.library.path=/ваш/каталог
. В данном каталоге должна находиться библиотека. У вас java при старте смотрит в дефолтный для mac os каталог /Library/Java/Extensions
Самое интересное если подсунуть в любой из этих катологовUsers/andreyka/Library/Java/Extensions:/Library/Java/Extensions, либа не подхватывается. И с -Djava.library.path она тоже не подхватывалась пока я локально не собрал по инструкции https://tdlib.github.io/td/build.html?language=Java. Только после этого подхватилась либа. Но если то, что я собрал подсунуть в либы , то получаю Can't find class [org/drinkless/tdlib/Client]. Если подсовываю Вашу либу то ок. Из этого делаю вывод, что надо пакет менять при сборке либы, о чем к сожалению и как ни у Вас ни в инструкции не указано
Да, всё верно. Если пакет с классами меняется, то это нужно учесть при сборке tdjni(библиотеки в проекте собраны с учётом этого). В ближайшее время я постараюсь добавить описание в репозиторий. Пока можете воспользоваться этой инструкцией.
Telegram клиент. TDLib и Spring Boot