import os
from functions.convert import Converter
from aiogram import types


async def get_audio_messages_func(message: types.Message, logger, bot) -> None:
    """
    Функция выкачивает файл, потом конвертирует его в текст, потом логирует

    :param message: types.Message - объект сообщения
    :param logger: - объект логера
    :param bot: - объект бота
    :return: None
    """
    os.system("rm -rf config")  # удаляю папку с файлами
    os.mkdir("config")  # создаю папку обратно
    # достаю file_id из разнообразных полей
    if message.content_type in ['voice']:
        file_id = message.voice.file_id
    elif message.content_type in ['video']:
        file_id = message.video.file_id
    else:
        file_id = message.video_note.file_id
    file_name = "config/" + str(message.message_id) + '.ogg'  # создаю file_name
    # достаю имя человека
    if message.chat.first_name:
        name = message.chat.first_name
    else:
        name = message.chat.title
    with open(file_name, 'wb') as new_file:  # открываю файл для записи
        file = await bot.get_file(file_id)  # ссылка для скачивая файла
        file_dow = await bot.download_file(file.file_path)  # скачанный файл
        new_file.write(file_dow.getvalue())  # записываю
    converter = Converter(file_name, message)  # запуск конвертора
    message_text = converter.audio_to_text()  # получаю текст из конвертора
    logger.info(f"Чат {name} (ID: {message.chat.id}) обработал файл {file_name}, "
                f"сервисом {converter.service}")  # записываю всё в logger
    await bot.send_message(message.chat.id, message_text, reply_to_message_id=message.message_id)  # отправляю сообщение
