Как отправить аудиофайл через 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 шт):

Автор решения: Ben Puls

В метод reply_audio() передаются все те же параметры, что и в answer_audio(), только цитируется сообщение с командой.

Существует 3 варианта отправки аудио-файла:

  1. Указать нахождение вашего файла в вашем проекте

Для этого импортируем класс FSInputFile из aiogram.types. Создаём экземпляр класса, указываем путь к файлу и название файла, которое будет отображаться в Telegram (по умолчанию равно изначальному имени файла).

audio_file = FSInputFile("example.mp3", "file_name_in_telegram.mp3")

И затем указываем audio_file в методе reply_audio()

  1. Указать 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"
)
  1. Указать id файла, который находится на серверах Telegram (рекомендуется использовать этот способ, согласно документации Telegram)

id файла (обязательно должен быть строкой) нужно будет просто подставить в метод.

→ Ссылка