telegram-history

TotalClaw 作者 totalclaw

通过 MTProto 用户 API (Telethon) 获取 Telegram 聊天消息历史记录。当需要从机器人 API 无法访问的任何 Telegram 聊天、群组或论坛主题中读取旧消息时使用。支持按聊天 ID、论坛主题/线程、消息计数、分页和 JSON 输出获取。需要用户使用电话号码 + 2FA 一次性登录。

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~rhlsthrm-telegram-history
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~rhlsthrm-telegram-history/file -o rhlsthrm-telegram-history.md
## 概述(中文)

通过 MTProto 用户 API (Telethon) 获取 Telegram 聊天消息历史记录。当需要从机器人 API 无法访问的任何 Telegram 聊天、群组或论坛主题中读取旧消息时使用。支持按聊天 ID、论坛主题/线程、消息计数、分页和 JSON 输出获取。需要用户使用电话号码 + 2FA 一次性登录。

## 原文

# Telegram History

Fetch message history from any Telegram chat using MTProto (Telethon). The Bot API cannot read chat history — this skill uses the user API instead.

## Setup

### 1. Install Telethon
```bash
pip3 install telethon
```

### 2. Get API credentials
Go to https://my.telegram.org/apps and create an app. Save credentials in the skill directory:
```bash
cat > <skill-dir>/api_credentials.json << 'EOF'
{"api_id": YOUR_API_ID, "api_hash": "YOUR_API_HASH"}
EOF
```

### 3. Login (one-time)

All paths below are relative to the skill directory.

```bash
# Step 1: Request a login code (sent to your Telegram app)
python3 scripts/login.py send +1234567890

# Output: Code sent! phone_code_hash: abc123
# Output: Run: python3 login.py verify +1234567890 <code> abc123

# Step 2: Verify with the code you received
# IMPORTANT: Do NOT send the code via Telegram — Telegram detects shared codes and blocks login.
# Use a file, another messenger, or run the command directly in terminal.
python3 scripts/login.py verify +1234567890 <CODE> <PHONE_CODE_HASH>

# If 2FA is enabled, append your password:
python3 scripts/login.py verify +1234567890 <CODE> <PHONE_CODE_HASH> <2FA_PASSWORD>

# Check login status:
python3 scripts/login.py check +1234567890
```

Session persists in `session/` — no need to re-login after initial setup.

## Usage

```bash
# Fetch last 50 messages from a chat
python3 scripts/tg_history.py history <chat_id> --limit 50

# Fetch from a forum topic
python3 scripts/tg_history.py history <chat_id> --topic <topic_id> --limit 30

# JSON output
python3 scripts/tg_history.py history <chat_id> --json

# Paginate (messages before a specific ID)
python3 scripts/tg_history.py history <chat_id> --offset-id <msg_id> --limit 50
```

## Notes

- Group chat IDs use `-100` prefix (e.g., `-1001234567890`)
- Forum topic IDs = the thread/topic message ID
- Sender names are resolved automatically
- All paths (session, credentials) are resolved relative to the skill directory — works regardless of install location