This commit is contained in:
KatykhinAA
2024-07-18 23:30:41 +03:00
parent a3b53d26e2
commit 095e0398d0
7 changed files with 105 additions and 71 deletions

View File

@@ -27,17 +27,14 @@ def get_text_message(post_text: str, first_name: str, username: str):
Returns:
Кортеж из двух элементов:
- Сформированный текст сообщения.
- Флаг, указывающий, является ли пост анонимным (True - анонимный, False - не анонимный).
- Флаг, указывающий, является ли пост анонимным (True - анонимный, False - не анонимный)
"""
if "неанон" in post_text or "не анон" in post_text:
is_anonymous = False
return f'Пост из ТГ:\n{post_text}\n\nАвтор поста: {first_name} @{username}', is_anonymous
return f'Пост из ТГ:\n{post_text}\n\nАвтор поста: {first_name} @{username}'
elif "анон" in post_text:
is_anonymous = True
return f'Пост из ТГ:\n{post_text}\n\nПост опубликован анонимно', is_anonymous
return f'Пост из ТГ:\n{post_text}\n\nПост опубликован анонимно'
else:
is_anonymous = False
return f'Пост из ТГ:\n{post_text}\n\nАвтор поста: {first_name} @{username}', is_anonymous
return f'Пост из ТГ:\n{post_text}\n\nАвтор поста: {first_name} @{username}'
async def download_photo(message: types.Message, file_id: str):
@@ -46,11 +43,11 @@ async def download_photo(message: types.Message, file_id: str):
Args:
message: сообщение
file_id: File ID фотографии.
filename: Имя файла, под которым будет сохранено фото.
file_id: File ID фотографии
filename: Имя файла, под которым будет сохранено фото
Returns:
Путь к сохраненному файлу, если файл был скачан успешно, иначе None.
Путь к сохраненному файлу, если файл был скачан успешно, иначе None
"""
try:
file = await message.bot.get_file(file_id)
@@ -62,29 +59,30 @@ async def download_photo(message: types.Message, file_id: str):
return None
async def process_photo_album(album, post_caption: str = ''):
async def prepare_media_group_from_middlewares(album, post_caption: str = ''):
"""
Создает список InputMediaPhoto для альбома.
Создает MediaGroup.
Args:
album: Album объект из Telegram API.
post_caption: Текст подписи к первому фото.
Returns:
Список InputMediaPhoto.
Список InputMediaPhoto (MediaGroup).
"""
photo_media = []
#Циклом проходимся по собранному миддлварью объекту album
media_group = []
# Циклом проходимся по собранному миддлварью объекту album
for i, message in enumerate(album):
file_id = message.photo[-1].file_id
file_path = await download_photo(message, file_id=file_id)
# Если это последняя фото в массиве, то добавляем подпись. Остальные фото просто преобразуем в InputMediaPhoto
# и формируем объект MediaGroup
if i == len(album) - 1:
photo_media.append(InputMediaPhoto(media=message.photo[-1].file_id, caption=post_caption))
media_group.append(InputMediaPhoto(media=file_id, caption=post_caption))
else:
photo_media.append(InputMediaPhoto(media=message.photo[-1].file_id))
return photo_media # Возвращаем идентификатор медиа-группы
media_group.append(InputMediaPhoto(media=file_id))
return media_group # Возвращаем MediaGroup
async def add_in_db_media(sent_message, post_caption: str = ''):
@@ -111,7 +109,8 @@ async def add_in_db_media(sent_message, post_caption: str = ''):
return media_group_message_id
async def send_media_group_message(chat_id: int, message: types.Message, media_group: list[InputMediaPhoto]):
async def send_media_group_message_to_private_chat(chat_id: int, message: types.Message,
media_group: list[InputMediaPhoto]):
sent_message = await message.bot.send_media_group(
chat_id=chat_id,
media=media_group,
@@ -121,7 +120,7 @@ async def send_media_group_message(chat_id: int, message: types.Message, media_g
return message_id
async def send_media_group_with_caption(bot, chat_id: int, post_content: list[tuple[str]], post_text: str):
async def send_media_group_to_channel(bot, chat_id: int, post_content: list[tuple[str]], post_text: str):
"""
Отправляет медиа-группу с подписью к последнему файлу.
@@ -165,7 +164,8 @@ async def send_text_message(chat_id, message: types.Message, post_text: str, mar
return message_id
async def send_photo_message(chat_id, message: types.Message, photo: str, post_text: str, markup: types.ReplyKeyboardMarkup = None):
async def send_photo_message(chat_id, message: types.Message, photo: str, post_text: str,
markup: types.ReplyKeyboardMarkup = None):
if markup is None:
await message.bot.send_photo(
chat_id=chat_id,
@@ -271,4 +271,4 @@ def unban_notifier(self):
message += f"ID: {user_id}, Имя: {user_name}\n"
# Отправка сообщения в канал
self.bot.send_message(self.GROUP_FOR_MESSAGE, message)
self.bot.send_message(self.GROUP_FOR_MESSAGE, message)