all type message can process

This commit is contained in:
KatykhinAA
2024-07-20 22:41:48 +03:00
parent 0b7f718f8a
commit 0704e6b3fe
7 changed files with 257 additions and 56 deletions

View File

@@ -5,10 +5,6 @@ from datetime import datetime
from logs.custom_logger import logger from logs.custom_logger import logger
# Получение абсолютного пути к текущей директории
# current_dir = os.getcwd()
class BotDB: class BotDB:
def __init__(self, current_dir, name): def __init__(self, current_dir, name):
self.db_file = os.path.join(current_dir, name) self.db_file = os.path.join(current_dir, name)
@@ -828,7 +824,7 @@ class BotDB:
try: try:
self.connect() self.connect()
result = self.cursor.execute(""" result = self.cursor.execute("""
SELECT cpft.content_name SELECT cpft.content_name, cpft.content_type
FROM post_from_telegram_suggest pft FROM post_from_telegram_suggest pft
JOIN message_link_to_content mltc JOIN message_link_to_content mltc
ON pft.message_id = mltc.post_id ON pft.message_id = mltc.post_id
@@ -878,10 +874,10 @@ class BotDB:
except Exception as e: except Exception as e:
self.logger.error(f"Ошибка в функции get_post_text_from_telegram_by_last_id {str(e)}") self.logger.error(f"Ошибка в функции get_post_text_from_telegram_by_last_id {str(e)}")
def add_post_content_in_db(self, post_id: int, message_id: int, content_name: str): def add_post_content_in_db(self, post_id: int, message_id: int, content_name: str, type_content: str):
self.logger.info( self.logger.info(
f"Запуск функции add_post_content_in_db: post_id={post_id}, message_id={message_id}, " f"Запуск функции add_post_content_in_db: post_id={post_id}, message_id={message_id}, "
f"content_name={content_name}") f"content_name={content_name}, content_type={type_content}")
try: try:
self.connect() self.connect()
self.cursor.execute( self.cursor.execute(
@@ -889,8 +885,8 @@ class BotDB:
"VALUES (?, ?)", (post_id, message_id)) "VALUES (?, ?)", (post_id, message_id))
self.conn.commit() self.conn.commit()
self.cursor.execute( self.cursor.execute(
"INSERT INTO content_post_from_telegram (message_id, content_name)" "INSERT INTO content_post_from_telegram (message_id, content_name, content_type)"
"VALUES (?, ?)", (message_id, content_name)) "VALUES (?, ?, ?)", (message_id, content_name, type_content))
self.conn.commit() self.conn.commit()
self.logger.info(f"Функция add_post_content_in_db отработала успешно") self.logger.info(f"Функция add_post_content_in_db отработала успешно")
return True return True

View File

@@ -8,7 +8,8 @@ from helper_bot.keyboards.main import create_keyboard_with_pagination, get_reply
create_keyboard_for_ban_reason create_keyboard_for_ban_reason
from helper_bot.utils.base_dependency_factory import BaseDependencyFactory from helper_bot.utils.base_dependency_factory import BaseDependencyFactory
from helper_bot.utils.helper_func import send_text_message, send_photo_message, get_banned_users_list, \ from helper_bot.utils.helper_func import send_text_message, send_photo_message, get_banned_users_list, \
get_banned_users_buttons, delete_user_blacklist, get_help_message_id, send_media_group_to_channel get_banned_users_buttons, delete_user_blacklist, send_media_group_to_channel, \
send_video_message, send_video_note_message, send_audio_message, send_voice_message
from logs.custom_logger import logger from logs.custom_logger import logger
callback_router = Router() callback_router = Router()
@@ -54,6 +55,50 @@ async def post_for_group(call: CallbackQuery, state: FSMContext):
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}") text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
logger.error(f'Ошибка при публикации фотографии в канал {MAIN_PUBLIC}: {str(e)}') logger.error(f'Ошибка при публикации фотографии в канал {MAIN_PUBLIC}: {str(e)}')
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3) await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
elif call.message.content_type == 'video':
try:
await send_video_message(MAIN_PUBLIC, call.message, call.message.video.file_id, call.message.caption)
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
logger.info(f'Пост с видео опубликован в канале {MAIN_PUBLIC}.')
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
except Exception as e:
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
logger.error(f'Ошибка при публикации видео в канал {MAIN_PUBLIC}: {str(e)}')
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
elif call.message.content_type == 'video_note':
try:
await send_video_note_message(MAIN_PUBLIC, call.message, call.message.video_note.file_id)
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
logger.info(f'Пост с кружком опубликован в канале {MAIN_PUBLIC}.')
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
except Exception as e:
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
logger.error(f'Ошибка при публикации кружка в канал {MAIN_PUBLIC}: {str(e)}')
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
elif call.message.content_type == 'audio':
try:
await send_audio_message(MAIN_PUBLIC, call.message, call.message.audio.file_id, call.message.caption)
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
logger.info(f'Пост с аудио опубликован в канале {MAIN_PUBLIC}.')
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
except Exception as e:
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
logger.error(f'Ошибка при публикации аудио в канал {MAIN_PUBLIC}: {str(e)}')
await call.answer(text='Что-то пошло не так!', show_alert=True, cache_time=3)
elif call.message.content_type == 'voice':
try:
await send_voice_message(MAIN_PUBLIC, call.message, call.message.voice.file_id)
await call.bot.delete_message(chat_id=GROUP_FOR_POST, message_id=call.message.message_id)
logger.info(f'Пост с войсом опубликован в канале {MAIN_PUBLIC}.')
await call.answer(text='Выложено!', show_alert=True, cache_time=3)
except Exception as e:
await call.bot.send_message(chat_id=IMPORTANT_LOGS,
text=f"Произошла ошибка: {str(e)}\n\nTraceback:\n{traceback.format_exc()}")
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)
@@ -151,7 +196,7 @@ async def change_page(call: CallbackQuery):
logger.info(f"Переход на страницу {page_number}") logger.info(f"Переход на страницу {page_number}")
if call.message.text == 'Список пользователей которые последними обращались к боту': if call.message.text == 'Список пользователей которые последними обращались к боту':
list_users = BotDB.get_last_users_from_db() list_users = BotDB.get_last_users_from_db()
#TODO: Здесь где-то надо добавить обработку ошибки IndexError: list index out of range # TODO: Здесь где-то надо добавить обработку ошибки IndexError: list index out of range
keyboard = create_keyboard_with_pagination(int(page_number), len(list_users), list_users, keyboard = create_keyboard_with_pagination(int(page_number), len(list_users), list_users,
'ban') 'ban')

