From b162d5c50b8a297dd8b80c1c45cda2351e5384fa Mon Sep 17 00:00:00 2001 From: KerradKerridi Date: Sun, 28 Aug 2022 23:37:27 +0300 Subject: [PATCH] new function with audio message. Read audio from db --- db.py | 13 ++++++++----- main.py | 55 ++++++++++++++++++++++++++++++------------------------- 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/db.py b/db.py index 72402ae..f4c2eb1 100644 --- a/db.py +++ b/db.py @@ -2,6 +2,7 @@ import sqlite3 import configparser import os import sys +import random config_path = os.path.join(sys.path[0], 'settings.ini') config = configparser.ConfigParser() @@ -124,13 +125,15 @@ class BotDB: except sqlite3.Error as error: print(error) - def get_random_audio(self): + def get_random_audio(self, user_id): """Получает данные о войсе юзера из БД""" try: - result = self.cursor.execute( - "SELECT `file_name` FROM `audio_message_reference` WHERE `author_id` = ? ORDER BY date_added DESC LIMIT 1", - (user_id,)) - return result.fetchone()[0] + file_name = self.cursor.execute( + "SELECT `file_name` FROM `audio_message_reference` WHERE `author_id` <> ?", (user_id,)) + file_name_massive = file_name.fetchall() + number_element = random.randint(0, len(file_name_massive)-1) + audio_for_user = file_name_massive[number_element] + return audio_for_user except sqlite3.Error as error: print(error) diff --git a/main.py b/main.py index 15cc261..b93553b 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,4 @@ import configparser -import itertools import os import sys from pathlib import Path @@ -82,12 +81,13 @@ def telegram_bot(): @bot.message_handler(commands=['end_command']) def after_post(message): - markup = types.ReplyKeyboardMarkup(row_width=2) + markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) item1 = types.KeyboardButton("Предложить свой пост") item2 = types.KeyboardButton("Связаться с админами") item3 = types.KeyboardButton("Удалить пост") - item4 = types.KeyboardButton("Сказать пока!") - markup.add(item1, item2, item3, item4) + item4 = types.KeyboardButton("Войти в режим стендапа") + item5 = types.KeyboardButton("Сказать пока!") + markup.add(item1, item2, item3, item4, item5) bot.send_message(message.chat.id, "Выбери нужную кнопку внизу экрана".format( message.from_user, bot.get_me()), @@ -128,10 +128,11 @@ def telegram_bot(): bot.register_next_step_handler(msg, resend_message_in_group_for_message) elif message.text == "Войти в режим стендапа": - markup = types.ReplyKeyboardMarkup(row_width=1) + markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) item1 = types.KeyboardButton("Высказаться") item2 = types.KeyboardButton("Послушать") - markup.add(item1, item2) + item3 = types.KeyboardButton("Вернуться в меню") + markup.add(item1, item2, item3) first_name = message.from_user.first_name message_for_standup = BotDB.get_message_from_db('message_for_standup', first_name) msg = bot.send_message(message.chat.id, message_for_standup, parse_mode='html', reply_markup=markup, disable_web_page_preview=not PREVIEW_LINK) @@ -193,7 +194,7 @@ def telegram_bot(): bot.forward_message(chat_id=GROUP_FOR_LOGS, from_chat_id=message.chat.id, message_id=message.message_id) - menu_standup(message=message) + #menu_standup(message=message) def standup(message): try: @@ -202,29 +203,25 @@ def telegram_bot(): msg = bot.send_message(chat_id=message.chat.id, text='Пришли мне свое голосовое сообщение', reply_markup=markup) bot.register_next_step_handler(msg, save_voice_message) elif message.text == 'Послушать': - #msg = bot.send_voice(chat_id=message.chat.id, open('voice_users/new_file.ogg', 'rb')) - msg = bot.send_message(chat_id=message.chat.id, text='Погоди, так еще не умею') - bot.register_next_step_handler(msg, menu_standup) + file = BotDB.get_random_audio(user_id=message.from_user.id)[0] + path = Path(f'voice_users/{file}.ogg') + voice = open(path, 'rb') + #Клавиатуру добавляем + markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) + item1 = types.KeyboardButton("Высказаться") + item2 = types.KeyboardButton("Послушать") + item3 = types.KeyboardButton("Вернуться в меню") + markup.add(item1, item2, item3) + msg = bot.send_voice(message.chat.id, voice=voice, reply_markup=markup) + bot.register_next_step_handler(msg, standup) elif message.text == 'Вернуться в меню': after_post(message=message) except: if LOGS: bot.send_message(chat_id=IMPORTANT_LOGS, text=BotDB.get_error_message_from_db(4)) - def menu_standup(message): - markup = types.ReplyKeyboardMarkup(row_width=2) - item1 = types.KeyboardButton("Высказаться еще") - item2 = types.KeyboardButton("Послушать") - item3 = types.KeyboardButton("Вернуться в меню") - markup.add(item1, item2, item3) - msg = bot.send_message(chat_id=message.chat.id, - text='Держи клавиатуру и выбери нужную кнопку внизу экрана!', - parse_mode='html', reply_markup=markup, disable_web_page_preview=not PREVIEW_LINK) - bot.register_next_step_handler(msg, standup) - def save_voice_message(message): if message.content_type == 'voice': - #ret_msg = bot.send_voice(message.chat.id, open('voice_users/new_file.ogg', 'rb')) message_id, author_id, added_date file_name = '' file_id = 1 #Проверяем что запись о файле есть в базе данных @@ -252,10 +249,18 @@ def telegram_bot(): downloaded_file = bot.download_file(file_info.file_path) with open(f'voice_users/{file_name}.ogg', 'wb') as new_file: new_file.write(downloaded_file) - bot.send_message(chat_id=message.chat.id, text='Окей, сохранил!') - menu_standup(message=message) + #инициализируем кнопки + markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) + item1 = types.KeyboardButton("Вернуться в меню") + markup.add(item1) + bot.send_message(chat_id=message.chat.id, text='Окей, сохранил!', reply_markup=markup) + #menu_standup(message=message) + bot.register_next_step_handler(message, standup) else: - msg = bot.send_message(chat_id=message.chat.id, text='Я тебя не понимаю, запиши голосовое') + markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) + item1 = types.KeyboardButton("Вернуться в меню") + markup.add(item1) + msg = bot.send_message(chat_id=message.chat.id, text='Я тебя не понимаю, запиши голосовое', reply_markup=markup) bot.register_next_step_handler(msg, save_voice_message) def resend_message_in_group_for_post(message):