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

如何通过Telebot从URL发送音频?空文件问题求助

问题分析与解决方案

问题根源

  1. 代码中DataAudio变量未定义,直接作为文件参数传入导致发送空文件。
  2. 你使用的YouTube音频链接是临时有效期链接(链接中的expire参数显示有效期为1663630447,已过期),且未正确利用Telegram API的URL直接上传能力。

解决方案

方案1:直接传入有效音频URL发送

Telegram的sendAudio接口支持直接传入公网可访问的音频URL,无需本地文件上传,修改代码如下:

import requests

audio_url = "你的有效YouTube音频链接"
bot_token = "你的Bot令牌"
chat_id = "1395609507"

payload = {
    'chat_id': chat_id,
    'title': "jj",
    'performer': 'YouTube',
    'audio': audio_url  # 直接传入音频URL
}   

resp = requests.post(
    f"https://api.telegram.org/bot{bot_token}/sendAudio",
    data=payload
).json() 
print(resp)

方案2:下载音频后再上传

如果需要处理音频或链接有效期短,可先下载音频内容再上传:

import requests

audio_url = "你的有效YouTube音频链接"
bot_token = "你的Bot令牌"
chat_id = "1395609507"

# 下载音频内容
audio_res = requests.get(audio_url)
audio_data = audio_res.content

# 构造文件参数(指定文件名、内容、MIME类型)
files = {'audio': ('audio.webm', audio_data, 'audio/webm')}
payload = {
    'chat_id': chat_id,
    'title': "jj",
    'performer': 'YouTube'
}

resp = requests.post(
    f"https://api.telegram.org/bot{bot_token}/sendAudio",
    data=payload,
    files=files
).json()
print(resp)

注意事项

  • YouTube的临时播放链接有严格有效期,过期后需重新获取有效链接。
  • 若使用sendVoice接口,需确保音频为OGG格式+Opus编码,否则无法正常播放。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:20:29