如何下载 Telegram 群组的聊天记录?

2024-04-05

我想下载 Telegram 公共群组中发布的聊天记录(所有消息)。我怎样才能用Python做到这一点?

我在API中找到了这个方法https://core.telegram.org/method/messages.getHistory https://core.telegram.org/method/messages.getHistory我认为这看起来像是我正在尝试做的事情。但我实际上该如何称呼它呢?他们使用的 MTproto 协议似乎没有 python 示例。

我也查看了Bot API,但它似乎没有下载消息的方法。


您可以使用Telethon https://github.com/LonamiWebs/Telethon。 Telegram API 相当复杂,通过 telethon,您可以在很短的时间内开始使用 telegram API,而无需任何有关 API 的预先知识。

pip install telethon

然后注册您的应用程序(摘自 telethon):



                  
  

链接是:https://my.telegram.org/ https://my.telegram.org/

然后获取群组的消息历史记录(假设您有群组 ID):

chat_id = YOUR_CHAT_ID
api_id=YOUR_API_ID
api_hash = 'YOUR_API_HASH'

from telethon import TelegramClient
from telethon.tl.types.input_peer_chat import InputPeerChat

client = TelegramClient('session_id', api_id=api_id, api_hash=api_hash)
client.connect()
chat = InputPeerChat(chat_id)

total_count, messages, senders = client.get_message_history(
                        chat, limit=10)

for msg in reversed(messages):
    # Format the message content
    if getattr(msg, 'media', None):
        content = '<{}> {}'.format(  # The media may or may not have a caption
        msg.media.__class__.__name__,
        getattr(msg.media, 'caption', ''))
    elif hasattr(msg, 'message'):
        content = msg.message
    elif hasattr(msg, 'action'):
        content = str(msg.action)
    else:
        # Unknown message, simply print its class name
        content = msg.__class__.__name__

    text = '[{}:{}] (ID={}) {}: {} type: {}'.format(
            msg.date.hour, msg.date.minute, msg.id, "no name",
            content)
    print (text)

该示例取自并简化自电视马拉松的例子 https://github.com/LonamiWebs/Telethon/blob/0e38ab4/telethon_examples/interactive_telegram_client.py.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何下载 Telegram 群组的聊天记录? 的相关文章

