new function voice chat
This commit is contained in:
32
db.py
32
db.py
@@ -125,15 +125,31 @@ class BotDB:
|
|||||||
except sqlite3.Error as error:
|
except sqlite3.Error as error:
|
||||||
print(error)
|
print(error)
|
||||||
|
|
||||||
def get_random_audio(self, user_id):
|
def check_listen_audio(self, user_id):
|
||||||
"""Получает данные о войсе юзера из БД"""
|
"""Проверяет прослушано ли аудио пользователем"""
|
||||||
try:
|
try:
|
||||||
file_name = self.cursor.execute(
|
query_listen_audio = self.cursor.execute(
|
||||||
"SELECT `file_name` FROM `audio_message_reference` WHERE `author_id` <> ?", (user_id,))
|
"""SELECT l.file_name
|
||||||
file_name_massive = file_name.fetchall()
|
FROM audio_message_reference a
|
||||||
number_element = random.randint(0, len(file_name_massive)-1)
|
LEFT JOIN listen_audio_users l ON l.file_name = a.file_name
|
||||||
audio_for_user = file_name_massive[number_element]
|
WHERE l.user_id = ?
|
||||||
return audio_for_user
|
AND l.file_name IS NOT NULL""" , (user_id,))
|
||||||
|
check_sign = query_listen_audio.fetchall()
|
||||||
|
query_all_audio = self.cursor.execute('SELECT file_name FROM audio_message_reference WHERE author_id <> ?', (user_id,))
|
||||||
|
sign_all_audio = query_all_audio.fetchall()
|
||||||
|
new_sign1 = list(set(sign_all_audio) - set(check_sign))
|
||||||
|
new_sign = []
|
||||||
|
for i in new_sign1:
|
||||||
|
new_sign.append(i[0])
|
||||||
|
return new_sign
|
||||||
|
except sqlite3.Error as error:
|
||||||
|
print(error)
|
||||||
|
|
||||||
|
def mark_listened_audio(self, file_name, user_id):
|
||||||
|
"""Отмечает аудио прослушанным для конкретного пользователя."""
|
||||||
|
try:
|
||||||
|
result = self.cursor.execute("INSERT INTO `listen_audio_users` (file_name, user_id, is_listen) VALUES (?, ?, ?)", (file_name, user_id, 1))
|
||||||
|
return self.conn.commit()
|
||||||
except sqlite3.Error as error:
|
except sqlite3.Error as error:
|
||||||
print(error)
|
print(error)
|
||||||
|
|
||||||
|
|||||||
29
main.py
29
main.py
@@ -19,7 +19,6 @@ config.read(config_path)
|
|||||||
BOT_TOKEN = config.get('Telegram', 'BOT_TOKEN')
|
BOT_TOKEN = config.get('Telegram', 'BOT_TOKEN')
|
||||||
GROUP_FOR_POST = config.get('Telegram', 'group_for_posts')
|
GROUP_FOR_POST = config.get('Telegram', 'group_for_posts')
|
||||||
GROUP_FOR_MESSAGE = config.get('Telegram', 'group_for_message')
|
GROUP_FOR_MESSAGE = config.get('Telegram', 'group_for_message')
|
||||||
GROUP_FOR_AUDIO = config.get('Telegram', 'group_for_audio')
|
|
||||||
MAIN_PUBLIC = config.get('Telegram', 'main_public')
|
MAIN_PUBLIC = config.get('Telegram', 'main_public')
|
||||||
GROUP_FOR_LOGS = config.get('Telegram', 'group_for_logs')
|
GROUP_FOR_LOGS = config.get('Telegram', 'group_for_logs')
|
||||||
IMPORTANT_LOGS = config.get('Telegram', 'important_logs')
|
IMPORTANT_LOGS = config.get('Telegram', 'important_logs')
|
||||||
@@ -194,24 +193,34 @@ 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)
|
bot.register_next_step_handler(message, callback=go_send_messages)
|
||||||
|
|
||||||
def standup(message):
|
def standup(message):
|
||||||
|
# Клавиатуру добавляем
|
||||||
|
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
|
||||||
|
item1 = types.KeyboardButton("Высказаться")
|
||||||
|
item2 = types.KeyboardButton("Послушать")
|
||||||
|
item3 = types.KeyboardButton("Вернуться в меню")
|
||||||
|
markup.add(item1, item2, item3)
|
||||||
try:
|
try:
|
||||||
if message.text == 'Высказаться' or message.text == 'Высказаться еще':
|
if message.text == 'Высказаться' or message.text == 'Высказаться еще':
|
||||||
markup = types.ReplyKeyboardRemove()
|
markup = types.ReplyKeyboardRemove()
|
||||||
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 == 'Послушать':
|
||||||
file = BotDB.get_random_audio(user_id=message.from_user.id)[0]
|
check_audio = BotDB.check_listen_audio(user_id=message.from_user.id)
|
||||||
path = Path(f'voice_users/{file}.ogg')
|
list_audio = list(check_audio)
|
||||||
|
if list_audio == []:
|
||||||
|
msg = bot.send_message(message.chat.id, 'Прости, ты прослушал все аудио. Возвращайся позже', reply_markup=markup)
|
||||||
|
bot.register_next_step_handler(msg, standup)
|
||||||
|
else:
|
||||||
|
number_element = random.randint(0, len(list_audio) - 1)
|
||||||
|
audio_for_user = check_audio[number_element]
|
||||||
|
path = Path(f'voice_users/{audio_for_user}.ogg')
|
||||||
voice = open(path, 'rb')
|
voice = open(path, 'rb')
|
||||||
#Клавиатуру добавляем
|
#Маркируем сообщение как прослушанное
|
||||||
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
|
BotDB.mark_listened_audio(audio_for_user, user_id=message.from_user.id)
|
||||||
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)
|
msg = bot.send_voice(message.chat.id, voice=voice, reply_markup=markup)
|
||||||
bot.register_next_step_handler(msg, standup)
|
bot.register_next_step_handler(msg, standup)
|
||||||
elif message.text == 'Вернуться в меню':
|
elif message.text == 'Вернуться в меню':
|
||||||
|
|||||||
Reference in New Issue
Block a user