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

如何使用NodeJS下载最大2GB的Telegram单个视频文件

NodeJS 实现 Telegram 大体积视频单文件下载方案

普通 Bot API 20MB 下载限制是官方 HTTP 接口的内置限制,要突破该限制需直接对接 Telegram 底层 MTProto 协议实现,单文件最高支持 2GB 下载,可满足单视频下载需求。

前置准备

  • 注册 Telegram 开发者账号,获取专属 api_id 和 api_hash,该凭据为开发者访问 MTProto 协议的必要凭证,和普通 Bot Token 权限体系独立
  • 安装 MTProto 协议 NodeJS 实现库:npm install @mtproto/core

核心实现逻辑

  1. 初始化 MTProto 客户端,可选择个人账号或者 Bot 身份登录,使用 Bot 身份登录时需将对应 Bot 加入目标视频所在的频道/群组并开通访问权限
  2. 解析传入的 Telegram 视频链接,提取对应的聊天 ID、消息 ID 两个核心参数
  3. 调用 MTProto 接口查询对应消息的附件信息,获取视频文件的唯一标识、体积、分片信息
  4. 按 512KB 为单位分片并发下载文件块,全部下载完成后合并写入本地磁盘即可

示例核心代码

const { MTProto } = require('@mtproto/core');
const fs = require('fs');

// 初始化客户端
const client = new MTProto({
  api_id: 替换为你的API_ID,
  api_hash: '替换为你的API_HASH',
});

// Bot身份登录逻辑
async function botLogin() {
  await client.call('auth.importBotAuthorization', {
    flags: 0,
    bot_auth_token: '替换为你的BotToken',
  });
}

// 视频下载逻辑
async function downloadVideo(chatId, messageId, savePath) {
  // 查询目标消息的视频文件信息
  const message = await client.call('messages.getMessages', {
    peer: { _: 'peerChannel', channel_id: chatId },
    id: [messageId],
  });
  const video = message.messages[0].media.document;
  
  // 分片下载写入
  const fileSize = video.size;
  const chunkSize = 512 * 1024;
  const writeStream = fs.createWriteStream(savePath);
  
  for (let offset = 0; offset < fileSize; offset += chunkSize) {
    const chunk = await client.call('upload.getFile', {
      location: { _: 'inputDocumentFileLocation', id: video.id, access_hash: video.access_hash, file_reference: video.file_reference },
      offset: offset,
      limit: chunkSize,
    });
    writeStream.write(chunk.bytes);
  }
  
  writeStream.end();
}

可根据需求自行添加分片下载重试、进度打印、错误捕获等附加逻辑
该方案仅可下载你登录身份有权限访问的公开/私有频道内的视频内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:06:10