Go to file
2014-01-30 11:09:16 +05:30
.gitignore Merge BSD-fixed from lwhsu 2013-12-20 17:57:00 +04:00
.travis.yml Fixed travis.yml 2014-01-12 04:56:36 +04:00
ax_lua.m4 Added partial lua support 2014-01-12 04:43:29 +04:00
binlog.c fix memory leak during replaying CODE_binlog_set_chat_title 2014-01-21 18:26:56 +04:00
binlog.h Added chat_with_peer command 2013-12-06 21:14:41 +04:00
binlog.tl Added files for binlog 2013-11-13 04:11:25 +04:00
config.h Added partial lua support 2014-01-12 04:43:29 +04:00
config.h.in Added partial lua support 2014-01-12 04:43:29 +04:00
config.sample fixed binlog problems. Set lock on binlog 2013-11-30 03:15:10 +04:00
configure Added partial lua support 2014-01-12 04:43:29 +04:00
configure.ac fix some autoscan warnings 2014-01-13 17:28:24 +04:00
constants.h Support for layer 11 2013-12-24 04:57:01 +04:00
gen_constants_h.awk Added full support for layer 10 2013-11-15 14:37:14 +04:00
include.h Added GPL-headers to source files 2013-10-23 18:26:17 +04:00
interface.c added delete/restore messages queries 2014-01-24 19:05:41 +04:00
interface.h Added configure script. Some interface fixes 2013-11-10 02:47:19 +04:00
LICENSE Added GPL license text 2013-10-23 18:53:22 +04:00
LICENSE.h Added some fixes required by GPL 2013-10-25 13:28:29 +04:00
loop.c restored _GNU_SOURCE for getline in FreeBSD 2014-01-13 16:58:14 +03:00
loop.h Partial support for encrypted chats. 2013-11-04 21:34:27 +04:00
lua-tg.c Added mark_read to lua functions 2014-01-28 16:40:35 +04:00
lua-tg.h Added partial lua support 2014-01-12 04:43:29 +04:00
main.c remove useless #define _GNU_SOURCE from not using asprintf sources 2014-01-13 17:12:39 +04:00
Makefile Added partial lua support 2014-01-12 04:43:29 +04:00
Makefile.in Added partial lua support 2014-01-12 04:43:29 +04:00
mtproto-client.c Deleted aio.h include 2014-01-27 19:10:02 +04:00
mtproto-client.h do_rand () renamed to secure_random () 2013-12-25 04:44:36 +04:00
mtproto-common.c Merge branch 'master' of github.com:vysheng/tg 2014-01-27 19:10:41 +04:00
mtproto-common.h improve portability by removing rdtsc calls 2014-01-15 19:29:26 +04:00
net.c maybe fixed conn restart 2014-01-27 21:23:58 +04:00
net.h maybe fixed conn restart 2014-01-27 21:23:58 +04:00
no-preview.h Forgot GPL header. 2013-11-05 03:55:41 +04:00
queries.c Merge github.com:vysheng/tg 2014-01-24 19:06:02 +04:00
queries.h added delete/restore messages queries 2014-01-24 19:05:41 +04:00
README.md Added chat_with_peer in commands. Also explained what peer is. 2014-01-30 11:09:16 +05:30
structures.c AES_KEY structure clean up 2014-01-23 19:49:57 +04:00
structures.h structures.h: added del_use 2014-01-11 20:01:01 +04:00
telegram.h Many fixes. 2013-12-02 21:19:08 +04:00
test.lua Added sample lua script 2014-01-12 04:43:56 +04:00
tg.pub Commit parse of many structures (message, chat, photo, etc) 2013-10-14 21:26:25 +04:00
tools.c Added mark_read to lua functions 2014-01-28 16:40:35 +04:00
tools.h Added mark_read to lua functions 2014-01-28 16:40:35 +04:00
tree.h Added partial lua support 2014-01-12 04:43:29 +04:00

Telegram messenger CLI Build Status

Command-line interface for Telegram. Uses readline interface.

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

Installation

Clone GitHub Repository

$ git clone https://github.com/vysheng/tg.git && cd tg

or download and extract zip

$ wget https://github.com/vysheng/tg/archive/master.zip -O tg-master.zip
$ unzip tg-master.zip && cd tg-master

Linux

Install libs: readline 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 On ubuntu use:

$ sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev

On gentoo:

$ sudo emerge -av sys-libs/readline dev-libs/libconfig dev-libs/openssl dev-lang/lua

Default Makefile uses liblua5.2 from ubuntu. If you use different version of liblua or linux you have to run ./configure script or you will get some strange compilation error.

Then

$ ./configure
$ make

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, e.g. using Homebrew.

$ brew install libconfig
$ brew install readline
$ 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

Thanks to @jfontan for this solution.

FreeBSD

Install these ports:

  • devel/libconfig
  • devel/libexecinfo

Then build:

$ env CC=clang CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure
$ make

Other UNIX

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

Usage

./telegram -k <public-server-key>

By default public key is stored in the same folder named tg.pub:

./telegram -k tg.pub

Client support TAB completion and command history.

Peer refers to the name of the contact and can be accessed by TAB completion.

Supported commands

Messaging

  • msg <peer> Text - sends message to this peer
  • fwd <user> <msg-seqno> - forward message to user. You can see message numbers starting client with -N
  • chat_with_peer <peer> starts one on one chat session with this peer. /exit or /quit to end this mode.
  • 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

Multimedia

  • 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
  • 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

Group chat options

  • chat_info <chat> - prints info about chat
  • chat_add_user <chat> <user> - add user to chat
  • chat_del_user <chat> <user> - remove user from chat
  • rename_chat <chat> <new-name>
  • search <peer> pattern - searches pattern in messages with peer
  • global_search pattern - searches pattern in all messages

Secret chat

  • 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

Stats and various info

  • 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
  • show_license - prints contents of GPLv2
  • help - prints this help