vysheng/tg
GitHub: vysheng/tg
Telegram 的命令行界面客户端,让用户在终端中完成消息收发、群聊管理、多媒体传输和加密聊天等操作。
Stars: 7127 | Forks: 1750
## Telegram messenger CLI [](https://travis-ci.org/vysheng/tg)
[Telegram](http://telegram.org)的命令行界面。使用 readline 接口。
### API、协议文档
Telegram API 文档可在此处获取:http://core.telegram.org/api
MTproto 协议文档可在此处获取:http://core.telegram.org/mtproto
### 升级到 1.0 版本
首先,二进制文件现在位于 ./bin 文件夹中,名为 telegram-cli。请注意不要使用旧的二进制文件。
其次,配置文件夹现在是 ${HOME}/.telegram-cli
第三,数据库与旧版本不兼容,因此您需要重新登录。
第四,在 peer_name 中,'#' 被替换为 '@'。(如果两个 peer 同名,在追加 '#%d' 时则不受此限制)。
### 安装
克隆 GitHub 仓库
```
git clone --recursive https://github.com/vysheng/tg.git && cd tg
```
### Python 支持
Python 支持目前仅限于 Python 2.7 或 Python 3.1+。其他版本可能可用,但未经测试。
#### Linux 和 BSDs
安装库:readline、openssl 以及(如果您想使用配置)libconfig、liblua、python 和 libjansson。
如果您不想使用它们,请分别传入选项 --disable-libconfig、--disable-liblua、--disable-python 和 --disable-json。
在 Ubuntu/Debian 上使用:
```
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make
```
在 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
```
在 Fedora 上:
```
sudo dnf install lua-devel openssl-devel libconfig-devel readline-devel libevent-devel libjansson-devel python-devel
```
在 Archlinux 上:
```
yaourt -S telegram-cli-git
```
在 FreeBSD 上:
```
pkg install libconfig libexecinfo lua52 python
```
在 OpenBSD 上:
```
pkg_add libconfig libexecinfo lua python
```
在 openSUSE 上:
```
sudo zypper in lua-devel libconfig-devel readline-devel libevent-devel libjansson-devel python-devel libopenssl-devel
```
然后,
```
./configure
make
```
#### 在 Linux 上的其他安装方法
在 Gentoo 上:使用提供的 ebuild。
在 Arch 上:https://aur.archlinux.org/packages/telegram-cli-git
#### Mac OS X
客户端依赖于 [readline 库](http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html) 和 [libconfig](http://www.hyperrealm.com/libconfig/),这些库默认未包含在 OS X 中。您必须手动安装这些库。
如果使用 [Homebrew](http://brew.sh/):
```
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
```
感谢 [@jfontan](https://github.com/vysheng/tg/issues/3#issuecomment-28293731) 提供此解决方案。
如果使用 [MacPorts](https://www.macports.org):
```
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
```
安装以下 ports:
* devel/libconfig
* devel/libexecinfo
* lang/lua52
然后构建:
```
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
```
#### 其他 UNIX
如果您能在其他 UNIX 系统上成功运行它,请告诉我。
### 联系方式
如果您想提问,可以写信到我的 telegram 或 github(或两者兼有)。要通过 telegram 联系我,您应该使用 import_card 方法,并传入参数 000653bf:0738ca5d:5521fbac:29246815:a27d0cda
### 用法
```
bin/telegram-cli -k
```
默认情况下,公钥存储在同一文件夹的 tg-server.pub 或 /etc/telegram-cli/server.pub 中。如果没有,请指定其所在位置:
```
bin/telegram-cli -k tg-server.pub
```
客户端支持 TAB 补全和命令历史记录。
Peer 指的是联系人或对话的名称,可以通过 TAB 补全来访问。
对于用户联系人,peer 名称是 Name <下划线> Lastname,其中所有空格都替换为下划线。
对于聊天,它是其标题,所有空格都替换为下划线。
对于加密聊天,它是 <感叹号> <下划线> Name <下划线> Lastname,所有空格都替换为下划线。
如果两个或多个 peer 同名,则会在名称后追加 <井号>数字。(例如 A_B、A_B#1、A_B#2 等)
### 支持的命令
#### 消息
* **msg** \ Text - 向此 peer 发送消息
* **fwd** \ \ - 将消息转发给用户。您可以在启动客户端时加上 -N 来查看消息编号
* **chat_with_peer** \ - 开始与该 peer 的一对一聊天会话。使用 /exit 或 /quit 结束此模式。
* **add_contact** \ \ \ - 尝试通过手机号将联系人添加到联系人列表
* **rename_contact** \ \ \ - 尝试重命名联系人。如果您有另一台设备,将会发生冲突
* **mark_read** \ - 将与 peer 接收的所有消息标记为已读
* **delete_msg** \ - 删除消息(不过并没有彻底删除)
* **restore_msg** \ - 恢复已删除的消息。对加密聊天不可用。仅在删除后的一小段时间内(我认为是一小时)可用
#### 多媒体
* **send_photo** \ \ - 向 peer 发送照片
* **send_video** \ \ - 向 peer 发送视频
* **send_text** \ \ - 以纯文本消息形式发送文本文件
* **load_photo**/load_video/load_video_thumb/load_audio/load_document/load_document_thumb \ - 加载照片/视频/音频/文档到下载目录
* **view_photo**/view_video/view_video_thumb/view_audio/view_document/view_document_thumb \ - 加载照片/视频到下载目录并启动系统默认查看器
* **fwd_media** \ - 在您的消息中发送多媒体。使用此选项可防止共享多媒体作者的信息(不过,虽然可以通过多媒体本身确定 user_id,但无法获取该用户的 access_hash)
* **set_profile_photo** \ - 设置用户头像。照片应为正方形,否则服务器将裁剪中心位置最大的正方形区域
#### 群聊选项
* **chat_info** \ - 打印有关聊天的信息
* **chat_add_user** \ \ - 将用户添加到聊天中
* **chat_del_user** \ \ - 从聊天中移除用户
* **rename_chat** \ \
* **create_group_chat** \ \ \ \ ... - 与用户创建群聊,使用 chat_add_user 添加更多用户
* **chat_set_photo** \ \ - 设置群聊照片。限制与个人资料照片相同。
#### 搜索
* **search** \ pattern - 在与 peer 的消息中搜索 pattern
* **global_search** pattern - 在所有消息中搜索 pattern
#### 加密聊天
* **create_secret_chat** \ - 与此用户创建加密聊天
* **visualize_key** \ - 打印加密密钥的可视化图像。您应该将其与您的伙伴的密钥进行比较
* **set_ttl** \ \ - 为加密聊天设置 ttl。尽管客户端会忽略它,但另一端的客户端可以利用它
* **accept_secret_chat** \ - 手动接受加密聊天(仅在使用 -E 参数启动时有用)
#### 统计和各种信息
* **user_info** \ - 打印有关用户的信息
* **history** \ [limit] - 打印历史记录(并将其标记为已读)。默认 limit = 40
* **dialog_list** - 打印有关您的对话的信息
* **contact_list** - 打印有关您的联系人列表中用户的信息
* **suggested_contacts** - 打印您有最多共同好友的联系人信息
* **stats** - 仅用于调试
* **show_license** - 打印 GPLv2 的内容
* **help** - 打印此帮助信息
* **get_self** - 获取我们自己的用户信息
#### 名片
* **export_card** - 打印您的“名片”,任何人随后都可以使用它来导入您的联系人
* **import_card** \ - 通过名片获取用户。之后您就可以给他写信了。
#### 其他
* **quit** - 退出
* **safe_quit** - 等待所有查询结束后退出
标签:MTProto, rizin, Telegram, 即时通讯, 安全测试工具, 客户端加密, 逆向工具