Command-line interface for Telegram. Uses readline interface.
Documentation for Telegram API is available here: http://core.telegram.org/api
Documentation for MTproto protocol is available here: http://core.telegram.org/mtproto
First of all, the binary is now in ./bin folder and is named telegram-cli. So be careful, not to use old binary.
Second, config folder is now ${HOME}/.telegram-cli
Third, database is not compatible with older versions, so you'll have to login again.
Fourth, in peer_name '#' are substitued to '@'. (Not applied to appending of '#%d' in case of two peers having same name).
Clone GitHub Repository
git clone --recursive https://github.com/vysheng/tg.git && cd tg
Python support is currently limited to Python 2.7 or Python 3.1+. Other versions may work but are not tested.
Install libs: readline, openssl and (if you want to use config) libconfig, liblua, python and libjansson. If you do not want to use them pass options --disable-libconfig, --disable-liblua, --disable-python and --disable-json respectively.
On Ubuntu/Debian use:
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make
On gentoo:
sudo emerge -av sys-libs/readline dev-libs/libconfig dev-libs/openssl dev-lang/lua dev-libs/libevent dev-libs/jansson dev-lang/python
On Fedora:
sudo dnf install lua-devel openssl-devel libconfig-devel readline-devel libevent-devel libjansson-devel python-devel
On Archlinux:
yaourt -S telegram-cli-git
On FreeBSD:
pkg install libconfig libexecinfo lua52 python
On OpenBSD:
pkg_add libconfig libexecinfo lua python
On openSUSE:
sudo zypper in lua-devel libconfig-devel readline-devel libevent-devel libjansson-devel python-devel libopenssl-devel
Then,
./configure
make
On Gentoo: use ebuild provided.
On Arch: https://aur.archlinux.org/packages/telegram-cli-git
The client depends on readline library and libconfig, which are not included in OS X by default. You have to install these libraries manually.
If using Homebrew:
brew install libconfig readline lua python libevent jansson
export CFLAGS="-I/usr/local/include -I/usr/local/Cellar/readline/6.3.8/include"
export LDFLAGS="-L/usr/local/lib -L/usr/local/Cellar/readline/6.3.8/lib"
./configure && make
Thanks to @jfontan for this solution.
If using MacPorts:
sudo port install libconfig-hr
sudo port install readline
sudo port install lua51
sudo port install python34
sudo port install libevent
export CFLAGS="-I/usr/local/include -I/opt/local/include -I/opt/local/include/lua-5.1"
export LDFLAGS="-L/usr/local/lib -L/opt/local/lib -L/opt/local/lib/lua-5.1"
./configure && make
Install these ports:
Then build:
env CC=clang CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib LUA=/usr/local/bin/lua52 LUA_INCLUDE=-I/usr/local/include/lua52 LUA_LIB=-llua-5.2 ./configure
make
If you manage to launch it on other UNIX, please let me know.
If you would like to ask a question, you can write to my telegram or to the github (or both). To contact me via telegram, you should use import_card method with argument 000653bf:0738ca5d:5521fbac:29246815:a27d0cda
bin/telegram-cli -k <public-server-key>
By default, the public key is stored in tg-server.pub in the same folder or in /etc/telegram-cli/server.pub. If not, specify where to find it:
bin/telegram-cli -k tg-server.pub
Client support TAB completion and command history.
Peer refers to the name of the contact or dialog and can be accessed by TAB completion. For user contacts peer name is Name Lastname with all spaces changed to underscores. For chats it is it's title with all spaces changed to underscores For encrypted chats it is <Exсlamation mark> Name Lastname with all spaces changed to underscores.
If two or more peers have same name, number is appended to the name. (for example A_B, A_B#1, A_B#2 and so on)