在日常开发中,Telegram Bot 不仅仅是文字助手,还能成为音乐分享达人。无论是向群组推送每日歌单,还是为用户提供点歌服务,掌握发送音乐文件的方法至关重要。本文将从 API 参数到实际代码,带你一步步实现音乐消息的发送。
一、认识 sendAudio 方法
Telegram Bot API 提供了专门的 sendAudio 方法,用于发送音频文件。它不同于通用的 sendDocument,因为它支持音频特有的属性,如时长、标题、表演者等,在客户端会以音乐播放器的样式展示,体验更佳。核心参数如下:
chat_id:目标聊天 ID,支持整数或字符串(如 @频道用户名)。audio:必填,音频文件,可以是 File ID、HTTP URL 或本地文件(使用 multipart/form-data 上传)。caption:自定义说明文字,最多 1024 字符。duration:音频时长(秒),有助于客户端显示播放进度。title:音频标题,将显示在播放器界面。performer:表演者(艺术家)名称。thumb:封面缩略图,可传图片文件或 URL。
二、准备音频文件
发送音频前,你需要有音频文件。常见来源有:
- 本地文件:直接上传本地 MP3、OGG 等文件,注意 Telegram API 对普通 Bot 有 50MB 的限制(通过 Bot API 下载的文件上限为 20MB)。
- 在线 URL:如果音频已存放在公网可访问的 URL,直接传递 URL 即可,Telegram 服务器会自行下载并发送。
- 已上传的 File ID:若之前发送过该音频,可直接复用 File ID,避免重复上传,实现高效推送。
三、代码实现:Python 示例
使用 python-telegram-bot 库是最快捷的方式。首先安装库:pip install python-telegram-bot
from telegram import Bot
bot = Bot(token="YOUR_BOT_TOKEN")
# 方式1:发送本地文件
with open('song.mp3', 'rb') as audio:
bot.send_audio(
chat_id='@your_channel',
audio=audio,
title='夕阳之歌',
performer='梅艳芳',
caption='经典老歌分享'
)
# 方式2:发送URL音频
bot.send_audio(
chat_id='123456789',
audio='https://example.com/audio.mp3',
duration=240,
title='Example Song',
performer='Example Artist'
)四、代码实现:Node.js 示例
对于 Node.js 开发者,推荐使用 node-telegram-bot-api。安装:npm install node-telegram-bot-api
const TelegramBot = require('node-telegram-bot-api');
const bot = new TelegramBot('YOUR_BOT_TOKEN', {polling: true});
// 发送URL音频
bot.sendAudio(chatId, 'https://example.com/audio.mp3', {
title: 'Summer Breeze',
performer: 'Unknown',
duration: 210
}).then(() => console.log('Sent!'));
// 发送本地文件
bot.sendAudio(chatId, require('fs').createReadStream('song.mp3'), {
title: 'Local Song',
performer: 'Me'
});注意:使用本地文件时,库会自动使用 multipart 上传,无需额外处理。
五、高级技巧:设置音频封面与元数据
为了让音乐消息更吸引人,建议设置专辑封面和完整元数据。使用 thumb 参数传入封面图片,还可以利用 reply_markup 添加内联按钮,让用户播放或跳转。例如:
bot.send_audio(
chat_id,
audio='https://example.com/audio.mp3',
thumb='https://example.com/cover.jpg',
title='My Song',
performer='Singer',
reply_markup=InlineKeyboardMarkup([[
InlineKeyboardButton('🎵 在播放器打开', url='https://music.example.com')]])
)六、常见问题与解决
- 音频文件过大? 使用 Telegram 对普通 Bot 的限制是 50MB,超出需使用自建 Bot API Server 或考虑剪辑。
- 发送 URL 时超时? 确保音频 URL 可公开访问,且服务器能稳定下载。
- 如何获取 File ID? 发送后返回的消息对象中会包含音频的
file_id,留存以便后续复用。 - 音频格式支持? 常见 MP3、OGG、M4A 均可,但不支持 DRM 保护的文件。
总结
通过 Telegram Bot 发送音乐文件并不复杂,掌握 sendAudio 方法及关键参数,就能轻松实现音乐分享功能。结合内联键盘和元数据设置,还能打造个性化体验。希望本文能帮助你在 Bot 开发路上更进一步,快去试试吧!