new function with audio message. Read audio from db

This commit is contained in:
KerradKerridi
2022-08-28 23:37:27 +03:00
parent 6da8d8211c
commit b162d5c50b
2 changed files with 38 additions and 30 deletions

13
db.py
View File

@@ -2,6 +2,7 @@ import sqlite3
import configparser import configparser
import os import os
import sys import sys
import random
config_path = os.path.join(sys.path[0], 'settings.ini') config_path = os.path.join(sys.path[0], 'settings.ini')
config = configparser.ConfigParser() config = configparser.ConfigParser()
@@ -124,13 +125,15 @@ class BotDB:
except sqlite3.Error as error: except sqlite3.Error as error:
print(error) print(error)
def get_random_audio(self): def get_random_audio(self, user_id):
"""Получает данные о войсе юзера из БД""" """Получает данные о войсе юзера из БД"""
try: try:
result = self.cursor.execute( file_name = self.cursor.execute(
"SELECT `file_name` FROM `audio_message_reference` WHERE `author_id` = ? ORDER BY date_added DESC LIMIT 1", "SELECT `file_name` FROM `audio_message_reference` WHERE `author_id` <> ?", (user_id,))
(user_id,)) file_name_massive = file_name.fetchall()
return result.fetchone()[0] 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: except sqlite3.Error as error:
print(error) print(error)

55
main.py
View File

@@ -1,5 +1,4 @@
import configparser import configparser
import itertools
import os import os
import sys import sys
from pathlib import Path from pathlib import Path
@@ -82,12 +81,13 @@ def telegram_bot():
@bot.message_handler(commands=['end_command']) @bot.message_handler(commands=['end_command'])
def after_post(message): def after_post(message):
markup = types.ReplyKeyboardMarkup(row_width=2) markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
item1 = types.KeyboardButton("Предложить свой пост") item1 = types.KeyboardButton("Предложить свой пост")
item2 = types.KeyboardButton("Связаться с админами") item2 = types.KeyboardButton("Связаться с админами")
item3 = types.KeyboardButton("Удалить пост") item3 = types.KeyboardButton("Удалить пост")
item4 = types.KeyboardButton("Сказать пока!") item4 = types.KeyboardButton("Войти в режим стендапа")
markup.add(item1, item2, item3, item4) item5 = types.KeyboardButton("Сказать пока!")
markup.add(item1, item2, item3, item4, item5)
bot.send_message(message.chat.id, bot.send_message(message.chat.id,
"Выбери нужную кнопку внизу экрана".format( "Выбери нужную кнопку внизу экрана".format(
message.from_user, bot.get_me()), 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) bot.register_next_step_handler(msg, resend_message_in_group_for_message)
elif message.text == "Войти в режим стендапа": elif message.text == "Войти в режим стендапа":
markup = types.ReplyKeyboardMarkup(row_width=1) markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
item1 = types.KeyboardButton("Высказаться") item1 = types.KeyboardButton("Высказаться")
item2 = types.KeyboardButton("Послушать") item2 = types.KeyboardButton("Послушать")
markup.add(item1, item2) item3 = types.KeyboardButton("Вернуться в меню")
markup.add(item1, item2, item3)
first_name = message.from_user.first_name first_name = message.from_user.first_name
message_for_standup = BotDB.get_message_from_db('message_for_standup', 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) 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, bot.forward_message(chat_id=GROUP_FOR_LOGS,
from_chat_id=message.chat.id, from_chat_id=message.chat.id,
message_id=message.message_id) message_id=message.message_id)
menu_standup(message=message) #menu_standup(message=message)
def standup(message): def standup(message):
try: try:
@@ -202,29 +203,25 @@ def telegram_bot():
msg = bot.send_message(chat_id=message.chat.id, text='Пришли мне свое голосовое сообщение', reply_markup=markup) msg = bot.send_message(chat_id=message.chat.id, text='Пришли мне свое голосовое сообщение', reply_markup=markup)
bot.register_next_step_handler(msg, save_voice_message) bot.register_next_step_handler(msg, save_voice_message)
elif message.text == 'Послушать': elif message.text == 'Послушать':
#msg = bot.send_voice(chat_id=message.chat.id, open('voice_users/new_file.ogg', 'rb')) file = BotDB.get_random_audio(user_id=message.from_user.id)[0]
msg = bot.send_message(chat_id=message.chat.id, text='Погоди, так еще не умею') path = Path(f'voice_users/{file}.ogg')
bot.register_next_step_handler(msg, menu_standup) 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 == 'Вернуться в меню': elif message.text == 'Вернуться в меню':
after_post(message=message) after_post(message=message)
except: except:
if LOGS: if LOGS:
bot.send_message(chat_id=IMPORTANT_LOGS, text=BotDB.get_error_message_from_db(4)) 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): def save_voice_message(message):
if message.content_type == 'voice': 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_name = ''
file_id = 1 file_id = 1
#Проверяем что запись о файле есть в базе данных #Проверяем что запись о файле есть в базе данных
@@ -252,10 +249,18 @@ def telegram_bot():
downloaded_file = bot.download_file(file_info.file_path) downloaded_file = bot.download_file(file_info.file_path)
with open(f'voice_users/{file_name}.ogg', 'wb') as new_file: with open(f'voice_users/{file_name}.ogg', 'wb') as new_file:
new_file.write(downloaded_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: 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) bot.register_next_step_handler(msg, save_voice_message)
def resend_message_in_group_for_post(message): def resend_message_in_group_for_post(message):