A Java Wrapper for TDLib/TDLight
Go to file
Andrea Cavalli 4d77c73e95 Add logOutAsync and loadChatListMainAsync 2024-03-21 00:56:40 +01:00
.github/workflows Fix github actions workflow 2023-05-11 01:15:59 +02:00
.media Update README 2021-10-01 19:41:24 +02:00
bom Update tdlib 2024-03-21 00:34:56 +01:00
example Add logOutAsync and loadChatListMainAsync 2024-03-21 00:56:40 +01:00
tdlight-java Add logOutAsync and loadChatListMainAsync 2024-03-21 00:56:40 +01:00
.editorconfig Code cleanup 2021-10-22 12:54:28 +02:00
.gitignore Add test numbers 2023-05-14 23:05:30 +02:00
.gitmodules Move to github actions 2020-12-29 23:38:50 +01:00
JTDLIB_LICENSE Rewrite ReadMe 2020-08-20 12:18:04 +02:00
LICENSE Added missing license 2018-11-20 18:51:11 +01:00
README.md Add MacOS arm64 2024-02-22 01:32:11 +01:00
jitpack.yml Code cleanup 2021-10-22 12:54:28 +02:00
pom.xml Update dependencies and TDLight 2023-11-05 17:22:17 +01:00

README.md

TDLight logo

TDLight Java

Complete Bot and Userbot Telegram library written in Java, based on TDLib

Maven package Release JProfiler

💻 Supported platforms

Java versions: from Java 17 to Java 21+ (Java 8 to 16 is supported if you use the following dependency classifier: jdk8)

Operating systems: Linux, Windows, MacOS

CPU architectures:

  • amd64 (Linux, Windows, MacOS)
  • armhf (Linux)
  • arm64 (Linux, MacOS)
  • ppc64el (Linux)
  • riscv64 (linux)

📚 Required libraries

Install OpenSSL on macOS

You must install openssl@3 using the brew package manager , then link openssl to /usr/local/opt/openssl

If you don't know how to do this, type the following commands in your terminal:

brew install openssl@3
ln -sf /usr/local/Cellar/openssl@3/3.0.0 /usr/local/opt/openssl

📚 How to use the library

Setting up the library using Maven

If you are using Maven, edit your pom.xml file as below:


<project>
	<repositories>

		<!-- Add the following repository -->
		<repository>
			<id>mchv</id>
			<name>MCHV Apache Maven Packages</name>
			<url>https://mvn.mchv.eu/repository/mchv/</url>
		</repository>

	</repositories>

	<dependencyManagement>
		<dependencies>
			
			<!-- Add the following dependency -->
			<dependency>
				<groupId>it.tdlight</groupId>
				<artifactId>tdlight-java-bom</artifactId>
				<version>VERSION</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>

		<!-- Add the following dependencies -->
		<dependency>
			<groupId>it.tdlight</groupId>
			<artifactId>tdlight-java</artifactId>
			<!-- Java 8 is supported if you use the following dependency classifier: <classifier>jdk8</classifier> -->
			<!-- don't specify the version here -->
		</dependency>
		<!-- Example linux amd64 (GNU GCC) ssl1 natives -->
		<dependency>
			<groupId>it.tdlight</groupId>
			<artifactId>tdlight-natives</artifactId>
			<classifier>linux_amd64_gnu_ssl1</classifier>
			<!-- don't specify the version here -->
		</dependency>
		<!-- Example windows amd64 natives -->
		<dependency>
			<groupId>it.tdlight</groupId>
			<artifactId>tdlight-natives</artifactId>
			<classifier>windows_amd64</classifier>
			<!-- don't specify the version here -->
		</dependency>
		<!-- ... -->
		<!-- Include other native classifiers, for example linux_amd64_ssl3, macos_amd64, ... -->

	</dependencies>
</project>

Replace VERSION with the latest release version, you can find it here.

Setting up the library using Gradle

If you are using Gradle, add the following lines into your build.gradle file

repositories {
	maven { url "https://mvn.mchv.eu/repository/mchv/" }
}
dependencies {
	// import the BOM
	implementation platform('it.tdlight:tdlight-java-bom:VERSION')

	// do not specify the versions on the dependencies below!
	implementation group: 'it.tdlight', name: 'tdlight-java' // Java 8 is supported if you use the following dependency classifier: `jdk8`
	implementation group: 'it.tdlight', name: 'tdlight-natives', classifier: 'linux_amd64_gnu_ssl1'
	// Include other native classifiers, for example linux_amd64_clang_ssl3, macos_amd64, ... -->
}

Replace VERSION with the latest release version, you can find it here.

⚒ Native dependencies

To use TDLight Java you need to include the native libraries, by specifying one of the following classifier for each tdlight-natives dependency:

  • linux_amd64_clang_ssl3
  • linux_amd64_gnu_ssl1
  • linux_amd64_gnu_ssl3
  • linux_arm64_clang_ssl3
  • linux_arm64_gnu_ssl1
  • linux_arm64_gnu_ssl3
  • linux_armhf_gnu_ssl1
  • linux_armhf_gnu_ssl3
  • linux_ppc64el_gnu_ssl3
  • linux_riscv64_gnu_ssl3
  • windows_amd64
  • macos_arm64
  • macos_amd64

Advanced: If you want to use a different precompiled native, please set the java property it.tdlight.native.workdir. (Please note that you must build this, you can't put random precompiled tdlib binaries found on the internet)

Usage

An example on how to use TDLight Java can be found here: Example.java

Advanced usage

If you want to disable the automatic runtime shutdown hook, you should set the property it.tdlight.enableShutdownHooks to false

TDLight methods documentation

TdApi JavaDoc

TDLight extended features

TDLight has some extended features compared to TDLib, that you can see on the TDLight official repository.

About

License

TDLight is licensed by Andrea Cavalli andrea@cavallium.it under the terms of the GNU Lesser General Public License 3

Libraries licenses

JTDLib is licensed by Ernesto Castellotti erny.castell@gmail.com under the terms of the GNU Lesser General Public License 3

TDLib is licensed by Aliaksei Levin levlam@telegram.org and Arseny Smirnov arseny30@gmail.com under the terms of the Boost Software License

OpenSSL is licensed under the terms of Apache License v2

Zlib is licensed under the terms of Zlib license