refactor MediaGroup. Add database
This commit is contained in:
@@ -55,30 +55,19 @@ async def post_for_group(call: CallbackQuery, state: FSMContext):
|
||||
logger.error(f'Ошибка при публикации фотографии в канал {MAIN_PUBLIC}: {str(e)}')
|
||||
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
||||
elif call.message.text == "^":
|
||||
user_data = await state.get_data()
|
||||
# Получаем контент медиагруппы и текст для публикации
|
||||
post_content = BotDB.get_post_content_from_telegram_by_last_id(call.message.message_id)
|
||||
post_text = BotDB.get_post_text_from_telegram_by_last_id(call.message.message_id)
|
||||
|
||||
# Получаем идентификатор последнего предложенного сообщения из кэша
|
||||
help_message = get_help_message_id(call.message.message_id, user_data)
|
||||
|
||||
# Получаем идентификатор медиагруппы
|
||||
media_group_id = help_message - 1
|
||||
|
||||
# Получаем контент медиагруппы и текст
|
||||
post_content = BotDB.get_post_content_from_telegram_by_last_id(media_group_id)
|
||||
post_text = BotDB.get_post_text_from_telegram_by_last_id(media_group_id)
|
||||
post_ids = BotDB.get_post_ids_from_telegram_by_last_id(media_group_id)
|
||||
|
||||
# Преобразуем результат в список
|
||||
# Готовим список для удаления
|
||||
post_ids = BotDB.get_post_ids_from_telegram_by_last_id(call.message.message_id)
|
||||
message_ids = [row[0] for row in post_ids]
|
||||
|
||||
# Добавляем help_message в список
|
||||
message_ids.append(help_message)
|
||||
message_ids.append(call.message.message_id)
|
||||
|
||||
# Выкладываем пост в канал
|
||||
await send_media_group_to_channel(bot=call.bot, chat_id=MAIN_PUBLIC, post_content=post_content,
|
||||
post_text=post_text)
|
||||
# TODO: Удалить фотки с локалки
|
||||
# TODO: Поменять чтобы записывалось не в FSM
|
||||
# TODO: Удалить фотки с локалки после выкладки?
|
||||
await call.bot.delete_messages(chat_id=GROUP_FOR_POST, message_ids=message_ids)
|
||||
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
|
||||
|
||||
@@ -96,9 +85,12 @@ async def decline_post_for_group(call: CallbackQuery, state: FSMContext):
|
||||
f'Сообщение отклонено админом {call.from_user.full_name} (ID: {call.from_user.id}).')
|
||||
await call.answer(text='Отклонено!', show_alert=True, cache_time=3)
|
||||
if call.message.text == '^':
|
||||
user_data = await state.get_data()
|
||||
media_group_message_id = get_help_message_id(call.message.message_id, user_data)
|
||||
await call.bot.delete_message(chat_id=MAIN_PUBLIC, message_id=media_group_message_id)
|
||||
post_ids = BotDB.get_post_ids_from_telegram_by_last_id(call.message.message_id)
|
||||
message_ids = [row[0] for row in post_ids]
|
||||
message_ids.append(call.message.message_id)
|
||||
|
||||
await call.bot.delete_messages(chat_id=GROUP_FOR_POST, message_ids=message_ids)
|
||||
await call.answer(text='Удалено!', show_alert=True, cache_time=3)
|
||||
except Exception as e:
|
||||
await call.bot.send_message(IMPORTANT_LOGS,
|
||||
f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||
|
||||
@@ -161,6 +161,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
||||
f"Вызов функции suggest_router. Пользователь: {message.from_user.id} Имя автора сообщения: {message.from_user.full_name}")
|
||||
try:
|
||||
if message.content_type == 'text':
|
||||
print(message.content_type)
|
||||
lower_text = message.text.lower()
|
||||
# Получаем текст сообщения и преобразовываем его по правилам
|
||||
post_text = get_text_message(lower_text, message.from_user.full_name,
|
||||
@@ -179,6 +180,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
||||
await state.set_state("START")
|
||||
|
||||
elif message.content_type == 'photo' and message.media_group_id is None:
|
||||
print(message.content_type)
|
||||
lower_caption = message.caption.lower()
|
||||
markup = get_reply_keyboard_for_post()
|
||||
# Получаем текст сообщения и преобразовываем его по правилам
|
||||
@@ -197,7 +199,10 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
||||
|
||||
elif message.media_group_id is not None:
|
||||
post_caption = " "
|
||||
#TODO: Поставить запрет на обработку любых типов кроме photo. Запретить работать с forward message
|
||||
if message.content_type != 'photo':
|
||||
await message.bot.send_message(message.chat.id,
|
||||
'Я пока не умею работать с таким сообщением. '
|
||||
'Пришли текст и фото/фоты(ы)')
|
||||
|
||||
# Получаем сообщение и проверяем есть ли подпись. Если подпись есть, то преобразуем ее через функцию
|
||||
if album[0].caption:
|
||||
@@ -217,7 +222,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
||||
help_message_id = await send_text_message(GROUP_FOR_POST, message, "^", markup)
|
||||
|
||||
# Записываем в state идентификаторы текстового сообщения И последнего сообщения медиагруппы
|
||||
await state.update_data(media_group_message_id=media_group_message_id, help_message_id=help_message_id)
|
||||
BotDB.update_helper_message_in_db(message_id=media_group_message_id, helper_message_id=help_message_id)
|
||||
|
||||
# Получаем клавиатуру для пользователя, благодарим за пост, и возвращаем в дефолтное сообщение
|
||||
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
||||
@@ -225,6 +230,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
||||
await message.answer(success_send_message, reply_markup=markup_for_user)
|
||||
await state.set_state("START")
|
||||
else:
|
||||
print(f'Тип: {message.content_type}')
|
||||
await message.bot.send_message(message.chat.id,
|
||||
'Я пока не умею работать с таким сообщением. Пришли текст и фото/фоты(ы)')
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user