View File

@@ -17,7 +17,8 @@ from helper_bot.middlewares.blacklist_middleware import BlacklistMiddleware
from helper_bot.utils import messages from helper_bot.utils import messages
from helper_bot.utils.base_dependency_factory import BaseDependencyFactory from helper_bot.utils.base_dependency_factory import BaseDependencyFactory
from helper_bot.utils.helper_func import get_first_name, get_text_message, send_text_message, send_photo_message, \ from helper_bot.utils.helper_func import get_first_name, get_text_message, send_text_message, send_photo_message, \
send_media_group_message_to_private_chat, prepare_media_group_from_middlewares, check_username_and_full_name send_media_group_message_to_private_chat, prepare_media_group_from_middlewares, check_username_and_full_name, \
send_video_message, send_video_note_message, send_audio_message, send_voice_message
from logs.custom_logger import logger from logs.custom_logger import logger
private_router = Router() private_router = Router()
@@ -129,6 +130,7 @@ async def suggest_post(message: types.Message, state: FSMContext):
) )
async def end_message(message: types.Message, state: FSMContext): async def end_message(message: types.Message, state: FSMContext):
try: try:
await message.forward(chat_id=GROUP_FOR_LOGS)
logger.info( logger.info(
f"Вызов функции end_message. Пользователь: {message.from_user.id} Имя автора сообщения: {message.from_user.full_name}") f"Вызов функции end_message. Пользователь: {message.from_user.id} Имя автора сообщения: {message.from_user.full_name}")
name_stick_bye = list(Path('Stick').rglob('Universal_*')) name_stick_bye = list(Path('Stick').rglob('Universal_*'))
@@ -160,8 +162,8 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
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}")
try: try:
post_caption = ''
if message.content_type == 'text': if message.content_type == 'text':
print(message.content_type)
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, message.from_user.full_name,
@@ -180,7 +182,6 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
await state.set_state("START") await state.set_state("START")
elif message.content_type == 'photo' and message.media_group_id is None: elif message.content_type == 'photo' and message.media_group_id is None:
print(message.content_type)
lower_caption = message.caption.lower() lower_caption = message.caption.lower()
markup = get_reply_keyboard_for_post() markup = get_reply_keyboard_for_post()
# Получаем текст сообщения и преобразовываем его по правилам # Получаем текст сообщения и преобразовываем его по правилам
@@ -197,12 +198,69 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
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:
if message.caption:
lower_caption = message.caption.lower()
post_caption = get_text_message(lower_caption, message.from_user.full_name,
message.from_user.username)
markup = get_reply_keyboard_for_post()
# Получаем текст сообщения и преобразовываем его по правилам
# Отправляем видео и текст в приватный канал
await send_video_message(GROUP_FOR_POST, message,
message.video.file_id, post_caption, markup)
# Отправляем юзеру ответ и возвращаем его в меню
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
await message.answer(success_send_message, reply_markup=markup_for_user)
await state.set_state("START")
elif message.content_type == 'video_note' and message.media_group_id is None:
markup = get_reply_keyboard_for_post()
# Отправляем видеокружок в приватный канал
await send_video_note_message(GROUP_FOR_POST, message,
message.video_note.file_id, markup)
# Отправляем юзеру ответ и возвращаем его в меню
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
await message.answer(success_send_message, reply_markup=markup_for_user)
await state.set_state("START")
elif message.content_type == 'audio' and message.media_group_id is None:
lower_caption = message.caption.lower()
markup = get_reply_keyboard_for_post()
# Получаем текст сообщения и преобразовываем его по правилам
post_caption = get_text_message(lower_caption, message.from_user.full_name,
message.from_user.username)
# Отправляем видео и текст в приватный канал
await send_audio_message(GROUP_FOR_POST, message,
message.audio.file_id, post_caption, markup)
# Отправляем юзеру ответ и возвращаем его в меню
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
await message.answer(success_send_message, reply_markup=markup_for_user)
await state.set_state("START")
elif message.content_type == 'voice' and message.media_group_id is None:
markup = get_reply_keyboard_for_post()
# Отправляем видео и текст в приватный канал
await send_voice_message(GROUP_FOR_POST, message,
message.voice.file_id, markup)
# Отправляем юзеру ответ и возвращаем его в меню
markup_for_user = get_reply_keyboard(BotDB, message.from_user.id)
success_send_message = messages.get_message(get_first_name(message), 'SUCCESS_SEND_MESSAGE')
await message.answer(success_send_message, reply_markup=markup_for_user)
await state.set_state("START")
elif message.media_group_id is not None: elif message.media_group_id is not None:
post_caption = " " post_caption = " "
if message.content_type != 'photo':
await message.bot.send_message(message.chat.id,
'Я пока не умею работать с таким сообщением. '
'Пришли текст и фото/фоты(ы)')
# Получаем сообщение и проверяем есть ли подпись. Если подпись есть, то преобразуем ее через функцию # Получаем сообщение и проверяем есть ли подпись. Если подпись есть, то преобразуем ее через функцию
if album[0].caption: if album[0].caption:
@@ -214,7 +272,8 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
media_group = await prepare_media_group_from_middlewares(album, post_caption) media_group = await prepare_media_group_from_middlewares(album, post_caption)
# Отправляем медиагруппу в секретный чат # Отправляем медиагруппу в секретный чат
media_group_message_id = await send_media_group_message_to_private_chat(GROUP_FOR_POST, message, media_group) media_group_message_id = await send_media_group_message_to_private_chat(GROUP_FOR_POST, message,
media_group)
sleep(0.2) sleep(0.2)
# Получаем клавиатуру и отправляем еще одно текстовое сообщение с кнопками # Получаем клавиатуру и отправляем еще одно текстовое сообщение с кнопками
@@ -230,9 +289,10 @@ async def suggest_router(message: types.Message, state: FSMContext, album: list
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:
print(f'Тип: {message.content_type}')
await message.bot.send_message(message.chat.id, await message.bot.send_message(message.chat.id,
'Я пока не умею работать с таким сообщением. Пришли текст и фото/фоты(ы)') 'Я пока не умею работать с таким сообщением. '
'Пришли текст и фото/фоты(ы). А лучше перешли это сообщение админу @kerrad1\n'
'Мы добавим его к обработке если необходимо')
except Exception as e: except Exception as e:
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()}")

