官方数据导出

官方数据导出

我无法使用 Telegram 保存聊天记录。据我所知,Android、Mac OS X、Windows 和 Linux 上的 Telegram 不向用户提供此选项。这是一项基本功能,这款软件没有它,令人失望和惊讶。

有针对此功能的要求这里

也许有一个解决方法,因为当您向后滚动时,所有历史记录都会加载到设备上。

是否可以捕获/保存设备中的聊天记录,并在本地备份聊天记录?

答案1

官方数据导出

从 2018 年 6 月 23 日至 24 日,Telegram 添加了此选项,作为 GDPR 变更的一部分。

现在您可以请求下载您的所有数据,这样您就可以获取您的聊天记录。

  • Telegram 支持数据导出
    • Telegram 桌面版 - 来自1.3.8或更高
    • Android 版 Telegram - 来自4.8.10或更高
    • iOS 版 Telegram - 来自4.8.3或更高
    • Telegram Webapp-尚未推出
    • Windows Phone 版 Telegram - 不知道

您可以留言@GDPRbot请求导出您的数据,或者从应用程序设置(如果已可用)中导出。

注意:出于安全原因,数据导出不是立即的,因此如果有人控制了您的某个设备,他们将无法立即下载您的所有数据。

阅读Telegram 常见问题解答中的完整通知

Telegram 桌面端演示

其他选项(来自 GitHub)

答案2

tg (telegram-cli) 接受 Lua 脚本。这是我的脚本,它将任意数量的消息保存到 sqlite 数据库中。

https://github.com/psamim/telegram-cli-backup

答案3

我根据@Samim 的脚本创建了自己的脚本要旨

它会打印到文件中,这样您就可以根据需要保存它,而不是使用 SQL 数据库。此外,它还具有睡眠功能,这样您就可以保存更多对话的历史记录。它仍然受到telegram-cli100 个硬限制的限制。我通过编辑源代码并提高限制来改变这一点。

答案4

我找到了一个可以在 telegram-cli 上运行的漂亮的 php 库https://github.com/zyberspace/php-telegram-cli-client

有一个脚本可以下载所有消息和文件。

<?php
require('vendor/autoload.php');
$telegram = new \Zyberspace\Telegram\Cli\Client('unix:///tmp/tg.sck');

$chat = 'chat_name_that_you_want_to_download';

$limit = 50;
$offset = 0;

function save($msg)
{
        $path = '/path/where/you/want/to/store/messages';
        file_put_contents($path . '/' . $msg->id, json_encode($msg));
}

function download($telegram, $msg)
{
        $response = $telegram->exec('load_' . $msg->media->type, $msg->id);
        $msg->media->path = $response->result;
}

while($msgList = $telegram->getHistory($chat, $limit, $offset)) {
        $offset += $limit;
        foreach($msgList as $msg) {
                if (isset($msg->media)) {
                        download($telegram, $msg, $msg->media->type);
                }
                save($msg);
        }
}

您必须在此处更改两个字符串:

  1. 您想要下载的聊天名称
  2. 您想要存储消息的路径

    • 脚本将把每条消息(来自聊天“chat_name_that_you_want_to_download”)作为单独的文件保存在文件夹“/path/where/you/want/to/store/messages”中。
    • 每个文件都包含消息的 json 表示。
    • 对于文件,将有“media->path”表示下载文件的路径。
    • 文件将存储在 telegram-cli 默认文件夹中:~/telegram-cli/downloads

相关内容