Update voice bot functionality and clean up project structure
- Added voice message handling capabilities, including saving and deleting audio messages via callback queries. - Refactored audio record management in the database to remove unnecessary fields and streamline operations. - Introduced new keyboard options for voice interactions in the bot. - Updated `.gitignore` to include voice user files for better project organization. - Removed obsolete voice bot handler files to simplify the codebase.
This commit is contained in:
@@ -1,6 +1,16 @@
|
||||
import html
|
||||
import traceback
|
||||
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
from aiogram import Router, F
|
||||
from aiogram.types import CallbackQuery
|
||||
|
||||
from helper_bot.handlers.voice.constants import CALLBACK_SAVE, CALLBACK_DELETE
|
||||
from helper_bot.handlers.voice.services import AudioFileService
|
||||
from logs.custom_logger import logger
|
||||
|
||||
from aiogram import Router
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.types import CallbackQuery
|
||||
@@ -185,3 +195,60 @@ async def change_page(
|
||||
message_id=call.message.message_id,
|
||||
reply_markup=keyboard
|
||||
)
|
||||
|
||||
|
||||
@callback_router.callback_query(F.data == CALLBACK_SAVE)
|
||||
async def save_voice_message(
|
||||
call: CallbackQuery,
|
||||
bot_db: MagicData("bot_db")
|
||||
):
|
||||
try:
|
||||
# Создаем сервис для работы с аудио файлами
|
||||
audio_service = AudioFileService(bot_db)
|
||||
|
||||
# Получаем ID пользователя из базы
|
||||
user_id = bot_db.get_user_id_by_message_id_for_voice_bot(call.message.message_id)
|
||||
|
||||
# Генерируем имя файла
|
||||
file_name = audio_service.generate_file_name(user_id)
|
||||
|
||||
# Собираем инфо о сообщении
|
||||
time_UTC = int(time.time())
|
||||
date_added = datetime.fromtimestamp(time_UTC)
|
||||
|
||||
# Сохраняем в базу данных
|
||||
audio_service.save_audio_file(file_name, user_id, date_added)
|
||||
|
||||
# Скачиваем и сохраняем файл
|
||||
await audio_service.download_and_save_audio(call.bot, call.message.message_id, file_name)
|
||||
|
||||
# Удаляем сообщение из предложки
|
||||
await call.bot.delete_message(
|
||||
chat_id=bot_db.settings['Telegram']['group_for_posts'],
|
||||
message_id=call.message.message_id
|
||||
)
|
||||
|
||||
await call.answer(text='Сохранено!', cache_time=3)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при сохранении голосового сообщения: {e}")
|
||||
await call.answer(text='Ошибка при сохранении!', cache_time=3)
|
||||
|
||||
|
||||
@callback_router.callback_query(F.data == CALLBACK_DELETE)
|
||||
async def delete_voice_message(
|
||||
call: CallbackQuery,
|
||||
bot_db: MagicData("bot_db")
|
||||
):
|
||||
try:
|
||||
# Удаляем сообщение из предложки
|
||||
await call.bot.delete_message(
|
||||
chat_id=bot_db.settings['Telegram']['group_for_posts'],
|
||||
message_id=call.message.message_id
|
||||
)
|
||||
|
||||
await call.answer(text='Удалено!', cache_time=3)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при удалении голосового сообщения: {e}")
|
||||
await call.answer(text='Ошибка при удалении!', cache_time=3)
|
||||
|
||||
Reference in New Issue
Block a user