Giter Site home page Giter Site logo

incubus / etcli Goto Github PK

View Code? Open in Web Editor NEW

This project forked from altostratous/etcli

2.0 2.0 0.0 74.78 MB

telegram-cli with view count support.

License: GNU General Public License v2.0

Makefile 0.60% M4 4.23% Shell 0.57% C 93.95% Perl 0.32% Lua 0.16% Python 0.09% Awk 0.08%

etcli's Introduction

Telegram messenger CLI Build Status

Command-line interface for Telegram. Uses readline interface.

#Extended Telegram Cli (etcli) This application is based on telegram-cli.

###Added features:

  • now "history" and "get_message" commands return views count for messages as well.
  • now "channel_info" returns about channel (Channel description) as well.

###Common use for channels 1 - channel_join Joins to channel

2 - channel_leave Leaves from channel

3 - history [limit] [offset] Prints messages with this peer (most recent message lower). Also marks messages as read, views are shown as "views" both in json and text.

4 - channel_info Prints info about channel (id, members, admin, description(about), name)

5 - get_message Get message by id, number of views is represented as "views" as well.

###Commands in details based on telegram-cli: accept_secret_chat Accepts secret chat. Only useful with -E option

add_contact Tries to add user to contact list

block_user Blocks user

broadcast + Sends text to several users at once

channel_get_admins [limit=100] [offset=0] Gets channel admins

channel_get_members [limit=100] [offset=0] Gets channel members

channel_info Prints info about channel (id, members, admin, etc.)

channel_invite Invites user to channel

channel_join Joins to channel

channel_kick Kicks user from channel

channel_leave Leaves from channel

channel_list [limit=100] [offset=0] List of last channels

channel_set_about Sets channel about info.

channel_set_admin Sets channel admin. 0 - not admin, 1 - moderator, 2 - editor

channel_set_username Sets channel username info.

channel_set_photo Sets channel photo. Photo will be cropped to square

chat_add_user [msgs-to-forward] Adds user to chat. Sends him last msgs-to-forward message from this chat. Default 100

chat_del_user Deletes user from chat

chat_info Prints info about chat (id, members, admin, etc.)

chat_set_photo Sets chat photo. Photo will be cropped to square

chat_upgrade Upgrades chat to megagroup

chat_with_peer Interface option. All input will be treated as messages to this peer. Type /quit to end this mode

clear Clears all data and exits. For debug.

contact_list Prints contact list

contact_search username Searches user by username

create_channel + Creates channel with users

create_group_chat + Creates group chat with users

create_secret_chat Starts creation of secret chat

del_contact Deletes contact from contact list

delete_msg Deletes message

dialog_list [limit=100] [offset=0] List of last conversations

export_card Prints card that can be imported by another user with import_card method

export_channel_link Prints channel link that can be used to join to channel

export_chat_link Prints chat link that can be used to join to chat

fwd + Forwards message to peer. Forward to secret chats is forbidden

fwd_media Forwards message media to peer. Forward to secret chats is forbidden. Result slightly differs from fwd

get_terms_of_service Prints telegram's terms of service

get_message Get message by id

get_self Get our user info

help [command] Prints this help

history [limit] [offset] Prints messages with this peer (most recent message lower). Also marks messages as read

import_card Gets user by card and prints it name. You can then send messages to him as usual

import_chat_link Joins to chat by link

import_channel_link Joins to channel by link

load_audio Downloads file to downloads dirs. Prints file name after download end

load_channel_photo Downloads file to downloads dirs. Prints file name after download end

load_chat_photo Downloads file to downloads dirs. Prints file name after download end

load_document Downloads file to downloads dirs. Prints file name after download end

load_document_thumb Downloads file to downloads dirs. Prints file name after download end

load_file Downloads file to downloads dirs. Prints file name after download end

load_file_thumb Downloads file to downloads dirs. Prints file name after download end

load_photo Downloads file to downloads dirs. Prints file name after download end

load_user_photo Downloads file to downloads dirs. Prints file name after download end

load_video Downloads file to downloads dirs. Prints file name after download end

load_video_thumb Downloads file to downloads dirs. Prints file name after download end

main_session Sends updates to this connection (or terminal). Useful only with listening socket

mark_read Marks messages with peer as read

msg Sends text message to peer

msg Sends text message to peer with custom kbd

post Sends text message to peer as admin

post_audio Posts audio to peer

post_document Posts document to peer

post_file Sends document to peer

post_location Sends geo location

post_photo [caption] Sends photo to peer