View File

@@ -1,7 +1,8 @@
import os
from datetime import datetime, timedelta from datetime import datetime, timedelta
from aiogram import types from aiogram import types
from aiogram.types import InputMediaPhoto, FSInputFile from aiogram.types import InputMediaPhoto, FSInputFile, InputMediaVideo, InputMediaAudio
from helper_bot.utils.base_dependency_factory import BaseDependencyFactory from helper_bot.utils.base_dependency_factory import BaseDependencyFactory
from logs.custom_logger import logger from logs.custom_logger import logger
@@ -37,9 +38,9 @@ def get_text_message(post_text: str, first_name: str, username: str):
return f'Пост из ТГ:\n{post_text}\n\nАвтор поста: {first_name} @{username}' return f'Пост из ТГ:\n{post_text}\n\nАвтор поста: {first_name} @{username}'
async def download_photo(message: types.Message, file_id: str): async def download_file(message: types.Message, file_id: str):
""" """
Скачивает фото по file_id из Telegram. Скачивает файл по file_id из Telegram.
Args: Args:
message: сообщение message: сообщение
@@ -50,9 +51,12 @@ async def download_photo(message: types.Message, file_id: str):
Путь к сохраненному файлу, если файл был скачан успешно, иначе None Путь к сохраненному файлу, если файл был скачан успешно, иначе None
""" """
try: try:
os.makedirs("files", exist_ok=True)
os.makedirs("files/photos", exist_ok=True)
os.makedirs("files/videos", exist_ok=True)
file = await message.bot.get_file(file_id) file = await message.bot.get_file(file_id)
file_path = file.file_path file_path = os.path.join("files", file.file_path)
await message.bot.download_file(file_path=file_path, destination=file_path) await message.bot.download_file(file_path=file.file_path, destination=file_path)
return file_path return file_path
except Exception as e: except Exception as e:
logger.error(f"Ошибка скачивания фотографии: {e}") logger.error(f"Ошибка скачивания фотографии: {e}")
@@ -71,17 +75,37 @@ async def prepare_media_group_from_middlewares(album, post_caption: str = ''):
Список InputMediaPhoto (MediaGroup). Список InputMediaPhoto (MediaGroup).
""" """
media_group = [] media_group = []
# Циклом проходимся по собранному миддлварью объекту album
for i, message in enumerate(album): for i, message in enumerate(album):
file_id = message.photo[-1].file_id if message.photo:
file_id = message.photo[-1].file_id
# Если это последняя фото в массиве, то добавляем подпись. Остальные фото просто преобразуем в InputMediaPhoto media_type = 'photo'
# и формируем объект MediaGroup elif message.video:
if i == len(album) - 1: file_id = message.video.file_id
media_group.append(InputMediaPhoto(media=file_id, caption=post_caption)) media_type = 'video'
elif message.audio:
file_id = message.audio.file_id
media_type = 'audio'
else: else:
media_group.append(InputMediaPhoto(media=file_id)) # Если нет фото, видео или аудио, пропускаем сообщение
continue
# Формируем объект MediaGroup с учетом типа медиа
if i == len(album) - 1:
if media_type == 'photo':
media_group.append(InputMediaPhoto(media=file_id, caption=post_caption))
elif media_type == 'video':
media_group.append(InputMediaVideo(media=file_id, caption=post_caption))
elif media_type == 'audio':
media_group.append(InputMediaAudio(media=file_id, caption=post_caption))
else:
if media_type == 'photo':
media_group.append(InputMediaPhoto(media=file_id))
elif media_type == 'video':
media_group.append(InputMediaVideo(media=file_id))
elif media_type == 'audio':
media_group.append(InputMediaAudio(media=file_id))
return media_group # Возвращаем MediaGroup return media_group # Возвращаем MediaGroup
@@ -89,6 +113,31 @@ async def add_in_db_media(sent_message):
""" """
Идентификатор медиа-группы Идентификатор медиа-группы
Args:
sent_message: sent_message объект из Telegram API
Returns:
Список InputFile (FSInputFile).
"""
media_group_message_id = sent_message[-1].message_id # Получаем идентификатор медиа-группы
for i, message in enumerate(sent_message):
if message.photo:
file_id = message.photo[-1].file_id
file_path = await download_file(message, file_id=file_id)
BotDB.add_post_content_in_db(media_group_message_id, message.message_id, file_path, 'photo')
elif message.video:
file_id = message.video.file_id
file_path = await download_file(message, file_id=file_id)
BotDB.add_post_content_in_db(media_group_message_id, message.message_id, file_path, 'video')
else:
# Если нет фото, видео или аудио, или другой контент, пропускаем сообщение
continue
async def add_in_db_media_old(sent_message):
"""
Идентификатор медиа-группы
Args: Args:
sent_message: sent_message объект из Telegram API sent_message: sent_message объект из Telegram API
@@ -98,7 +147,7 @@ async def add_in_db_media(sent_message):
media_group_message_id = sent_message[-1].message_id # Получаем идентификатор медиа-группы media_group_message_id = sent_message[-1].message_id # Получаем идентификатор медиа-группы
for i, message in enumerate(sent_message): for i, message in enumerate(sent_message):
file_id = message.photo[-1].file_id file_id = message.photo[-1].file_id
file_path = await download_photo(message, file_id=file_id) file_path = await download_file(message, file_id=file_id)
if i == 0: if i == 0:
BotDB.add_post_content_in_db(media_group_message_id, message.message_id, file_path) BotDB.add_post_content_in_db(media_group_message_id, message.message_id, file_path)
elif i == len(sent_message) - 1: elif i == len(sent_message) - 1:
@@ -133,7 +182,11 @@ async def send_media_group_to_channel(bot, chat_id: int, post_content: list[tupl
for file_path in post_content: for file_path in post_content:
try: try:
file = FSInputFile(path=file_path[0]) file = FSInputFile(path=file_path[0])
media.append(types.InputMediaPhoto(media=file)) type = file_path[1]
if type == 'video':
media.append(types.InputMediaVideo(media=file))
if type == 'photo':
media.append(types.InputMediaPhoto(media=file))
except FileNotFoundError: except FileNotFoundError:
logger.error(f"Файл не найден: {file_path[0]}") logger.error(f"Файл не найден: {file_path[0]}")
return return
@@ -180,6 +233,70 @@ async def send_photo_message(chat_id, message: types.Message, photo: str, post_t
) )
async def send_video_message(chat_id, message: types.Message, video: str, post_text: str = "",
markup: types.ReplyKeyboardMarkup = None):
if markup is None:
await message.bot.send_video(
chat_id=chat_id,
caption=post_text,
video=video
)
else:
await message.bot.send_video(
chat_id=chat_id,
caption=post_text,
video=video,
reply_markup=markup
)
async def send_video_note_message(chat_id, message: types.Message, video_note: str,
markup: types.ReplyKeyboardMarkup = None):
if markup is None:
await message.bot.send_video_note(
chat_id=chat_id,
video_note=video_note
)
else:
await message.bot.send_video_note(
chat_id=chat_id,
video_note=video_note,
reply_markup=markup
)
async def send_audio_message(chat_id, message: types.Message, audio: str, post_text: str,
markup: types.ReplyKeyboardMarkup = None):
if markup is None:
await message.bot.send_audio(
chat_id=chat_id,
caption=post_text,
audio=audio
)
else:
await message.bot.send_audio(
chat_id=chat_id,
caption=post_text,
audio=audio,
reply_markup=markup
)
async def send_voice_message(chat_id, message: types.Message, voice: str,
markup: types.ReplyKeyboardMarkup = None):
if markup is None:
await message.bot.send_voice(
chat_id=chat_id,
voice=voice
)
else:
await message.bot.send_voice(
chat_id=chat_id,
voice=voice,
reply_markup=markup
)
def check_access(user_id: int): def check_access(user_id: int):
"""Проверка прав на совершение действий""" """Проверка прав на совершение действий"""
return BotDB.is_admin(user_id) return BotDB.is_admin(user_id)
@@ -233,23 +350,6 @@ def get_banned_users_buttons():
return user_ids return user_ids
def get_help_message_id(media_group_message_id: int, data: dict) -> int:
"""
Получает идентификатор текстового сообщения по идентификатору сообщения группы.
Args:
media_group_message_id: Идентификатор сообщения группы
data: Словарь с данными.
Returns:
Идентификатор сообщения помощи.
"""
if 'help_message_id' in data:
return data['help_message_id'] # Возвращаем help_message_id
else:
return 0
def delete_user_blacklist(user_id: int): def delete_user_blacklist(user_id: int):
return BotDB.delete_user_blacklist(user_id=user_id) return BotDB.delete_user_blacklist(user_id=user_id)

View File

@@ -1,7 +1,7 @@
import datetime import datetime
import os import os
from loguru import logger
from loguru import logger
logger = logger.bind(name='main_log') logger = logger.bind(name='main_log')
@@ -20,6 +20,5 @@ logger.add(
filename, filename,
rotation="00:00", rotation="00:00",
retention="5 days", retention="5 days",
compression="zip",
format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {name} | {line} | {message}", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {name} | {line} | {message}",
) )

View File

@@ -44,7 +44,8 @@ def main():
create_table_sql_3 = """ create_table_sql_3 = """
CREATE TABLE IF NOT EXISTS content_post_from_telegram ( CREATE TABLE IF NOT EXISTS content_post_from_telegram (
message_id INTEGER NOT NULL, message_id INTEGER NOT NULL,
content_name TEXT NOT NULL content_name TEXT NOT NULL,
content_type TEXT
); );
""" """
# Применение миграции # Применение миграции