Merge pull request #4 from KerradKerridi/dev-3
fix with html tags
This commit was merged in pull request #4.
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import html
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from aiogram import Router, F
|
from aiogram import Router, F
|
||||||
@@ -33,109 +34,121 @@ BotDB = bdf.get_db()
|
|||||||
async def post_for_group(call: CallbackQuery, state: FSMContext):
|
async def post_for_group(call: CallbackQuery, state: FSMContext):
|
||||||
logger.info(
|
logger.info(
|
||||||
f'Получен callback-запрос с действием: {call.data} от пользователя {call.from_user.full_name} (ID сообщения: {call.message.message_id})')
|
f'Получен callback-запрос с действием: {call.data} от пользователя {call.from_user.full_name} (ID сообщения: {call.message.message_id})')
|
||||||
|
text_post = html.escape(str(call.message.text))
|
||||||
|
text_post_with_photo = html.escape(str(call.message.caption))
|
||||||
if call.message.content_type == 'text' and call.message.text != "^":
|
if call.message.content_type == 'text' and call.message.text != "^":
|
||||||
try:
|
try:
|
||||||
# Пересылаем сообщение в канал
|
# Пересылаем сообщение в канал
|
||||||
await send_text_message(MAIN_PUBLIC, call.message, call.message.text)
|
await send_text_message(MAIN_PUBLIC, call.message, text_post)
|
||||||
|
|
||||||
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
# Получаем из базы автора
|
||||||
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
||||||
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
|
||||||
|
|
||||||
# Очищаем предложку и удаляем оттуда пост
|
# Очищаем предложку и удаляем оттуда пост
|
||||||
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||||
logger.info(f'Текст сообщения опубликован в канале {MAIN_PUBLIC}.')
|
logger.info(f'Текст сообщения опубликован в канале {MAIN_PUBLIC}.')
|
||||||
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
|
await call.answer(text='Выложено!', cache_time=3)
|
||||||
|
|
||||||
|
# Отвечаем пользователю
|
||||||
|
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
if e.message != 'Forbidden: bot was blocked by the user':
|
||||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||||
logger.error(f'Ошибка при публикации текста в канал {MAIN_PUBLIC}: {str(e)}')
|
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||||
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
logger.error(f'Ошибка при публикации текста в канал {MAIN_PUBLIC}: {str(e)}')
|
||||||
|
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
||||||
elif call.message.content_type == 'photo':
|
elif call.message.content_type == 'photo':
|
||||||
try:
|
try:
|
||||||
await send_photo_message(MAIN_PUBLIC, call.message, call.message.photo[-1].file_id, call.message.caption)
|
await send_photo_message(MAIN_PUBLIC, call.message, call.message.photo[-1].file_id, text_post_with_photo)
|
||||||
|
|
||||||
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
||||||
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
||||||
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
|
||||||
|
|
||||||
# Удаляем пост из предложки
|
# Удаляем пост из предложки
|
||||||
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||||
logger.info(f'Пост с фото опубликован в канале {MAIN_PUBLIC}.')
|
logger.info(f'Пост с фото опубликован в канале {MAIN_PUBLIC}.')
|
||||||
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
|
await call.answer(text='Выложено!', cache_time=3)
|
||||||
|
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
if e.message != 'Forbidden: bot was blocked by the user':
|
||||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||||
logger.error(f'Ошибка при публикации фотографии в канал {MAIN_PUBLIC}: {str(e)}')
|
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||||
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
logger.error(f'Ошибка при публикации фотографии в канал {MAIN_PUBLIC}: {str(e)}')
|
||||||
|
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
||||||
elif call.message.content_type == 'video':
|
elif call.message.content_type == 'video':
|
||||||
try:
|
try:
|
||||||
await send_video_message(MAIN_PUBLIC, call.message, call.message.video.file_id, call.message.caption)
|
await send_video_message(MAIN_PUBLIC, call.message, call.message.video.file_id, text_post_with_photo)
|
||||||
|
|
||||||
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
||||||
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
||||||
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
|
||||||
|
|
||||||
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||||
logger.info(f'Пост с видео опубликован в канале {MAIN_PUBLIC}.')
|
logger.info(f'Пост с видео опубликован в канале {MAIN_PUBLIC}.')
|
||||||
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
|
await call.answer(text='Выложено!', cache_time=3)
|
||||||
|
|
||||||
|
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
if e.message != 'Forbidden: bot was blocked by the user':
|
||||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||||
logger.error(f'Ошибка при публикации видео в канал {MAIN_PUBLIC}: {str(e)}')
|
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||||
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
logger.error(f'Ошибка при публикации видео в канал {MAIN_PUBLIC}: {str(e)}')
|
||||||
|
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
||||||
elif call.message.content_type == 'video_note':
|
elif call.message.content_type == 'video_note':
|
||||||
try:
|
try:
|
||||||
await send_video_note_message(MAIN_PUBLIC, call.message, call.message.video_note.file_id)
|
await send_video_note_message(MAIN_PUBLIC, call.message, call.message.video_note.file_id)
|
||||||
|
|
||||||
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
||||||
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
||||||
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
|
||||||
|
|
||||||
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||||
logger.info(f'Пост с кружком опубликован в канале {MAIN_PUBLIC}.')
|
logger.info(f'Пост с кружком опубликован в канале {MAIN_PUBLIC}.')
|
||||||
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
|
await call.answer(text='Выложено!', cache_time=3)
|
||||||
|
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
if e.message != 'Forbidden: bot was blocked by the user':
|
||||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||||
logger.error(f'Ошибка при публикации кружка в канал {MAIN_PUBLIC}: {str(e)}')
|
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||||
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
logger.error(f'Ошибка при публикации кружка в канал {MAIN_PUBLIC}: {str(e)}')
|
||||||
|
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
||||||
elif call.message.content_type == 'audio':
|
elif call.message.content_type == 'audio':
|
||||||
try:
|
try:
|
||||||
await send_audio_message(MAIN_PUBLIC, call.message, call.message.audio.file_id, call.message.caption)
|
await send_audio_message(MAIN_PUBLIC, call.message, call.message.audio.file_id, text_post_with_photo)
|
||||||
|
|
||||||
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
||||||
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
||||||
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
|
||||||
|
|
||||||
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||||
logger.info(f'Пост с аудио опубликован в канале {MAIN_PUBLIC}.')
|
logger.info(f'Пост с аудио опубликован в канале {MAIN_PUBLIC}.')
|
||||||
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
|
await call.answer(text='Выложено!', cache_time=3)
|
||||||
|
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
if e.message != 'Forbidden: bot was blocked by the user':
|
||||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||||
logger.error(f'Ошибка при публикации аудио в канал {MAIN_PUBLIC}: {str(e)}')
|
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||||
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
logger.error(f'Ошибка при публикации аудио в канал {MAIN_PUBLIC}: {str(e)}')
|
||||||
|
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
||||||
elif call.message.content_type == 'voice':
|
elif call.message.content_type == 'voice':
|
||||||
try:
|
try:
|
||||||
await send_voice_message(MAIN_PUBLIC, call.message, call.message.voice.file_id)
|
await send_voice_message(MAIN_PUBLIC, call.message, call.message.voice.file_id)
|
||||||
|
|
||||||
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
||||||
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
||||||
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
|
||||||
|
|
||||||
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
|
||||||
logger.info(f'Пост с войсом опубликован в канале {MAIN_PUBLIC}.')
|
logger.info(f'Пост с войсом опубликован в канале {MAIN_PUBLIC}.')
|
||||||
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
|
await call.answer(text='Выложено!', cache_time=3)
|
||||||
|
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
if e.message != 'Forbidden: bot was blocked by the user':
|
||||||
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||||
logger.error(f'Ошибка при публикации войса в канал {MAIN_PUBLIC}: {str(e)}')
|
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||||
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
logger.error(f'Ошибка при публикации войса в канал {MAIN_PUBLIC}: {str(e)}')
|
||||||
|
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
||||||
elif call.message.text == "^":
|
elif call.message.text == "^":
|
||||||
# Получаем контент медиагруппы и текст для публикации
|
# Получаем контент медиагруппы и текст для публикации
|
||||||
post_content = BotDB.get_post_content_from_telegram_by_last_id(call.message.message_id)
|
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)
|
pre_text = BotDB.get_post_text_from_telegram_by_last_id(call.message.message_id)
|
||||||
|
post_text = html.escape(str(pre_text))
|
||||||
|
|
||||||
# Готовим список для удаления
|
# Готовим список для удаления
|
||||||
post_ids = BotDB.get_post_ids_from_telegram_by_last_id(call.message.message_id)
|
post_ids = BotDB.get_post_ids_from_telegram_by_last_id(call.message.message_id)
|
||||||
@@ -148,11 +161,12 @@ async def post_for_group(call: CallbackQuery, state: FSMContext):
|
|||||||
|
|
||||||
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
||||||
author_id = BotDB.get_author_id_by_helper_message_id(call.message.message_id)
|
author_id = BotDB.get_author_id_by_helper_message_id(call.message.message_id)
|
||||||
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
|
||||||
|
|
||||||
# TODO: Удалить фотки с локалки после выкладки?
|
# TODO: Удалить фотки с локалки после выкладки?
|
||||||
await call.bot.delete_messages(chat_id=GROUP_FOR_POST, message_ids=message_ids)
|
await call.bot.delete_messages(chat_id=GROUP_FOR_POST, message_ids=message_ids)
|
||||||
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
|
await call.answer(text='Выложено!', cache_time=3)
|
||||||
|
|
||||||
|
await send_text_message(author_id, call.message, 'Твой пост был выложен🥰')
|
||||||
|
|
||||||
|
|
||||||
@callback_router.callback_query(
|
@callback_router.callback_query(
|
||||||
@@ -169,11 +183,11 @@ async def decline_post_for_group(call: CallbackQuery, state: FSMContext):
|
|||||||
|
|
||||||
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
||||||
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
author_id = BotDB.get_author_id_by_message_id(call.message.message_id)
|
||||||
await send_text_message(author_id, call.message, 'Твой пост был отклонен😔')
|
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
f'Сообщение отклонено админом {call.from_user.full_name} (ID: {call.from_user.id}).')
|
f'Сообщение отклонено админом {call.from_user.full_name} (ID: {call.from_user.id}).')
|
||||||
await call.answer(text='Отклонено!', show_alert=True, cache_time=3)
|
await call.answer(text='Отклонено!', cache_time=3)
|
||||||
|
await send_text_message(author_id, call.message, 'Твой пост был отклонен😔')
|
||||||
if call.message.text == '^':
|
if call.message.text == '^':
|
||||||
post_ids = BotDB.get_post_ids_from_telegram_by_last_id(call.message.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 = [row[0] for row in post_ids]
|
||||||
@@ -183,14 +197,16 @@ async def decline_post_for_group(call: CallbackQuery, state: FSMContext):
|
|||||||
|
|
||||||
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
# Получаем из базы автора + отправляем сообщение + удаляем сообщение из предложки
|
||||||
author_id = BotDB.get_author_id_by_helper_message_id(call.message.message_id)
|
author_id = BotDB.get_author_id_by_helper_message_id(call.message.message_id)
|
||||||
await send_text_message(author_id, call.message, 'Твой пост был отклонен😔')
|
|
||||||
|
|
||||||
await call.answer(text='Удалено!', show_alert=True, cache_time=3)
|
await call.answer(text='Удалено!', cache_time=3)
|
||||||
|
|
||||||
|
await send_text_message(author_id, call.message, 'Твой пост был отклонен😔')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await call.bot.send_message(IMPORTANT_LOGS,
|
if e.message != 'Forbidden: bot was blocked by the user':
|
||||||
f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
await call.bot.send_message(IMPORTANT_LOGS,
|
||||||
logger.error(f'Ошибка при удалении сообщения в группе {GROUP_FOR_POST}: {str(e)}')
|
f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||||
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
logger.error(f'Ошибка при удалении сообщения в группе {GROUP_FOR_POST}: {str(e)}')
|
||||||
|
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
|
||||||
|
|
||||||
|
|
||||||
@callback_router.callback_query(
|
@callback_router.callback_query(
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ async def handle_start_message(message: types.Message, state: FSMContext):
|
|||||||
await message.forward(chat_id=GROUP_FOR_LOGS)
|
await message.forward(chat_id=GROUP_FOR_LOGS)
|
||||||
full_name = message.from_user.full_name
|
full_name = message.from_user.full_name
|
||||||
username = message.from_user.username
|
username = message.from_user.username
|
||||||
first_name = message.from_user.first_name
|
first_name = get_first_name(message)
|
||||||
is_bot = message.from_user.is_bot
|
is_bot = message.from_user.is_bot
|
||||||
language_code = message.from_user.language_code
|
language_code = message.from_user.language_code
|
||||||
user_id = message.from_user.id
|
user_id = message.from_user.id
|
||||||
@@ -86,10 +86,9 @@ async def handle_start_message(message: types.Message, state: FSMContext):
|
|||||||
await message.bot.send_message(chat_id=IMPORTANT_LOGS,
|
await message.bot.send_message(chat_id=IMPORTANT_LOGS,
|
||||||
text=f"Произошла ошибка при получении стикеров: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
text=f"Произошла ошибка при получении стикеров: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
|
||||||
try:
|
try:
|
||||||
|
|
||||||
markup = get_reply_keyboard(BotDB, message.from_user.id)
|
markup = get_reply_keyboard(BotDB, message.from_user.id)
|
||||||
hello_message = messages.get_message(get_first_name(message), 'HELLO_MESSAGE')
|
hello_message = messages.get_message(get_first_name(message), 'HELLO_MESSAGE')
|
||||||
await message.answer(hello_message, reply_markup=markup)
|
await message.answer(hello_message, reply_markup=markup, parse_mode='HTML')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(
|
logger.error(
|
||||||
f"Произошла ошибка при отправке приветственного сообщения для пользователя {message.from_user.id} Имя: {message.from_user.full_name}. Ошибка: {str(e)}")
|
f"Произошла ошибка при отправке приветственного сообщения для пользователя {message.from_user.id} Имя: {message.from_user.full_name}. Ошибка: {str(e)}")
|
||||||
@@ -169,14 +168,19 @@ async def end_message(message: types.Message, state: FSMContext):
|
|||||||
async def suggest_router(message: types.Message, state: FSMContext, album: list = None):
|
async def suggest_router(message: types.Message, state: FSMContext, album: list = None):
|
||||||
logger.info(
|
logger.info(
|
||||||
f"Вызов функции suggest_router. Пользователь: {message.from_user.id} Имя автора сообщения: {message.from_user.full_name}")
|
f"Вызов функции suggest_router. Пользователь: {message.from_user.id} Имя автора сообщения: {message.from_user.full_name}")
|
||||||
|
first_name = get_first_name(message)
|
||||||
try:
|
try:
|
||||||
post_caption = ''
|
post_caption = ''
|
||||||
|
if message.media_group_id is not None:
|
||||||
|
await send_text_message(GROUP_FOR_LOGS, message,
|
||||||
|
f'Закинул медиагруппу, пользователь: имя - {first_name}, ник - {message.from_user.username}')
|
||||||
|
else:
|
||||||
|
await message.forward(chat_id=GROUP_FOR_LOGS)
|
||||||
if message.content_type == 'text':
|
if message.content_type == 'text':
|
||||||
lower_text = message.text.lower()
|
lower_text = message.text.lower()
|
||||||
# Получаем текст сообщения и преобразовываем его по правилам
|
# Получаем текст сообщения и преобразовываем его по правилам
|
||||||
post_text = get_text_message(lower_text, message.from_user.full_name,
|
post_text = get_text_message(lower_text, first_name,
|
||||||
message.from_user.username)
|
message.from_user.username)
|
||||||
|
|
||||||
# Получаем клавиатуру для поста
|
# Получаем клавиатуру для поста
|
||||||
markup = get_reply_keyboard_for_post()
|
markup = get_reply_keyboard_for_post()
|
||||||
|
|
||||||
@@ -188,7 +192,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
|
|
||||||
# Отправляем юзеру ответ, что сообщение отравлено и возвращаем его в меню
|
# Отправляем юзеру ответ, что сообщение отравлено и возвращаем его в меню
|
||||||
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
||||||
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
|
success_send_message = messages.get_message(first_name, 'SUCCESS_SEND_MESSAGE')
|
||||||
await message.answer(success_send_message, reply_markup=markup_for_user)
|
await message.answer(success_send_message, reply_markup=markup_for_user)
|
||||||
await state.set_state("START")
|
await state.set_state("START")
|
||||||
|
|
||||||
@@ -196,7 +200,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
if message.caption:
|
if message.caption:
|
||||||
lower_caption = message.caption.lower()
|
lower_caption = message.caption.lower()
|
||||||
# Получаем текст сообщения и преобразовываем его по правилам
|
# Получаем текст сообщения и преобразовываем его по правилам
|
||||||
post_caption = get_text_message(lower_caption, message.from_user.full_name,
|
post_caption = get_text_message(lower_caption, first_name,
|
||||||
message.from_user.username)
|
message.from_user.username)
|
||||||
markup = get_reply_keyboard_for_post()
|
markup = get_reply_keyboard_for_post()
|
||||||
|
|
||||||
@@ -209,14 +213,14 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
|
|
||||||
# Отправляем юзеру ответ и возвращаем его в меню
|
# Отправляем юзеру ответ и возвращаем его в меню
|
||||||
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
||||||
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
|
success_send_message = messages.get_message(first_name, 'SUCCESS_SEND_MESSAGE')
|
||||||
await message.answer(success_send_message, reply_markup=markup_for_user)
|
await message.answer(success_send_message, reply_markup=markup_for_user)
|
||||||
await state.set_state("START")
|
await state.set_state("START")
|
||||||
|
|
||||||
elif message.content_type == 'video' and message.media_group_id is None:
|
elif message.content_type == 'video' and message.media_group_id is None:
|
||||||
if message.caption:
|
if message.caption:
|
||||||
lower_caption = message.caption.lower()
|
lower_caption = message.caption.lower()
|
||||||
post_caption = get_text_message(lower_caption, message.from_user.full_name,
|
post_caption = get_text_message(lower_caption, first_name,
|
||||||
message.from_user.username)
|
message.from_user.username)
|
||||||
markup = get_reply_keyboard_for_post()
|
markup = get_reply_keyboard_for_post()
|
||||||
# Получаем текст сообщения и преобразовываем его по правилам
|
# Получаем текст сообщения и преобразовываем его по правилам
|
||||||
@@ -235,7 +239,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
|
|
||||||
# Отправляем юзеру ответ и возвращаем его в меню
|
# Отправляем юзеру ответ и возвращаем его в меню
|
||||||
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
||||||
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
|
success_send_message = messages.get_message(first_name, 'SUCCESS_SEND_MESSAGE')
|
||||||
await message.answer(success_send_message, reply_markup=markup_for_user)
|
await message.answer(success_send_message, reply_markup=markup_for_user)
|
||||||
await state.set_state("START")
|
await state.set_state("START")
|
||||||
|
|
||||||
@@ -252,7 +256,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
|
|
||||||
# Отправляем юзеру ответ и возвращаем его в меню
|
# Отправляем юзеру ответ и возвращаем его в меню
|
||||||
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
||||||
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
|
success_send_message = messages.get_message(first_name, 'SUCCESS_SEND_MESSAGE')
|
||||||
await message.answer(success_send_message, reply_markup=markup_for_user)
|
await message.answer(success_send_message, reply_markup=markup_for_user)
|
||||||
await state.set_state("START")
|
await state.set_state("START")
|
||||||
|
|
||||||
@@ -260,7 +264,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
if message.caption:
|
if message.caption:
|
||||||
lower_caption = message.caption.lower()
|
lower_caption = message.caption.lower()
|
||||||
# Получаем текст сообщения и преобразовываем его по правилам
|
# Получаем текст сообщения и преобразовываем его по правилам
|
||||||
post_caption = get_text_message(lower_caption, message.from_user.full_name,
|
post_caption = get_text_message(lower_caption, first_name,
|
||||||
message.from_user.username)
|
message.from_user.username)
|
||||||
markup = get_reply_keyboard_for_post()
|
markup = get_reply_keyboard_for_post()
|
||||||
|
|
||||||
@@ -274,7 +278,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
|
|
||||||
# Отправляем юзеру ответ и возвращаем его в меню
|
# Отправляем юзеру ответ и возвращаем его в меню
|
||||||
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
||||||
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
|
success_send_message = messages.get_message(first_name, 'SUCCESS_SEND_MESSAGE')
|
||||||
await message.answer(success_send_message, reply_markup=markup_for_user)
|
await message.answer(success_send_message, reply_markup=markup_for_user)
|
||||||
await state.set_state("START")
|
await state.set_state("START")
|
||||||
|
|
||||||
@@ -291,7 +295,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
|
|
||||||
# Отправляем юзеру ответ и возвращаем его в меню
|
# Отправляем юзеру ответ и возвращаем его в меню
|
||||||
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
||||||
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
|
success_send_message = messages.get_message(first_name, 'SUCCESS_SEND_MESSAGE')
|
||||||
await message.answer(success_send_message, reply_markup=markup_for_user)
|
await message.answer(success_send_message, reply_markup=markup_for_user)
|
||||||
await state.set_state("START")
|
await state.set_state("START")
|
||||||
|
|
||||||
@@ -301,7 +305,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
# Получаем сообщение и проверяем есть ли подпись. Если подпись есть, то преобразуем ее через функцию
|
# Получаем сообщение и проверяем есть ли подпись. Если подпись есть, то преобразуем ее через функцию
|
||||||
if album[0].caption:
|
if album[0].caption:
|
||||||
lower_caption = album[0].caption.lower()
|
lower_caption = album[0].caption.lower()
|
||||||
post_caption = get_text_message(lower_caption, message.from_user.full_name,
|
post_caption = get_text_message(lower_caption, first_name,
|
||||||
message.from_user.username)
|
message.from_user.username)
|
||||||
|
|
||||||
# Иначе обрабатываем фото и получаем медиагруппу
|
# Иначе обрабатываем фото и получаем медиагруппу
|
||||||
@@ -321,7 +325,7 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
|
|||||||
|
|
||||||
# Получаем клавиатуру для пользователя, благодарим за пост, и возвращаем в дефолтное сообщение
|
# Получаем клавиатуру для пользователя, благодарим за пост, и возвращаем в дефолтное сообщение
|
||||||
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
|
||||||
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
|
success_send_message = messages.get_message(first_name, 'SUCCESS_SEND_MESSAGE')
|
||||||
await message.answer(success_send_message, reply_markup=markup_for_user)
|
await message.answer(success_send_message, reply_markup=markup_for_user)
|
||||||
await state.set_state("START")
|
await state.set_state("START")
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
from .keyboards import get_reply_keyboard_for_post, get_reply_keyboard
|
from .keyboards import get_reply_keyboard_for_post, get_reply_keyboard
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,115 +1,115 @@
|
|||||||
from aiogram import types
|
from aiogram import types
|
||||||
from aiogram.utils.keyboard import ReplyKeyboardBuilder, InlineKeyboardBuilder
|
from aiogram.utils.keyboard import ReplyKeyboardBuilder, InlineKeyboardBuilder
|
||||||
|
|
||||||
|
|
||||||
def get_reply_keyboard_for_post():
|
def get_reply_keyboard_for_post():
|
||||||
builder = InlineKeyboardBuilder()
|
builder = InlineKeyboardBuilder()
|
||||||
builder.row(types.InlineKeyboardButton(
|
builder.row(types.InlineKeyboardButton(
|
||||||
text="Опубликовать", callback_data="publish")
|
text="Опубликовать", callback_data="publish")
|
||||||
)
|
)
|
||||||
builder.row(types.InlineKeyboardButton(
|
builder.row(types.InlineKeyboardButton(
|
||||||
text="Отклонить", callback_data="decline")
|
text="Отклонить", callback_data="decline")
|
||||||
)
|
)
|
||||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||||
return markup
|
return markup
|
||||||
|
|
||||||
|
|
||||||
def get_reply_keyboard(BotDB, user_id):
|
def get_reply_keyboard(BotDB, user_id):
|
||||||
builder = ReplyKeyboardBuilder()
|
builder = ReplyKeyboardBuilder()
|
||||||
builder.add(types.KeyboardButton(text="📢Предложить свой пост"))
|
builder.add(types.KeyboardButton(text="📢Предложить свой пост"))
|
||||||
builder.add(types.KeyboardButton(text="📩Связаться с админами"))
|
builder.add(types.KeyboardButton(text="📩Связаться с админами"))
|
||||||
builder.add(types.KeyboardButton(text="👋🏼Сказать пока!"))
|
builder.add(types.KeyboardButton(text="👋🏼Сказать пока!"))
|
||||||
if not BotDB.get_info_about_stickers(user_id=user_id):
|
if not BotDB.get_info_about_stickers(user_id=user_id):
|
||||||
builder.add(types.KeyboardButton(text="🤪Хочу стикеры"))
|
builder.add(types.KeyboardButton(text="🤪Хочу стикеры"))
|
||||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||||
return markup
|
return markup
|
||||||
|
|
||||||
|
|
||||||
def get_reply_keyboard_leave_chat():
|
def get_reply_keyboard_leave_chat():
|
||||||
builder = ReplyKeyboardBuilder()
|
builder = ReplyKeyboardBuilder()
|
||||||
builder.add(types.KeyboardButton(text="Выйти из чата"))
|
builder.add(types.KeyboardButton(text="Выйти из чата"))
|
||||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||||
return markup
|
return markup
|
||||||
|
|
||||||
|
|
||||||
def get_reply_keyboard_admin():
|
def get_reply_keyboard_admin():
|
||||||
builder = ReplyKeyboardBuilder()
|
builder = ReplyKeyboardBuilder()
|
||||||
builder.add(types.KeyboardButton(text="Бан (Список)"))
|
builder.add(types.KeyboardButton(text="Бан (Список)"))
|
||||||
builder.add(types.KeyboardButton(text="Бан по нику"))
|
builder.add(types.KeyboardButton(text="Бан по нику"))
|
||||||
builder.add(types.KeyboardButton(text="Разбан (список)"))
|
builder.add(types.KeyboardButton(text="Разбан (список)"))
|
||||||
builder.add(types.KeyboardButton(text="Вернуться в бота"))
|
builder.add(types.KeyboardButton(text="Вернуться в бота"))
|
||||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||||
return markup
|
return markup
|
||||||
|
|
||||||
|
|
||||||
def create_keyboard_with_pagination(page: int, total_items: int, array_items: list[tuple[any, any]], callback: str):
|
def create_keyboard_with_pagination(page: int, total_items: int, array_items: list[tuple[any, any]], callback: str):
|
||||||
"""
|
"""
|
||||||
Создает клавиатуру с пагинацией для заданного набора элементов и устанавливает необходимый callback
|
Создает клавиатуру с пагинацией для заданного набора элементов и устанавливает необходимый callback
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
page: Номер текущей страницы.
|
page: Номер текущей страницы.
|
||||||
total_items: Общее количество элементов.
|
total_items: Общее количество элементов.
|
||||||
array_items: Лист кортежей. Содержит в себе user_name: user_id
|
array_items: Лист кортежей. Содержит в себе user_name: user_id
|
||||||
callback: Действие в коллбеке. Вернет callback вида ({callback}_{user_id})
|
callback: Действие в коллбеке. Вернет callback вида ({callback}_{user_id})
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
InlineKeyboardMarkup: Клавиатура с кнопками пагинации.
|
InlineKeyboardMarkup: Клавиатура с кнопками пагинации.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Определяем общее количество страниц
|
# Определяем общее количество страниц
|
||||||
total_pages = (total_items + 9 - 1) // 9
|
total_pages = (total_items + 9 - 1) // 9
|
||||||
|
|
||||||
# Создаем билдер для клавиатуры
|
# Создаем билдер для клавиатуры
|
||||||
keyboard = InlineKeyboardBuilder()
|
keyboard = InlineKeyboardBuilder()
|
||||||
# Вычисляем стартовый номер для текущей страницы
|
# Вычисляем стартовый номер для текущей страницы
|
||||||
start_index = (page - 1) * 9
|
start_index = (page - 1) * 9
|
||||||
|
|
||||||
# Кнопки с номерами страниц
|
# Кнопки с номерами страниц
|
||||||
for i in range(start_index, min(start_index + 9, len(array_items))):
|
for i in range(start_index, min(start_index + 9, len(array_items))):
|
||||||
keyboard.add(types.InlineKeyboardButton(
|
keyboard.add(types.InlineKeyboardButton(
|
||||||
text=f"{array_items[i][0]}", callback_data=f"{callback}_{array_items[i][1]}"
|
text=f"{array_items[i][0]}", callback_data=f"{callback}_{array_items[i][1]}"
|
||||||
))
|
))
|
||||||
keyboard.adjust(3)
|
keyboard.adjust(3)
|
||||||
|
|
||||||
next_button = types.InlineKeyboardButton(
|
next_button = types.InlineKeyboardButton(
|
||||||
text="➡️ Следующая", callback_data=f"page_{page + 1}"
|
text="➡️ Следующая", callback_data=f"page_{page + 1}"
|
||||||
)
|
)
|
||||||
prev_button = types.InlineKeyboardButton(
|
prev_button = types.InlineKeyboardButton(
|
||||||
text="⬅️ Предыдущая", callback_data=f"page_{page - 1}"
|
text="⬅️ Предыдущая", callback_data=f"page_{page - 1}"
|
||||||
)
|
)
|
||||||
keyboard.row(prev_button, next_button)
|
keyboard.row(prev_button, next_button)
|
||||||
home_button = types.InlineKeyboardButton(
|
home_button = types.InlineKeyboardButton(
|
||||||
text="🏠 Назад", callback_data="return")
|
text="🏠 Назад", callback_data="return")
|
||||||
keyboard.row(home_button)
|
keyboard.row(home_button)
|
||||||
k = keyboard.as_markup()
|
k = keyboard.as_markup()
|
||||||
return k
|
return k
|
||||||
|
|
||||||
|
|
||||||
def create_keyboard_for_ban_reason():
|
def create_keyboard_for_ban_reason():
|
||||||
builder = ReplyKeyboardBuilder()
|
builder = ReplyKeyboardBuilder()
|
||||||
builder.add(types.KeyboardButton(text="Спам"))
|
builder.add(types.KeyboardButton(text="Спам"))
|
||||||
builder.add(types.KeyboardButton(text="Заебал стикерами"))
|
builder.add(types.KeyboardButton(text="Заебал стикерами"))
|
||||||
builder.row(types.KeyboardButton(text="Реклама здесь: @kerrad1 "))
|
builder.row(types.KeyboardButton(text="Реклама здесь: @kerrad1 "))
|
||||||
builder.row(types.KeyboardButton(text="Тема с лагерями: https://vk.com/topic-75343895_50049913"))
|
builder.row(types.KeyboardButton(text="Тема с лагерями: https://vk.com/topic-75343895_50049913"))
|
||||||
builder.row(types.KeyboardButton(text="Отменить"))
|
builder.row(types.KeyboardButton(text="Отменить"))
|
||||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||||
return markup
|
return markup
|
||||||
|
|
||||||
|
|
||||||
def create_keyboard_for_ban_days():
|
def create_keyboard_for_ban_days():
|
||||||
builder = ReplyKeyboardBuilder()
|
builder = ReplyKeyboardBuilder()
|
||||||
builder.add(types.KeyboardButton(text="1"))
|
builder.add(types.KeyboardButton(text="1"))
|
||||||
builder.add(types.KeyboardButton(text="7"))
|
builder.add(types.KeyboardButton(text="7"))
|
||||||
builder.add(types.KeyboardButton(text="30"))
|
builder.add(types.KeyboardButton(text="30"))
|
||||||
builder.row(types.KeyboardButton(text="Навсегда"))
|
builder.row(types.KeyboardButton(text="Навсегда"))
|
||||||
builder.row(types.KeyboardButton(text="Отменить"))
|
builder.row(types.KeyboardButton(text="Отменить"))
|
||||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||||
return markup
|
return markup
|
||||||
|
|
||||||
|
|
||||||
def create_keyboard_for_approve_ban():
|
def create_keyboard_for_approve_ban():
|
||||||
builder = ReplyKeyboardBuilder()
|
builder = ReplyKeyboardBuilder()
|
||||||
builder.add(types.KeyboardButton(text="Подтвердить"))
|
builder.add(types.KeyboardButton(text="Подтвердить"))
|
||||||
builder.add(types.KeyboardButton(text="Отменить"))
|
builder.add(types.KeyboardButton(text="Отменить"))
|
||||||
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
markup = builder.as_markup(resize_keyboard=True, one_time_keyboard=True)
|
||||||
return markup
|
return markup
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,3 +1,4 @@
|
|||||||
|
import html
|
||||||
import os
|
import os
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
@@ -13,7 +14,8 @@ BotDB = bdf.get_db()
|
|||||||
|
|
||||||
|
|
||||||
def get_first_name(message: types.Message) -> str:
|
def get_first_name(message: types.Message) -> str:
|
||||||
return message.from_user.first_name
|
first_name = html.escape(message.from_user.first_name)
|
||||||
|
return first_name
|
||||||
|
|
||||||
|
|
||||||
def get_text_message(post_text: str, first_name: str, username: str):
|
def get_text_message(post_text: str, first_name: str, username: str):
|
||||||
|
|||||||
Reference in New Issue
Block a user