保存电报聊天记录


22

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

有此功能的要求在这里

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

是否可以捕获/保存设备中加载的聊天记录,创建聊天记录的本地备份?

Answers:


2

官方数据导出

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

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

  • 电报支持数据导出
    • Telegram Desktop- 1.3.8或更高版本
    • 适用于Android的电报-4.8.10或更高版本
    • 适用于iOS的电报-4.8.3或更高版本
    • 电报Webapp-尚不可用
    • Windows Phone电报-不知道

您可以向@GDPRbot发出消息以请求导出数据,或者通过应用程序设置(如果已有的话)发出消息。

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

阅读Telegram FAQ导出中完整通知

电报桌面演示

其他选项(来自GitHub)


6

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

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


1
欢迎来到超级用户!在此问答网站上,我们重视答案。仅超链接往往指向一个答案,而实际上并不是一个答案。请编辑您的答案,以使其包含来自链接源的基本元素,例如脚本本身。
Ob1lan 2015年

1
嗨,尝试了脚本。奇迹般有效。但是它不备份媒体吗?还是我做错了什么?

@Junaid不,它目前不备份媒体文件。媒体文件与消息分开。对于每条媒体消息都应发出一个请求。
萨米姆(Samim)

5

我基于@Samim的要点创建了自己的脚本。

它会打印到文件,以便您可以随意保存它,而不是使用SQL数据库。此外,它还具有睡眠功能,因此您可以获取更多对话框的历史记录。仍然受telegram-cli的硬限制100限制。我通过编辑源代码并提高了限制来更改了该限制。


您的脚本可以保存媒体文件和附件吗?

他们只提到媒体类型
吠陀(veved)

您能指导我如何更改限额吗?telegram-cli的代码的哪一部分应该更改?
阿里Nfr

3

答:

无法使用官方应用程序自动备份您的聊天记录,此功能尚未提供

解决方法:

您仍然可以手动进行;在Windows上的官方客户端上测试

  • 打开聊天窗口
  • 单击最后发送/接收的邮件,并保持单击
  • 向上移动鼠标以选择所有消息
  • 右键单击以复制消息
  • 将它们保存到文本文件中,否则

6
感谢您尝试回答我的问题。当您收到大量消息时,此解决方法将花费很长时间。此外,复制和粘贴过程中不包括图像和视频。因此,我不会接受这个答案。
2015年

我所做的工作是聊天几千条消息(分别保存了电报文件夹中的图像和音频)。除非这是手工完成的唯一方法,否则总比没有好;-)
anneblue 2015年

2

我发现了可以通过电报-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. chat_name_that_you_want_to_download
  2. / path / where / you / want / to / store / messages

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

0

如果要将其导出为文本或HTML(如果希望将消息着色)的简单方法。

您可以

  • 登录 telegram-cli
  • 打开您的聊天记录
  • 导出终端内容

就我而言,我使用Konsole,所以我File>> Save output as,我更喜欢HTML。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.