def know_this_films(call: CallbackQuery): bot.delete_message(call.message.chat.id, call.message.message_id) new = utils.BD('BD.sqlite') arr = new.films_not_watch_user(call.from_user.id) print(arr) if len(arr) < 3: m = bot.send_message(call.message.chat.id, 'Понял.\nСпрошу в другой раз') time.sleep(5) bot.delete_message(call.message.chat.id, m.message_id) send_start_repeat(call.message.chat.id) else: arr2 = [] question = 'Может знаешь какой то из этих фильмов?\nМожешь выбрать один и оценить?' keyboard = InlineKeyboardMarkup(row_width=4) for i in arr[0:3]: res = new.conn.execute( 'SELECT film_name FROM Films WHERE film_id = (?)', (i, )).fetchall() arr2.append(res[0][0]) f1 = InlineKeyboardButton(text=arr2[0], callback_data=arr[0]) f2 = InlineKeyboardButton(text=arr2[1], callback_data=arr[1]) f3 = InlineKeyboardButton(text=arr2[2], callback_data=arr[2]) ex = InlineKeyboardButton(text='Не знаю/Не могу/Не сейчас', callback_data='ex') keyboard.row(f1) keyboard.row(f2) keyboard.row(f3) keyboard.row(ex) bot.send_message(call.message.chat.id, text=question, reply_markup=keyboard)
def add_comment(message): if message.text[0] == '/': mes = bot.send_message( message.from_user.id, text='Извините, но комментарий не может начинаться с "/".') time.sleep(5) bot.delete_message(mes.chat.id, mes.message_id) bot.register_next_step_handler(message, get_film) return new = utils.BD('BD.sqlite') file_user = open(dir_user_kash + str(message.from_user.id) + '.txt', "r") film_name = file_user.read() file_user.close() new.set_comment(new.film_name_to_id(film_name), message.from_user.id, 'comm_text', message.text) bot.send_message(message.from_user.id, 'Большое спасибо за оставленный отзыв!)') new.validation_comment(new.film_name_to_id(film_name), message.from_user.id) file_user = open(dir_user_kash + str(message.from_user.id) + '.txt', "r") check_dialog = file_user.read() file_user.close() if check_dialog == '1': send_start_repeat(message.chat.id) else: file_user = open(dir_check_dialog + str(message.from_user.id) + '.txt', "w") file_user.write('1') file_user.close() utils.update_film_rating()
def get_film(message): if message.text[0] == '/': mes = bot.send_message( message.from_user.id, text='Извините, но фильм не может начинаться с "/". Повторите ввод.' ) bot.register_next_step_handler(message, get_film) return new = utils.BD('BD.sqlite') if new.check_film(new.film_name_to_id(message.text)): question = 'Я такой знаю. Как он тебе? Оставь оценку.\nОцени сюжет:' new.add_seen_user(new.film_name_to_id(message.text), message.from_user.id) else: question = 'Я такой не знаю. И как он тебе? Оставь оценку.\nОцени сюжет:' new.add_film(message.text, message.from_user.id) new.add_comment(new.film_name_to_id(message.text), message.from_user.id) keyboard = ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True) # наша клавиатура keyboard.row("1", "2", "3", "4", "5") keyboard.row("6", "7", "8", "9", "10") bot.send_message(message.from_user.id, text=question, reply_markup=keyboard) file_user = open(dir_user_kash + str(message.from_user.id) + '.txt', "w") file_user.write(str(message.text)) file_user.close() bot.register_next_step_handler(message, add_rating1)
def start_agreement_yes(call: CallbackQuery): bot.delete_message(call.message.chat.id, call.message.message_id) if call.data == 'no0': new_message = bot.send_message(call.message.chat.id, 'Хорошо напишу позже') time.sleep(5) bot.delete_message(new_message.chat.id, new_message.message_id) send_start_repeat(call.message.chat.id) else: new = utils.BD('BD.sqlite') arr = new.check_notvalid_comm(call.from_user.id) if len(arr) != 0: film_name = new.conn.execute( 'SELECT film_name FROM Films WHERE film_id = (?)', (arr[0], )).fetchall() com = new.conn.execute( 'SELECT rating1, rating2, rating3, rating4, rating5, comm_text ' 'FROM Comments ' 'WHERE film_id = (?) and user_id = (?)', ( arr[0], arr[1], )).fetchall() rate = str( int((com[0][0] + com[0][1] + com[0][2] + com[0][3] + com[0][4]) / 10)) text = 'Можешь пожалуйста помочь мне понять, является ли коментарий к фильму "' + film_name[0][0] + \ '" состоятельным, относительно оставленой оценки?\n' + \ 'Оценка (где 0-фильм ужасен, 10-фильм прекрасен): \n' + rate + \ '\nКомментарий: \n"' + com[0][5] + '".' keyboard = InlineKeyboardMarkup(row_width=3) yes = InlineKeyboardButton(text='Да', callback_data='yes1') no = InlineKeyboardButton(text='Нет', callback_data='no1') diff = InlineKeyboardButton(text='Затрудняюсь ответить', callback_data='diff') keyboard.add(yes, no, diff) bot.send_message(call.message.chat.id, text=text, reply_markup=keyboard) file_user = open(dir_user_kash + str(call.from_user.id) + '.txt', "w") file_user.write(film_name[0][0]) file_user.close() else: keyboard = InlineKeyboardMarkup(row_width=2) question = 'Понял. Ходил(а) недавно в кино?' yes = InlineKeyboardButton(text='Да', callback_data='y2') no = InlineKeyboardButton(text='Нет', callback_data='n2') keyboard.add(yes, no) bot.send_message(call.message.chat.id, text=question, reply_markup=keyboard)
def add_rating5(message): s = message.text if s.isdigit() and 0 < int(s) < 11: new = utils.BD('BD.sqlite') file_user = open(dir_user_kash + str(message.from_user.id) + '.txt', "r") film_name = file_user.read() file_user.close() new.set_comment(new.film_name_to_id(film_name), message.from_user.id, 'rating5', int(message.text)) bot.send_message(message.from_user.id, 'Полжалуйста оставь небольшой комментарий:') bot.register_next_step_handler(message, add_comment) else: bot.send_message(message.from_user.id, 'Неверный ввод, пожалуйста введите цифру от 1 до 10') bot.register_next_step_handler(message, add_rating1)
def send_start(message): name_user = message.from_user.first_name + " " + message.from_user.last_name # Создаем, если не существовала, базу BDUser with utils.BD() as db: db.add_user(message.from_user.id, name_user) # Добавляем пользователя file_user = open(dir_check_dialog + str(message.from_user.id) + '.txt', "w") file_user.write('1') file_user.close() keyboard = InlineKeyboardMarkup(row_width=2) question = 'Приветствую ' + name_user + '. Я бот, который собирает мнения о текущих фильмах. ' \ 'Удобно сейчас пообщаться?' yes = InlineKeyboardButton(text='Конечно', callback_data='yes0') no = InlineKeyboardButton(text='В другой раз', callback_data='no0') keyboard.add(yes, no) bot.send_message(message.from_user.id, text=question, reply_markup=keyboard) bot.delete_message(message.chat.id, message.message_id)
def know_film(call: CallbackQuery): new = utils.BD('BD.sqlite') new.add_comment((call.data, ), call.from_user.id) new.add_seen_user((call.data, ), call.from_user.id) res = new.conn.execute('SELECT film_name FROM Films WHERE film_id = (?)', (call.data, )).fetchall() print(res) question = res[0][0] + '\nОцени сюжет:' keyboard = ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True) # наша клавиатура keyboard.row("1", "2", "3", "4", "5") keyboard.row("6", "7", "8", "9", "10") message = bot.send_message(call.from_user.id, text=question, reply_markup=keyboard) file_user = open(dir_user_kash + str(call.from_user.id) + '.txt', "w") file_user.write(res[0][0]) file_user.close() bot.register_next_step_handler(message, add_rating1)
def add_rating4(message): s = message.text if s.isdigit() and 0 < int(s) < 11: new = utils.BD('BD.sqlite') file_user = open(dir_user_kash + str(message.from_user.id) + '.txt', "r") film_name = file_user.read() file_user.close() new.set_comment(new.film_name_to_id(film_name), message.from_user.id, 'rating4', int(message.text)) question = 'Оцени звук:' keyboard = ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True) # наша клавиатура keyboard.row("1", "2", "3", "4", "5") keyboard.row("6", "7", "8", "9", "10") bot.send_message(message.from_user.id, text=question, reply_markup=keyboard) bot.register_next_step_handler(message, add_rating5) else: bot.send_message(message.from_user.id, 'Неверный ввод, пожалуйста введите цифру от 1 до 10') bot.register_next_step_handler(message, add_rating1)
def send_what_film(call: CallbackQuery): bot.delete_message(call.message.chat.id, call.message.message_id) new = utils.BD('BD.sqlite') if call.data == 'yes': file_user = open(dir_user_kash + str(call.from_user.id) + '.txt', "r") film_name = file_user.read() file_user.close() new.resize_second_check(new.film_name_to_id(film_name), call.from_user.id, 1) elif call.data == 'no': file_user = open(dir_user_kash + str(call.from_user.id) + '.txt', "r") film_name = file_user.read() file_user.close() new.resize_second_check(new.film_name_to_id(film_name), call.from_user.id, 0) keyboard = InlineKeyboardMarkup(row_width=2) question = 'Спасибо, я тебя понял. Ходил(а) недавно в кино?' yes = InlineKeyboardButton(text='Да', callback_data='y2') no = InlineKeyboardButton(text='Нет', callback_data='n2') keyboard.add(yes, no) bot.send_message(call.message.chat.id, text=question, reply_markup=keyboard)
def rat(message): utils.update_film_rating() new = utils.BD('BD.sqlite') film_id = new.film_name_to_id(message.text) if new.check_film(film_id): x = new.conn.execute('SELECT rating1 FROM Films WHERE film_id = (?)', film_id).fetchall() if x[0] != 0: text = 'Я такой знаю. Вот что мне известно:' res = new.get_film(film_id) text = text + '\nОценка сюжета: ' + str(res[0][3]) + \ '\nОценка монтажа: ' + str(res[0][4]) + \ '\nОценка диалогов: ' + str(res[0][5]) + \ '\nОценка персонажей: ' + str(res[0][6]) + \ '\nОценка озвучивания: ' + str(res[0][7]) + \ '\nКОММЕНТАРИИ:\n' res = new.get_comment(film_id) for i in range(1, len(res) + 1): text = text + str(i) + ': "' + str(res[0][3]) + '"; \n' else: text = 'Я такой знаю. Но информации по нему нет. Его еще не оценивали.' else: text = 'Извиняюсь, я такой не знаю.' bot.send_message(message.chat.id, text)