2013-12-20 19:00:35 -05:00
## Telegram messenger CLI [![Build Status](https://travis-ci.org/vysheng/tg.png)](https://travis-ci.org/vysheng/tg)
2013-10-24 14:25:37 -04:00
Command-line interface for [Telegram ](http://telegram.org ). Uses readline interface.
### API, Protocol documentation
Documentation for Telegram API is available here: http://core.telegram.org/api
2013-10-25 02:02:29 -04:00
2013-10-24 14:25:37 -04:00
Documentation for MTproto protocol is available here: http://core.telegram.org/mtproto
2014-08-31 15:51:41 -04:00
### 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.
2014-08-31 15:51:57 -04:00
2014-08-31 15:51:41 -04:00
Second, config folder is now ${HOME}/.telegram-cli
2014-08-31 15:51:57 -04:00
2014-08-31 15:51:41 -04:00
Third, database is not compatible with older versions, so you'll have to login again.
2013-10-24 14:25:37 -04:00
### Installation
2013-11-28 14:49:20 -05:00
Clone GitHub Repository
2014-03-05 07:50:49 -05:00
git clone https://github.com/vysheng/tg.git & & cd tg
2014-03-04 06:47:09 -05:00
2013-12-26 11:08:35 -05:00
or download and extract zip
2013-11-28 14:49:20 -05:00
2014-03-05 07:50:49 -05:00
wget https://github.com/vysheng/tg/archive/master.zip -O tg-master.zip
unzip tg-master.zip & & cd tg-master
2014-03-04 06:47:09 -05:00
2014-02-26 19:09:56 -05:00
#### Linux and BSDs
Install libs: readline or libedit, openssl and (if you want to use config) libconfig and liblua.
If you do not want to use them pass options --disable-libconfig and --disable-liblua respectively.
2013-10-24 14:25:37 -04:00
2013-12-23 16:22:44 -05:00
On ubuntu use:
2014-03-04 06:47:09 -05:00
2014-09-03 05:54:51 -04:00
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev
2014-02-26 19:09:56 -05:00
2013-12-23 16:22:44 -05:00
On gentoo:
2014-03-04 06:47:09 -05:00
2014-08-21 17:43:14 -04:00
sudo emerge -av sys-libs/readline dev-libs/libconfig dev-libs/openssl dev-lang/lua dev-libs/libevent
2014-02-02 06:11:29 -05:00
2014-03-04 06:47:09 -05:00
On Fedora:
2014-03-04 16:58:47 -05:00
2014-03-05 07:50:49 -05:00
sudo yum install lua-devel openssl-devel libconfig-devel readline-devel
2014-02-02 06:11:29 -05:00
2014-02-26 19:09:56 -05:00
On FreeBSD:
2014-03-04 16:58:47 -05:00
2014-03-05 07:50:49 -05:00
pkg install libconfig libexecinfo lua52
2014-02-26 19:09:56 -05:00
On OpenBSD:
2014-03-04 16:58:47 -05:00
2014-03-05 07:50:49 -05:00
pkg_add libconfig libexecinfo lua
2014-01-15 07:04:59 -05:00
2014-03-04 06:47:09 -05:00
Then,
2013-11-12 13:15:48 -05:00
2014-03-05 07:50:49 -05:00
./configure
make
2013-11-12 13:15:48 -05:00
#### Mac OS X
The client depends on [readline library ](http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html ) and [libconfig ](http://www.hyperrealm.com/libconfig/ ), which are not included in OS X by default. You have to install these libraries manually, e.g. using [Homebrew ](http://brew.sh/ ).
2014-03-05 07:50:49 -05:00
brew install libconfig
brew install readline
brew install lua
export CFLAGS="-I/usr/local/include -I/usr/local/Cellar/readline/6.2.4/include"
export LDFLAGS="-L/usr/local/lib -L/usr/local/Cellar/readline/6.2.4/lib"
./configure & & make
2014-03-04 06:47:09 -05:00
2013-11-12 13:15:48 -05:00
Thanks to [@jfontan ](https://github.com/vysheng/tg/issues/3#issuecomment-28293731 ) for this solution.
2013-12-18 13:26:29 -05:00
Install these ports:
2013-12-18 13:37:46 -05:00
2013-12-18 13:26:29 -05:00
* devel/libconfig
* devel/libexecinfo
2014-02-18 09:59:18 -05:00
* lang/lua52
2013-12-18 13:26:29 -05:00
2013-12-18 13:37:46 -05:00
Then build:
2014-03-05 07:50:49 -05:00
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
2014-03-04 06:47:09 -05:00
2013-11-12 13:15:48 -05:00
#### Other UNIX
If you manage to launch it on other UNIX, please let me know.
2013-10-25 02:02:29 -04:00
2013-10-24 14:25:37 -04:00
### Usage
2014-08-27 12:15:58 -04:00
./telegram-cli -k < public-server-key >
2013-10-24 14:25:37 -04:00
2014-03-21 11:29:53 -04:00
By default public key is stored in the same folder named tg-server.pub or in /etc/telegram/server.pub, if it's not, specify where to find it:
2013-10-24 14:25:37 -04:00
2014-08-27 12:15:58 -04:00
./telegram-cli -k tg-server.pub
2013-11-22 14:36:37 -05:00
Client support TAB completion and command history.
2014-01-30 00:39:16 -05:00
2014-01-30 08:01:15 -05:00
Peer refers to the name of the contact or dialog and can be accessed by TAB completion.
For user contacts peer name is Name < underscore > Lastname with all spaces changed to underscores.
For chats it is it's title with all spaces changed to underscores
2014-01-30 17:11:17 -05:00
For encrypted chats it is < Exс lamation mark > < underscore > Name < underscore > Lastname with all spaces changed to underscores.
2014-01-30 08:01:15 -05:00
2014-01-30 17:11:17 -05:00
If two or more peers have same name, < sharp > number is appended to the name. (for example A_B, A_B#1, A_B#2 and so on)
2013-10-24 14:25:37 -04:00
2013-11-22 14:51:58 -05:00
### Supported commands
2013-11-22 14:49:59 -05:00
2013-11-22 14:51:58 -05:00
#### Messaging
2013-11-22 14:49:59 -05:00
2013-11-12 13:15:48 -05:00
* **msg** \<peer\> Text - sends message to this peer
2013-11-22 14:49:59 -05:00
* **fwd** \<user\> \<msg-seqno\> - forward message to user. You can see message numbers starting client with -N
2014-01-30 00:39:16 -05:00
* **chat_with_peer** \<peer\> starts one on one chat session with this peer. /exit or /quit to end this mode.
2013-11-22 14:49:59 -05:00
* **add_contact** \<phone-number\> \<first-name\> \<last-name\> - tries to add contact to contact-list by phone
* **rename_contact** \<user\> \<first-name\> \<last-name\> - tries to rename contact. If you have another device it will be a fight
* **mark_read** \<peer\> - mark read all received messages with peer
2013-11-22 14:51:58 -05:00
#### Multimedia
2013-11-22 14:49:59 -05:00
2013-11-12 13:15:48 -05:00
* **send_photo** \<peer\> \<photo-file-name\> - sends photo to peer
* **send_video** \<peer\> \<video-file-name\> - sends video to peer
* **send_text** \<peer\> \<text-file-name> - sends text file as plain messages
2013-11-22 14:49:59 -05:00
* **load_photo**/load_video/load_video_thumb \<msg-seqno\> - loads photo/video to download dir
* **view_photo**/view_video/view_video_thumb \<msg-seqno\> - loads photo/video to download dir and starts system default viewer
2013-11-22 14:51:58 -05:00
#### Group chat options
2013-11-22 14:49:59 -05:00
2013-11-12 13:15:48 -05:00
* **chat_info** \<chat\> - prints info about chat
2013-11-22 03:34:29 -05:00
* **chat_add_user** \<chat\> \<user\> - add user to chat
* **chat_del_user** \<chat\> \<user\> - remove user from chat
2013-11-12 13:15:48 -05:00
* **rename_chat** \<chat\> \<new-name\>
2014-02-25 15:09:59 -05:00
* **create_group_chat** \<user\> \<chat topic\> - creates a groupchat with user, use chat_add_user to add more users
2013-11-22 14:49:59 -05:00
2013-11-22 14:51:58 -05:00
#### Search
2013-11-22 14:49:59 -05:00
2013-11-12 13:15:48 -05:00
* **search** \<peer\> pattern - searches pattern in messages with peer
* **global_search** pattern - searches pattern in all messages
2013-11-22 14:49:59 -05:00
2013-11-22 14:51:58 -05:00
#### Secret chat
2013-11-22 14:49:59 -05:00
2013-11-12 13:15:48 -05:00
* **create_secret_chat** \<user\> - creates secret chat with this user
* **visualize_key** \<secret_chat\> - prints visualization of encryption key. You should compare it to your partner's one
2013-11-22 14:49:59 -05:00
2013-11-22 14:51:58 -05:00
#### Stats and various info
2013-11-22 14:49:59 -05:00
* **user_info** \<user\> - prints info about user
* **history** \<peer\> [limit] - prints history (and marks it as read). Default limit = 40
* **dialog_list** - prints info about your dialogs
* **contact_list** - prints info about users in your contact list
* **suggested_contacts** - print info about contacts, you have max common friends
* **stats** - just for debugging
2013-11-12 13:15:48 -05:00
* **show_license** - prints contents of GPLv2
* **help** - prints this help