You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python保存Telegram通知信息?无需查看消息是否可行?

可行性分析与实现方案

完全可行。Telegram Bot API允许机器人接收消息时获取消息元数据(无需读取消息文本/媒体内容),并将这些数据存储到指定载体中。

实现步骤

1. 创建Telegram Bot

找@BotFather创建机器人,获取唯一的API_TOKEN。

2. 选择Python Telegram Bot库

推荐用pyTelegramBotAPI(轻量易用),或者python-telegram-bot(功能更全)。安装命令:

pip install pyTelegramBotAPI

3. 编写核心逻辑:提取元数据并存储

以下是用pyTelegramBotAPI实现的示例,仅提取消息元数据(不读取内容),并存储到本地文件或Bot的私有聊天:

示例代码:

import telebot
import datetime

# 替换成你的Bot API Token
API_TOKEN = '你的API_TOKEN'
bot = telebot.TeleBot(API_TOKEN)

# 存储元数据的本地文件路径
STORAGE_FILE = 'message_metadata.txt'
# 可选:存储到Bot的私有聊天(替换成你的用户ID)
STORAGE_CHAT_ID = 123456789

def save_metadata(metadata):
    # 方式1:保存到本地文件
    with open(STORAGE_FILE, 'a', encoding='utf-8') as f:
        f.write(f"{datetime.datetime.now()}: {metadata}\n")
    
    # 方式2:发送到指定聊天存储(比如自己的账号)
    bot.send_message(STORAGE_CHAT_ID, f"新消息元数据:\n{metadata}")

# 监听所有类型的消息(不区分文本/媒体)
@bot.message_handler(func=lambda message: True)
def handle_all_messages(message):
    # 提取元数据:仅获取不需要内容的字段
    metadata = {
        "消息ID": message.message_id,
        "发送者ID": message.from_user.id,
        "聊天ID": message.chat.id,
        "发送时间": datetime.datetime.fromtimestamp(message.date),
        "消息类型": message.content_type
    }
    # 转换为字符串存储
    metadata_str = "\n".join([f"{k}: {v}" for k, v in metadata.items()])
    save_metadata(metadata_str)
    # 无需回复消息,避免打扰用户

if __name__ == '__main__':
    bot.infinity_polling()

4. 选择存储载体

  • 本地文件/数据库:适合长期存储,可后续分析;
  • Telegram私有聊天:方便实时查看,无需额外搭建存储服务;
  • 云存储(如AWS S3、阿里云OSS):适合大规模数据存储(需额外集成SDK)。

注意事项

  • 确保Bot已被添加到目标聊天/群组,且拥有读取消息权限;
  • 若需存储媒体文件的元数据(如图片尺寸、文件大小),可通过message.photo/message.document等字段提取,但无需下载文件内容;
  • 遵守Telegram的API使用规则,避免频繁请求导致限流。

内容的提问来源于stack exchange,提问作者noname

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:48:19