import os from io import BytesIO from functions.convert import Converter from aiogram import types, exceptions async def get_audio_messages_func(message: types.Message, logger, bot, model) -> 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 elif message.content_type in ['video_note']: file_id = message.video_note.file_id elif message.content_type in ['document']: file_id = message.document.file_id elif message.content_type in ['audio']: file_id = message.audio.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: # открываю файл для записи try: file = await bot.get_file(file_id) # ссылка для скачивая файла file_dow = await bot.download_file(file.file_path) # скачанный файл converter = Converter(file_name, message, model) # запуск конвертора message_text = converter.audio_to_text() # получаю текст из конвертора logger.info(f"Чат {name} (ID: {message.chat.id}) обработал файл {file_name}, " f"сервисом {converter.service}") # записываю всё в logger file = BytesIO(message_text['timestamp'].encode('utf-8')) file.name = 'timestamp.txt' await bot.send_document( chat_id=message.chat.id, document=file, caption=f"От компа:\n{message_text['final_text']}" ) new_file.write(file_dow.getvalue()) # записываю except exceptions.FileIsTooBig: await bot.send_message( message.chat.id, "Файл слишком большой, попробуйте расшифровку у нас на сайте. " "На сайте нет ограничений на размер файла. Ссылка на сайт: будет позже" )