post_text Sends contents of text file as plain text message

post_video [caption] Sends video to peer

quit Quits immediately

rename_channel Renames channel

rename_chat Renames chat

rename_contact Renames contact

reply Sends text reply to message

reply_audio Sends audio to peer

reply_contact Sends contact (not necessary telegram user)

reply_document Sends document to peer

reply_file Sends document to peer

reply_location Sends geo location

reply_photo [caption] Sends photo to peer

reply_video Sends video to peer

resolve_username username Searches user by username

safe_quit Waits for all queries to end, then quits

search [peer] [limit] [from] [to] [offset] pattern Search for pattern in messages from date from to date to (unixtime) in messages with peer (if peer not present, in all messages)

send_audio Sends audio to peer

send_contact Sends contact (not necessary telegram user)

send_document Sends document to peer

send_file Sends document to peer

send_location Sends geo location

send_photo [caption] Sends photo to peer

send_text Sends contents of text file as plain text message

send_typing [status] Sends typing notification. You can supply a custom status (range 0-10): none, typing, cancel, record video, upload video, record audio, upload audio, upload photo, upload document, geo, choose contact.

send_typing_abort Sends typing notification abort

send_video [caption] Sends video to peer

set Sets value of param. Currently available: log_level, debug_verbosity, alarm, msg_num

set_password Sets password

set_profile_name Sets profile name.

set_profile_photo Sets profile photo. Photo will be cropped to square

set_ttl Sets secret chat ttl. Client itself ignores ttl

set_username Sets username.

set_phone_number Changes the phone number of this account

show_license Prints contents of GPL license

start_bot Adds bot to chat

stats For debug purpose

status_online Sets status as online

status_offline Sets status as offline

unblock_user Unblocks user

user_info Prints info about user (id, last online, phone)

version Prints client and library version

view_audio Downloads file to downloads dirs. Then tries to open it with system default action

view_channel_photo Downloads file to downloads dirs. Then tries to open it with system default action

view_chat_photo Downloads file to downloads dirs. Then tries to open it with system default action

view_document Downloads file to downloads dirs. Then tries to open it with system default action

view_document_thumb Downloads file to downloads dirs. Then tries to open it with system default action

view_file Downloads file to downloads dirs. Then tries to open it with system default action

view_file_thumb Downloads file to downloads dirs. Then tries to open it with system default action

view_photo Downloads file to downloads dirs. Then tries to open it with system default action

view_user_photo Downloads file to downloads dirs. Then tries to open it with system default action

view_video Downloads file to downloads dirs. Then tries to open it with system default action

view_video_thumb Downloads file to downloads dirs. Then tries to open it with system default action

view Tries to view message contents

visualize_key Prints visualization of encryption key (first 16 bytes sha1 of it in fact)

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 GitHub Repository

 git clone --recursive https://github.com/vysheng/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 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

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

  • devel/libconfig
  • devel/libexecinfo
  • lang/lua52

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

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

  • 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
  • delete_msg <msg-seqno> - deletes message (not completly, though)
  • restore_msg <msg-seqno> - restores delete message. Impossible for secret chats. Only possible short time (one hour, I think) after deletion

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/load_audio/load_document/load_document_thumb <msg-seqno> - loads photo/video/audio/document to download dir
  • view_photo/view_video/view_video_thumb/view_audio/view_document/view_document_thumb <msg-seqno> - loads photo/video to download dir and starts system default viewer
  • fwd_media <msg-seqno> send media in your message. Use this to prevent sharing info about author of media (though, it is possible to determine user_id from media itself, it is not possible get access_hash of this user)
  • set_profile_photo <photo-file-name> - sets userpic. Photo should be square, or server will cut biggest central square part

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>
  • create_group_chat <chat topic> <user1> <user2> <user3> ... - creates a groupchat with users, use chat_add_user to add more users
  • chat_set_photo <chat> <photo-file-name> - sets group chat photo. Same limits as for profile photos.

Search

  • 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
  • set_ttl <secret_chat> <ttl> - sets ttl to secret chat. Though client does ignore it, client on other end can make use of it
  • accept_secret_chat <secret_chat> - manually accept secret chat (only useful when starting with -E key)

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
  • get_self - get our user info

Card

  • export_card - print your 'card' that anyone can later use to import your contact
  • import_card <card> - gets user by card. You can write messages to him after that.

Other

  • quit - quit
  • safe_quit - wait for all queries to end then quit

etcli's People

Contributors

altostratous avatar incubus avatar mzilot avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.