kenorb-contrib / tg

`telegram-cli` for Telegram IM
https://github.com/telegramdesktop/tdesktop
GNU General Public License v2.0
382 stars 52 forks source link
cli linux-shell telegram telegram-api

Telegram messenger CLI

Command-line interface for Telegram. Uses readline interface. It is client implementation of TGL library.

Note: This is a fork of telegram-cli.

Build status:

Repository Status
vysheng (main) Build Status
kenorb-contrib Build Status

API, Protocol documentation

Documentation for Telegram API is available here: http://core.telegram.org/api

Documentation for MTproto protocol is available here: http://core.telegram.org/mtproto

Upgrading to version 1.0

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).

Installation

Clone this GitHub repository with --recursive parameter to clone submodules.

 git clone --recursive https://github.com/kenorb-contrib/tg.git && cd tg

Python Support

Python support is currently limited to Python 2.7 or Python 3.1+. Other versions may work but are not tested.

Linux and BSDs

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 libpython3-dev libgcrypt-dev zlib1g-dev lua-lgi make

To build and install the packaege, run:

 dpkg-buildpackage -b
 sudo dpkg -i ../telegram-cli_x.x.x-x_amd64.deb

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 jansson-devel python-devel libgcrypt-devel

On CentOS:

 sudo yum install lua-devel openssl-devel libconfig-devel readline-devel libevent-devel jansson-devel python-devel

On Archlinux:

 yay -S telegram-cli-git

On Milislinux:

 mps kur telegram-cli

On FreeBSD:

 pkg install telegram-cli

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

If you are going to build tg on OpenBSD or FreeBSD, please use gmake instead of make.

Other methods to install on linux

On Gentoo: use ebuild provided.

On Arch: https://aur.archlinux.org/packages/telegram-cli-git

Mac OS X

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 tap ivoputzer/tg
 brew install tg

or manually:

 brew install libconfig readline lua python libevent jansson
 export READLINEPATH=$(brew --prefix readline)
 export OPENSSLPATH=$(brew --prefix openssl)
 export CPPFLAGS="-I/usr/local/opt/openssl/include -I$READLINEPATH/include -W"
 export CFLAGS="-I/usr/local/include -I$READLINEPATH/include -I$OPENSSLPATH/include"
 export LDFLAGS="-L/usr/local/lib -L$READLINEPATH/lib -L$OPENSSLPATH/lib"

 ./configure

You might have to manually pass the location of OpenSSL to configure:

$ brew info openssl
openssl: stable 1.0.2e (bottled) [keg-only]
Poured from bottle /usr/local/Cellar/openssl/1.0.2e_1 (465 files, 11.9M)

so in this case the configure should be run as:

 ./configure --with-openssl=/usr/local/Cellar/openssl/1.0.2e_1

in other cases OpenSSL could be found in /usr/local/opt, e.g.:

 ./configure --with-openssl=/usr/local/opt/openssl

If you get a LUA error on Sierra, you can configure without LUA using

 ./configure --disable-liblua

After configuration run build:

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

Docker

The set for dockerizing the app: https://github.com/semenyukdmitry/telegram_cli_docker.

Other UNIX

If you manage to launch it on other UNIX, please let me know.

Contacts

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

Usage

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)

Supported commands

Messaging

Multimedia

Group chat options

Channels

Search

Secret chat

Stats and various info

Card

Other

Troubleshooting