随机推荐

  • UIView drawHierarchy 创建黑色图像

    我正在尝试转换我的习惯UIView into UIImage使用核心图形 但有时它会变成黑色 我的整个UIImage看起来像黑色图像 我注意到如果我的身高UIView无论生成的宽度是多少 都超过 4096UIImage会变黑 注1 我的习惯
  • VB6 内存限制

    我目前正在支持一个在多台服务器上运行的 VB6 应用程序 我们正在替换该应用程序 但这是一个缓慢的过程 谁能告诉我VB6进程可以寻址的最大内存量是多少 我们正在使用多种操作系统 Windows Server 2003 32位 Windows
  • 将文件内容存储在数据库中

    我正在制作一个模型 其中我有一个FileField 我想将文件内容存储在数据库列中 而不是文件路径中 有什么建议么 无视那些反对者 如果您想完全控制内容 请将文件放入数据库的 blob 字段中 我通常还将文件名保留在单独的字段中 以便我可以
  • 如何为任何 liquibase 格式的 sql 指定 validchecksum?

    我遇到了 liquibase 的问题 因此 我在其中一个变更集中的 sql 命令中犯了一个错误 现在 每当我尝试升级部署时 升级都会由于校验和错误而失败 所以我想做 validCheckSum ANY 解决方法 但遇到了这个不起作用的问题
  • 为浮点类型重载运算符%

    我试图重载运算符 因为你不能在双精度类型上使用模数 float a 5 0 float b 5 0 a a b not allowed 我试图用这种函数重载运算符 template lt gt MyClass MyClass
  • 为什么 Ruby 的 1000 个哈希键和值对的数组总是按特定顺序排列?

    假设有一个包含 1000 个哈希值的数组 其中的对如下 id gt 1 name gt something created at gt 2010 08 18 当我使用循环打印出这 1000 条记录时 按理说 散列的键 值对顺序无法保证 但打
  • 如何从 django 图像字段到 PIL 图像并返回?

    给定 django 图像字段 如何创建 PIL 图像 反之亦然 简单的问题 但很难谷歌 我将使用 django imagekit 的处理器来旋转已存储为模型属性的图像 edit In 41 m image 1 class Out 41 dj
  • Keras RGB 转灰度

    我想要一个关于在 Keras 中将输入 RGB 图像转换为灰度的最佳方法的规范答案 这个答案 https stackoverflow com questions 43033739 how to convert images color sp
  • 此代码中出现 HFValidationError 的原因是什么?如何解决此错误?

    我在 Chaquopy android studio 项目中的 python 代码 import torch as tc from transformers import GPT2Tokenizer GPT2Model def genera
  • Vue 和 Jest 单元测试组件

    我是新来的Vue js 我从单元测试开始Jest 我不知道从哪里开始以及如何开始 我有这段 Vue 代码 我想使用 Jest 进行测试 任何提示或想法我都会非常感激 我读到我应该使用浅安装 from Vue 测试实用程序避免组件测试过程中出
  • CSS 旋转并定位到页面左下角

    我试图将 div 放置在窗口的左下角 以便它始终卡在那里 但它应该包含从下向上阅读的文本 如图所示 pic 1 https i stack imgur com k4PGN jpg 我尝试过这种样式 ms transform rotate 2
  • 解释awk命令

    今天我在网上搜索一个命令来打印模式后的下两行 我遇到了一个我无法理解的 awk 命令 usr xpg4 bin awk PATTERN 2 input 有人可以解释一下吗 See https stackoverflow com a 1791
  • 如何在 echo 调用中运行函数

    这是一个快速但简单的问题 我今天过得很糟糕 不知道该怎么做 我需要做的是这个 我正在检查 url 中的 PMD 如果是这样 请回显
  • 使用curl上传本地目录中的所有文件

    我想上传一个目录中的所有文件 并且我知道如何使用curl上传一个文件 如下所示 curl T local xxx suffix u xxx psw ftp 192 168 1 158 public demon test xxx suffix
  • 有没有一种方法可以编辑符号链接而不先删除它? [复制]

    这个问题在这里已经有答案了 所以我创建了一个符号链接 https en wikipedia org wiki Symbolic link ln s location to link linkname 现在我想更改符号链接链接到的位置 我怎么
  • 如何在打字稿中将 Observable 中存储的值转换为字符串?

    您好 我是 Angular 和 TypeScript 的新手 我需要一个值Observable在字符串的格式中 如何做到这一点 BmxComponent 文件 export class BmxComponent asyncString th
  • 组件加载时如何设置角度垫选择值?

    我使用了有角的材料 角度 材料 7 1 0 mat select box 然后我使用表单控件而不是 ng model 现在的问题是我无法在组件加载时设置值 我需要将第一个值设置为列表中的 mat select box 我尝试过 但我做不到
  • Gradle 不包括 FXML 和图像

    我一直在寻找将 FXML 和图像包含在build gradle以便将它们构建到罐子中 我有看here https stackoverflow com questions 21128652 location is required in ja
  • 比较数据网格中同一行的两个单元格

    使用 C NET 4 5 MS Visual Studio 2012 WPF 你好 刚刚让这段代码终于起作用了 它基本上是通过数据网格进行迭代来进行行的 请注意 他可能会冒犯所有 WPF 奇才 public IEnumerable
  • 如何下载 Telegram 群组的聊天记录?

    我想下载 Telegram 公共群组中发布的聊天记录 所有消息 我怎样才能用Python做到这一点 我在API中找到了这个方法https core telegram org method messages getHistory https