欢迎访问宙启技术站
智能推送

如何使用Python将telegram聊天记录保存到本地

发布时间:2023-12-18 02:04:44

使用Python将Telegram聊天记录保存到本地可以通过Telegram API与Python的requests模块进行操作。以下是一种实现方法,包括使用例子。

首先,确保已经安装了Python最新版本以及requests模块。然后,需要获取Telegram的API token。可以通过以下步骤获得:

1. 打开Telegram,并搜索 @BotFather

2. 进入@BotFather的聊天页面,点击 "Start" 按钮。

3. 在聊天框中,输入 "/newbot" 创建一个新的Bot。

4. 按照提示,输入您想为机器人设置的名字和用户名。

5. BotFather将返回一个API token,保存好该 token,稍后会用到。

下面是一个保存Telegram聊天记录的Python代码示例:

import requests
import json

def save_chat_history(api_token, chat_id, output_file):
    url = f"https://api.telegram.org/bot{api_token}/getChatHistory"
    
    # 设置请求参数
    params = {
        "chat_id": chat_id,
        "limit": 100,  # 每次最多获取100条消息
    }

    messages = []
    offset_id = 0
    
    while True:
        # 发送HTTP GET请求,获取聊天记录
        response = requests.get(url, params=params)
        data = response.json()

        # 检查是否出现错误
        if not data["ok"]:
            print("Error while getting chat history")
            return

        # 解析响应数据
        result = data["result"]
        messages.extend(result["messages"])
        
        if result["messages"]:
            # 更新偏移ID,以便获取下一批消息
            offset_id = result["messages"][-1]["message_id"]
            # 更新请求参数
            params["offset_id"] = offset_id
        else:
            # 聊天记录已经获取完毕
            break

    # 将聊天记录保存到文件
    with open(output_file, "w", encoding="utf-8") as f:
        json.dump(messages, f, ensure_ascii=False, indent=4)

# 设置API token、聊天ID和输出文件名
api_token = "YOUR_API_TOKEN"
chat_id = "YOUR_CHAT_ID"
output_file = "chat_history.json"

# 调用函数保存聊天记录
save_chat_history(api_token, chat_id, output_file)

步骤解释:

1. 导入所需的模块:requests模块用于发送请求,json模块用于解析和保存数据。

2. 定义一个名为save_chat_history的函数,该函数接受API token、聊天ID和输出文件名作为参数。

3. 使用提供的API token和聊天ID构建请求URL。

4. 初始化一个空列表messages来保存聊天记录。

5. 在一个循环中,通过GET请求发送请求并获取聊天记录。每次最多获取100条消息。

6. 检查是否有错误发生,如果有则打印错误消息并返回。

7. 解析响应数据并将消息添加到messages列表中。

8. 更新偏移ID以获取下一批消息,如果消息已经全部获取完毕,则退出循环。

9. 将messages列表保存到指定的输出文件中。

10. 设置API token、聊天ID和输出文件名。

11. 调用save_chat_history函数并传递所需参数以保存聊天记录。

使用例子:

假设我们已经获取到了有效的API token和聊天ID,并且希望将聊天记录保存到名为chat_history.json的文件中。可以这样使用上述代码:

api_token = "YOUR_API_TOKEN"
chat_id = "YOUR_CHAT_ID"
output_file = "chat_history.json"

save_chat_history(api_token, chat_id, output_file)

运行上述代码后,会向Telegram API发送请求并将聊天记录保存到指定的文件中。聊天记录保存为JSON格式,可以轻松地进行解析和处理。

请注意,由于隐私等原因,API token和聊天ID的获得和使用可能会受到一些限制和规范。请务必遵循相关的规定和使用API token的适用条件。

希望以上内容对您有所帮助!