Как отправить аудиофайл через aiogram
import asyncio
import logging
import random
from gtts import gTTS
from aiogram import Bot, Dispatcher, Router
from aiogram.filters import Command
from aiogram.types import Message, KeyboardButton, ReplyKeyboardMarkup, ContentType
from aiogram import types
t = "не дам"
logging.basicConfig(level=logging.INFO)
bot = Bot(token= t)
dp = Dispatcher()
router = Router()
@dp.message(Command("start"))
async def cmd_start(message:Message):
await message.answer("Привет я озвучу текст который ты мне пришлёшь.")
@router.message()
async def mes(message:Message):
a = message.text
language = 'ru'
m = a
record = gTTS(text=m, lang=language, slow=False)
record.save("first.mp3")
await message.reply_audio()
async def main():
dp.include_router(router)
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
Что вставлять в
await message.reply_audio()
Ответы (1 шт):
В метод reply_audio()
передаются все те же параметры, что и в answer_audio()
, только цитируется сообщение с командой.
Существует 3 варианта отправки аудио-файла:
- Указать нахождение вашего файла в вашем проекте
Для этого импортируем класс FSInputFile
из aiogram.types
. Создаём экземпляр класса, указываем путь к файлу и название файла, которое будет отображаться в Telegram (по умолчанию равно изначальному имени файла).
audio_file = FSInputFile("example.mp3", "file_name_in_telegram.mp3")
И затем указываем audio_file
в методе reply_audio()
- Указать URL HTTP путь к вашему файлу
Вариант первый, в методе reply_audio()
сразу указываем URL файла.
await msg.reply_audio(
'https://example.com/file.mp3')
Вариант второй, импортируем класс URLInputFile
из aiogram.types
, также создаём экземпляр и указываем такие же параметры, как на примере выше.
audio_file = URLInputFile(
"https://example.com/file.mp3",
filename="filename.mp3"
)
- Указать id файла, который находится на серверах Telegram (рекомендуется использовать этот способ, согласно документации Telegram)
id файла (обязательно должен быть строкой) нужно будет просто подставить в метод.