# 设置 Witness 机器人

Canonical page: https://phishdestroy.github.io/TgWitness/zh/docs/witness/

让一个独立的进程检查日志，并将签名的检查点发布到您的频道中。

## 两台主机，两把签名密钥

托管 / 收集器**账户 + 日志**

Telegram 会话收集器的签名密钥

只读检查点端点

← 请求签名回答 →

HOST B / WITNESS**验证 + 保留**

固定收集器指纹 独立见证人签名密钥

自有日志 + 机器人令牌

Witness → Telegram 机器人 API →**您的频道 · 带签名的 TGW1 帖子**

Witness 会自行执行校验。收集器的访问权限仅限只读。机器人发布功能使用 Witness 的连接和令牌；Witness 不会获得任何账户会话权限。

03 / 检查点决策示例答案

最后接受时间**120 条记录**`head 9c7d…`

下一个答案**128 条记录**`head a4f2…`

已通过：计数持续增加，签名已验证，密钥匹配。该见证者保留了这一新边界。

所有解答示例均假设存在有效签名和已固定的密钥。此处的哈希值仅为简略示例。仅凭哈希值数量较多，无法证明整个旧前缀均未发生变化；请将导出数据与保留的检查点进行对比。

## 准备一个机器人和一个频道

使用 BotFather 创建一个机器人，并允许其在您控制的频道中发布消息。为 TgWitness 选择一台计算机或服务器。与在收集者服务器上运行第二个进程相比，独立的主机和操作员能提供更强的独立性。

## “扩展功能”中的三个步骤

1. **仅限只读访问。**打开**“Extras”→ 在您的频道中添加一个机器人**，生成见证令牌并保存访问文件。该文件仅允许读取检查点和系统状态，无法访问对话内容或收集器控制功能。
2. **频道和间隔。**输入频道名称以及可从该见证者处访问的收集器地址。保存设置文件。
3. **启动。**将 `witness.json`、`witness-token.txt` 以及在见证主机上创建的 `bot-token.txt` 放在一起。在已安装的项目环境中运行以下命令。

```
python -m tgwitness.witness run --config witness.json --check-config
python -m tgwitness.witness run --config witness.json
```

下载文件不会启动见证程序。请确认频道中已出现第一条带签名的帖子，然后将见证程序的公钥指纹单独保存下来。

## 选择发布频率

每次检查结果的发布都会生成一条定期的外部记录。以五分钟为间隔计算，每个工作区每天约有 288 条发布记录。高级设置还支持在发生变更或出现问题时发布通知、使用代理以及自定义机器人 API 地址。

**该机器人实际上能证明什么？**

该“见证者”会向数据收集方请求一个带签名的检查点，使用预期的密钥对其进行验证，并维护一份独立的带签名日志。它不仅记录成功的验证结果，还会记录缺失的响应和被拒绝的答案。发布仍取决于“见证者”是否正在运行以及能否连接到 Telegram 的机器人 API。

该工具会检查收集器报告的日志状态，但不会独立监视每条 Telegram 消息。如需实现此功能，请添加“受控投递测试”。

## 稍后核查证据

请保留证人日志、频道帖子以及独立保存的指纹数据。[完整的验证流程](https://phishdestroy.github.io/TgWitness/zh/docs/reference/witness/#verify)会将这些数据与收集器生成的签名导出文件进行比对。
