This elixir library binds telegram's TDLib, allowing you to interact with Telegram as a full-fledged client (not as a bot!). It ships :
- Telegram's tdlib, licensed under the Boost Software License 1.0 (BSL-1.0)
- oott123's tdlib-json-cli, licensed under the GNU Affero General Public License v3.0 (AGPL-3.0)
Most of the interactions with this project are done via the ExTDLib
module. Any
structure used to interact with TDLib is defined under either ExTDLib.Object
or
ExTDLib.Method
. You can create as many session as you want, but note that each
of them launch a new instance of tdlib-json-cli via a
port.
Add the following to your mix.exs
:
def deps do
[
{:ex_tdlib, "~> 0.0.4"},
{:tdlib_json_cli, git: "https://github.com/oott123/tdlib-json-cli", branch: "nightly", submodules: true, app: false, compile: false}
]
end
Run mix deps.get
and after go to deps/tdlib_json_cli
and fix CMakeLists.txt
.
Remove set(CMAKE_EXE_LINKER_FLAGS " -static")
and set target_link_libraries(tdlib_json_cli Td::TdJsonStatic)
Note that compiling this project will compile Telegram's TDLib (C++) itself, it's going to take a while and needs some depends. You can get more info here: tdlib-json-cli repo
This library does not need configuration, however, the following options are available :
# Disable automatic handling of authentification and directly forward the
# incoming messages to the client
config :ex_tdlib, disable_handling: false
# Override default path of the telegram-json-cli binary
config :ex_tdlib, backend_binary: "/path/to/my/binary"
A simple example can be found at
https://github.com/prtngn/ex_telegram.
Please refer to the ExTDLib
module for proper documentation.