From b2c27040aabd4e1cbdc489be0579153a40d8ce2e Mon Sep 17 00:00:00 2001 From: KatykhinAA Date: Sun, 17 Nov 2024 22:09:37 +0300 Subject: [PATCH] some fix with emoji function --- database/db.py | 33 +++-- .../handlers/private/private_handlers.py | 15 +- .../__pycache__/helper_func.cpython-312.pyc | Bin 21000 -> 21117 bytes .../__pycache__/messages.cpython-312.pyc | Bin 5461 -> 5463 bytes helper_bot/utils/helper_func.py | 10 +- helper_bot/utils/messages.py | 4 +- voice_bot/handlers/callback_handler.py | 136 +++++++++--------- voice_bot/handlers/voice_handler.py | 40 ++++-- 8 files changed, 141 insertions(+), 97 deletions(-) diff --git a/database/db.py b/database/db.py index 2fd98ed..425e2d1 100644 --- a/database/db.py +++ b/database/db.py @@ -726,7 +726,6 @@ class BotDB: (emoji, user_id,)) self.conn.commit() self.logger.info(f"Эмоджи обновлен для пользователя: user_id={user_id}") - return None except sqlite3.Error as error: self.logger.error(f"Ошибка обновления эмодзи для пользователя: {error}") return error @@ -744,21 +743,19 @@ class BotDB: True, если эмодзи такого нет, иначе False. Raises: - None: В случае ошибки возвращается None + error: В случае ошибки возвращается error """ self.logger.info(f"Запуск функции check_emoji_for_user: user_id={user_id}") try: self.connect() self.cursor.execute("SELECT emoji FROM our_users WHERE user_id = ?", (user_id,)) pre_result = self.cursor.fetchone() - if pre_result is not None: - print(f'Результат функции check_emoji_for_user - {str(pre_result[0])}') - return str(pre_result[0]) - else: - return None + # Возвращаем "Смайл не определен", если pre_result или pre_result[0] is None + result = pre_result[0] if pre_result else None + return str(result) if result is not None else "Смайл еще не определен" except sqlite3.Error as error: self.logger.error(f"Ошибка проверки эмодзи в базе: {error}") - return None + return error finally: self.close() @@ -1079,7 +1076,7 @@ class BotDB: self.logger.error(f"Ошибка в функции set_user_id_and_message_id_for_voice_bot {str(e)}") def get_user_id_by_file_name(self, file_name: str): - self.logger.info(f"Запуск функции get_user_id_by_file_name, идентификатор поста " + self.logger.info(f"Запуск функции get_user_id_by_file_name, идентификатор файла " f"{file_name}") try: self.connect() @@ -1087,11 +1084,25 @@ class BotDB: "FROM audio_message_reference WHERE file_name = ?", (file_name,)) user_id = result.fetchone()[0] - self.logger.info(f"Функция get_user_id_by_file_name получила author_id {user_id}") + self.logger.info(f"Функция get_user_id_by_file_name получила user_id {user_id}") return user_id except Exception as e: self.logger.error(f"Ошибка в функции get_user_id_by_file_name {str(e)}") + def get_date_by_file_name(self, file_name: str): + self.logger.info(f"Запуск функции get_date_by_file_name, идентификатор файла " + f"{file_name}") + try: + self.connect() + result = self.cursor.execute("SELECT date_added " + "FROM audio_message_reference WHERE file_name = ?", + (file_name,)) + date_added = result.fetchone()[0] + self.logger.info(f"Функция get_date_by_file_name получила date_added {date_added}") + return date_added + except Exception as e: + self.logger.error(f"Ошибка в функции get_date_by_file_name {str(e)}") + def add_post_content_in_db(self, post_id: int, message_id: int, content_name: str, type_content: str): self.logger.info( f"Запуск функции add_post_content_in_db: post_id={post_id}, message_id={message_id}, " @@ -1162,7 +1173,7 @@ class BotDB: f"date_added = {date_added}") return None except sqlite3.Error as error: - print(error) + self.logger.error(f"Ошибка при добавлении войса в базу: {error}") raise finally: self.close() diff --git a/helper_bot/handlers/private/private_handlers.py b/helper_bot/handlers/private/private_handlers.py index 22b2381..5953dee 100644 --- a/helper_bot/handlers/private/private_handlers.py +++ b/helper_bot/handlers/private/private_handlers.py @@ -40,6 +40,17 @@ TEST = bdf.settings['Settings']['test'] BotDB = bdf.get_db() +@private_router.message( + ChatTypeFilter(chat_type=["private"]), + Command("emoji") +) +async def handle_emoji_message(message: types.Message, state: FSMContext): + user_emoji = check_user_emoji(message) + await state.set_state("START") + if user_emoji is not None: + await message.answer(f'Твоя эмодзя - {user_emoji}', parse_mode='HTML') + + @private_router.message( ChatTypeFilter(chat_type=["private"]), Command("restart") @@ -50,7 +61,7 @@ async def handle_restart_message(message: types.Message, state: FSMContext): await message.forward(chat_id=GROUP_FOR_LOGS) await state.set_state("START") await update_user_info('love', message) - check_user_emoji(message.from_user.id) + check_user_emoji(message) await message.answer('Я перезапущен!', reply_markup=markup, parse_mode='HTML') except Exception as e: logger.error(f"Произошла ошибка handle_restart_message. Ошибка:{str(e)}") @@ -70,7 +81,7 @@ async def handle_start_message(message: types.Message, state: FSMContext): try: await message.forward(chat_id=GROUP_FOR_LOGS) await update_user_info('love', message) - check_user_emoji(message.from_user.id) + check_user_emoji(message) await state.set_state("START") logger.info( f"Формирование приветственного сообщения для пользователя. Сообщение: {message.text} " diff --git a/helper_bot/utils/__pycache__/helper_func.cpython-312.pyc b/helper_bot/utils/__pycache__/helper_func.cpython-312.pyc index d158870e9cb328b32cacc94529ed45b39e77e297..80a80d9baaa0a0d770756ec6942e225966d9cd60 100644 GIT binary patch delta 516 zcmeBJ!uWRyBkyTmUM>b8SZrsNzGfn?B;${b>Q|U2Z)6nT{Eu12jd=+J!(@AD$;tDb zM0puYSU^faAd7vnqlAdT8phR(5P@2z8m0!t5>5z@fnhb2QOks+i5sX%RDfv>(`qJ& zG$TU|Q}E=8UJ~4FMWR5VqF^8~d6k!i7;_Onh+hmM)&q%RW+0(3`IDEjfiIBNz;J_4 z^g5sXMLzlKd`cJjlp5Uc2#Q@7)V?UFy}|v0p!Q`!n+C5N?1C5AB`526OK@J{aJ#`R zdVxiBvX8g4$R?l>(-~42YZ+=7Qkb%Vt|_vf#3cuG>*S5z!jtP|Z;%J11}OJGi0X`8 delta 481 zcmeyngt21@BkyTmUM>b8NZoCbZaa}zlJUt#^()NG8mTIqg;-?V7)vG>*eFkaWy>Q` ztW?4ZQV9a9ArwO`V+q4#X=Pb$h8o5-Oskn7!i)@+K&Z*=S5yWR&}1qq22!_JQ*-mP zGBsHy|M0R9fQS{X2TBx!bWL{iRyH>VG8!1}a0^`LR=vorx+47ox9Sycvpb@ymqpb( zxbAT9UguE0$f3N#eTUTr4&|#HZXZ|~c+4m7@|M;)0n|I4A%(G)p@t!aDH~{Jky{BP zP!J4i7*<2sj0`2rllui_6iV1&k}xTtXEN-% z>*QXaR!&WhTdV~|nRz9XZGGeAHUdp9P6TRfV7S3A(BN@{OK3uHmmbiy9T`3RlQ;Y7 zxNtLY3r`5{*89T4z{=h3)9CYofkDWH=?en`t1HtDZvG-kpmt5hTMR`)AO=&>ejw$i zX;~x;q>EHR#IDK8euo+NOn&Znk?R6b0OXzGjhheoFJ=;BW^`wqk^GqfM1SVtWE23K F2LR@2a>W1u diff --git a/helper_bot/utils/__pycache__/messages.cpython-312.pyc b/helper_bot/utils/__pycache__/messages.cpython-312.pyc index 177f9a624fdf0db4a0f450f88dedbeeb396f824d..abd9cca0c6f9bc4dc4a180c6cdaf3ccb44fd0caf 100644 GIT binary patch delta 48 zcmcbrbzO`1G%qg~0}zzxTcz`CТвой эмоджи - {user_emoji}" + f"Таким эмоджи будут помечены твои сообщения для других " + f"Но другие люди не узнают кто за каким эмоджи скрывается:)", + parse_mode='html', reply_markup=markup, + disable_web_page_preview=not PREVIEW_LINK) + time.sleep(0.8) await message.answer(text="Так же можешь ознакомиться с инструкцией к боту по команде /help", parse_mode='html', reply_markup=markup, disable_web_page_preview=not PREVIEW_LINK) time.sleep(0.8) - await message.answer(text="ну всё, достаточно инструкций. записывайся! Микрофон твой - 🎤", + await message.answer(text="Ну всё, достаточно инструкций. записывайся! Микрофон твой - 🎤", parse_mode='html', reply_markup=markup, disable_web_page_preview=not PREVIEW_LINK) @@ -124,7 +140,6 @@ async def refresh_listen_function(message: types.Message, state: FSMContext): await message.forward(chat_id=GROUP_FOR_LOGS) await update_user_info('voice', message) markup = get_main_keyboard() - check_user_emoji(message.from_user.id) BotDB.delete_listen_count_for_user(message.from_user.id) await message.answer( text='Прослушивания очищены. Можешь начать слушать заново🤗', disable_web_page_preview=not PREVIEW_LINK, @@ -195,20 +210,27 @@ async def standup_listen_audio(message: types.Message): except Exception as e: logger.error(f'Не удалось получить последнюю дату {e}') else: - # Получаем эмоджи пользователя + # Получаем ссылку на аудио сообщение пользователя number_element = random.randint(0, len(list_audio) - 1) audio_for_user = check_audio[number_element] + # Получаем автора записи + эмодзи по нему user_id = BotDB.get_user_id_by_file_name(audio_for_user) + date_added = BotDB.get_date_by_file_name(audio_for_user) + # TODO: Мейби не напрямую ходить? + # user_emoji = BotDB.check_emoji_for_user(user_id) user_emoji = BotDB.check_emoji_for_user(user_id) path = Path(f'voice_users/{audio_for_user}.ogg') - # voice = open(path, 'rb') voice = FSInputFile(path) + # Маркируем сообщение как прослушанное BotDB.mark_listened_audio(audio_for_user, user_id=message.from_user.id) + + # Формируем подпись if user_emoji: - await message.bot.send_voice(chat_id=message.chat.id, voice=voice, caption=user_emoji, reply_markup=markup) + caption = f'{user_emoji}\nДата записи: {date_added}' else: - await message.bot.send_voice(chat_id=message.chat.id, voice=voice, reply_markup=markup) + caption = f'Дата записи: {date_added}' + await message.bot.send_voice(chat_id=message.chat.id, voice=voice, caption=caption, reply_markup=markup) await message.answer(text=f'Осталось непрослушанных: {len(check_audio) - 1}', reply_markup=markup)