def game(message): # Подключаемся к БД db_worker = SQLighter(config.database_name) # Получаем случайную строку из БД row = db_worker.select_single(random.randint(1, utils.get_rows_count())) print(utils.get_rows_count()) # Формируем разметку markup = utils.generate_markup(row[0], row[1]) # Отправляем аудиофайл с вариантами ответа bot.send_message(message.chat.id, row[1], reply_markup=markup) # Включаем "игровой режим" utils.set_user_game(message.chat.id, row[1]) # Отсоединяемся от БД db_worker.close()
def game_7_18_not_9_10(message): #получаем сообщение пользователя message_namber = message.text #разбиваем сообщение на части, делитель - символ / answer_number = message_namber.split('/') # Подключаемся к БД db_worker = SQLighter(config.database_name) # Получаем случайную строку из БД по номеру таблицы взятую из сообщения answer_number row = db_worker.select_single( random.randint(1, utils.get_rows_count(answer_number[1])), answer_number[1]) if answer_number[1] == '7' or answer_number[1] == '11' or answer_number[ 1] == '12': # Отправляем вводную часть вопроса bot.send_message(message.chat.id, row[2]) # Отправляем картинку bot.send_photo(message.chat.id, row[1]) elif answer_number[1] == '8': # Отправляем вводную часть вопроса с форматированием bot.send_message(message.chat.id, row[2], parse_mode='HTML') # Отправляем основную часть вопроса bot.send_message(message.chat.id, row[1]) # Отправляем вопрос bot.send_message(message.chat.id, row[3]) # Включаем "игровой режим"... ждем ответа от пользователя utils.set_user_game(message.chat.id, row[4], row[5]) # Отсоединяемся от БД db_worker.close()
def game(message): db_worker = SQLLiter(config.DB_NAME) row = db_worker.fetch_single_record(row_number=random.randint(1, utils.get_rows_count()[0]))[0] markup = utils.generate_markup(right_answer=row[2], wrong_answers=row[3]) bot.send_voice(chat_id=message.chat.id, voice=row[1], reply_markup=markup) utils.set_user_game(chat_id=message.chat.id, right_answer=row[2]) db_worker.close_connection()
def game(message): db_worker = SQLighter(config.database_name) row = db_worker.select_single(random.randint(1, utils.get_rows_count())) markup = utils.generate_markup(row[2], row[3]) bot.send_voice(message.chat.id, row[1], reply_markup=markup) utils.set_user_game(message.chat.id, row[2]) db_worker.close()
def game_1_6(message): # Подключаемся к БД message_namber = message.text answer_number = message_namber.split('/') #keyboard_hider = types.ReplyKeyboardRemove() db_worker = SQLighter(config.database_name) # Получаем случайную строку из БД row = db_worker.select_single( random.randint(1, utils.get_rows_count(answer_number[1])), answer_number[1]) # Формируем разметку markup = utils.generate_markup(row[4], row[5], answer_number[1]) if answer_number[1] == '3' or answer_number[1] == '5': # Отправляем вводную часть вопроса bot.send_message(message.chat.id, row[2]) # Отправляем картинку bot.send_photo(message.chat.id, row[1]) if answer_number[1] == '4' or answer_number[1] == '6': # Отправляем вводную часть вопроса с форматированием bot.send_message(message.chat.id, row[2], parse_mode='HTML') # Отправляем основную часть вопроса с форматированием bot.send_message(message.chat.id, row[1], parse_mode='HTML') # Отправляем вопрос и заменяем кдавиатуру на варианты ответа bot.send_message(message.chat.id, row[3], reply_markup=markup) # Включаем "игровой режим"... ждем ответа от пользователя utils.set_user_game(message.chat.id, row[4], row[6]) # Отсоединяемся от БД db_worker.close()
def delete(message): db_worker = SQLighter(config.database_name) i = 0 while i < utils.get_rows_count(): i = i + 1 row = db_worker.select_single(i) if row[3] == str(message.chat.id): db_worker.del_id(i) bot.send_message(message.chat.id, "Видалення прив'язки до id (" + str(row[1]) + ") було успішним") break db_worker.close()
def game(call): if call.data == "game": db_worker = SQLighter(database_name) row = db_worker.select_single(random.randint(1, utils.get_rows_count())) markup = utils.generate_markup(row[2], row[3]) img = open("pictures/" + row[1] + '.jpg', 'rb') bot.send_photo(call.message.chat.id, img, reply_markup=markup) utils.set_user_game(call.message.chat.id, row[2]) img.close() db_worker.close()
def game(message): global test if (message.text == 'Dopeclvb') or (message.text == 'Погнали!'): if test: game.k = 1 test = False db_worker = SQLighter(config.database_name) row = db_worker.select_single(game.k) markup = utils.generate_markup(row[2], row[3]) bot.send_voice(message.chat.id, row[1], reply_markup=markup) utils.set_user_game(message.chat.id, row[2]) db_worker.close() elif (message.text == 'Pharaoh') or (message.text == 'Давай следующий!'): if test: game.k = 1 test = False db_worker = SQLighter(config.database_name) row = db_worker.select_single(game.k) markup = utils.generate_markup(row[2], row[3]) bot.send_voice(message.chat.id, row[1], reply_markup=markup) utils.set_user_game(message.chat.id, row[2]) db_worker.close() else: answer = utils.get_answer_for_user(message.chat.id) if not answer: bot.send_message( message.chat.id, 'Чтобы начать игру, наберите любую из команд /...') else: keyboard_hider = types.ReplyKeyboardRemove() if message.text == answer: bot.send_message(message.chat.id, 'Чертовски правильный ответ', reply_markup=keyboard_hider) else: bot.send_message(message.chat.id, 'Эх, надо бы подучить треки, неверно', reply_markup=keyboard_hider) utils.finish_user_game(message.chat.id) markup_d = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True) item1_d = types.KeyboardButton('Погнали!') item2_d = types.KeyboardButton('Выход:(') markup_d.add(item1_d, item2_d) if game.k < utils.get_rows_count(): game.k += 1 bot.send_message(message.chat.id, 'Готов к следующему треку?', reply_markup=markup_d) else: bot.send_message(message.chat.id, 'Больше треков нет, выхожу из игры') test = True
def send_grades(message): db_worker = SQLighter(config.database_name) i = 0 n = 4 while i < utils.get_rows_count(): row = db_worker.select_single(i+1) if row[3] == str(message.chat.id): while n < 7: bot.send_message(message.chat.id, str(row[1])+" ("+str(row[n]) + ") = " + str(row[n+1])) n = n + 2 break i = i + 1 db_worker.close()
def Set_ID(message): db_worker = SQLighter(config.database_name) i = 0 mass = [] while i < utils.get_rows_count(): row = db_worker.select_single(i+1) mass.append(row[2]) i = i + 1 bot.send_message(message.chat.id, "*примітка (якщо вивведете невірний номер, буде ввімкнена затримка)\n" + "Введіть номер зілікової книги:") utils.set_user_game(message.chat.id, mass) db_worker.close()
def game(message): # Подключаемся к БД db_worker = SQLighter(config.database_name) # Получаем случайную строку из БД row = db_worker.select_single(random.randint(1, utils.get_rows_count())) # Формируем разметку markup = utils.generate_markup(row[2], row[3]) # Отправляем аудиофайл с вариантами ответа bot.send_voice(message.chat.id, row[1], reply_markup=markup, duration=20) # Включаем "игровой режим" utils.set_user_game(message.chat.id, row[2]) # Отсоединяемся от БД db_worker.close()
def game(message): cid = message.chat.id uid = message.from_user.id chat_type = message.chat.type db_worker = SQLighter(config.database_name) row = db_worker.select_single(random.randint(1, utils.get_rows_count())) markup = utils.generate_markup(row[2],row[3]) if chat_type == "private": bot.send_voice(cid, row[1], reply_markup=markup) utils.set_user_game(cid, row[2]) elif (chat_type == "group")|(chat_type == "supergroup"): bot.send_voice(cid, row[1], reply_markup=markup, reply_to_message_id=message.message_id) utils.set_user_game(uid, row[2]) db_worker.close()
def send_question_from_db(self, message, step): db_worker = SQLLighter(config.database_name) utils.count_rows_for_step(step) row = db_worker.select_single_for_step(random.randint(1, utils.get_rows_count()), step) markup = utils.generate_markup(row[2], row[3]) utils.set_user_game(message.chat.id, row[0],row[2]) q_id = utils.get_q_id_for_user(message.chat.id) check_chat = db_worker.count_rows_question_for_chat(message.chat.id, q_id) if check_chat == 0: self.bot.send_message(message.chat.id, row[1], reply_markup=markup) db_worker.save_question_result(message.chat.id, row[0]) else: self.bot.send_message(message.chat.id, text='Вы уже отвечали на вопросы тестирования. Повторная попытка!') utils.finish_user_game(message.chat.id) db_worker.close()
def next_song(message): db_worker = SQLighter(config.database_name) user = db_worker.get_user(message.chat.id) song_order = user[3] score = user[2] rownum = utils.get_rows_count() if song_order >= rownum+1: db_worker.reset_user(message.chat.id) bot.send_message(message.chat.id, 'Упс! Песни закончились и ваш результат {} угаданных из {}! Чтобы начать игру заново, введите команду /game'.format(score, rownum)) else: song = db_worker.select_single(song_order) markup = utils.generate_markup(song[2], song[3]) bot.send_voice(message.chat.id, song[1], reply_markup=markup) utils.set_user_game(message.chat.id, song[2]) db_worker.close()
def game(message): db = DBase(config.database_name) g = utils.get_rows_count() L = list(range(1, g + 1)) random.shuffle(L) LL = [] for i in range(4): row = db.select_single(L[i]) LL.append(row[2]) markup = utils.generate_markup(LL) ans = db.select_single(L[0]) bot.send_voice(message.chat.id, ans[1], reply_markup=markup, reply_to_message_id=message.message_id) utils.set_user_game(message.chat.id, ans[2], message.chat.username) db.close()
def game(message): rows_count = utils.get_rows_count() if rows_count == 0: bot.send_message( message.chat.id, "Бот не настроен. Выберите команду /setup, чтобы настроить бота.") return # Выбираем случайный вопрос row_id = random.randint(1, rows_count) row = db_manager.select_row(row_id) # Отправляем вопрос markup = utils.generate_markup(row['right_answer'], row['wrong_answers']) msg = bot.send_voice(message.chat.id, row['file_id'], reply_markup=markup) # Записываем состояние игры для игрока. utils.set_user_game(message.chat.id, row['right_answer'])
def job(): if str(message.chat.id) == '530401755': db_worker = SQLighter(config.database_name) i = 1 while i <= utils.get_rows_count(): row = db_worker.select_single(i) if row[3] == "": while row[3] == "": i = i + 1 row = db_worker.select_single(i) n = 4 while n < 7: bot.send_message(int(row[3]), str(row[1]) + " (" + str(row[n]) + ") = " + str(row[n + 1])) n = n + 2 i = i + 1 db_worker.close() else: bot.send_message(message.chat.id, "У вас немає прав для цього!")
def check_answer(message): # Если функция возвращает None -> Человек не в игре answer = utils.get_answer_for_user(message.chat.id) # Если None: if not answer: if message.text == "Начать игру": # Подключаемся к БД db_worker = SQLighter(config.database_name) # Получаем слачайную строку из БД row = db_worker.select_single(random.randint(1, utils.get_rows_count())) # Формируем разметку markup = utils.generate_markup(row[2], row[3]) # отправляем аудиофайл с вариантами ответа bot.send_voice(message.chat.id, row[1], reply_markup=markup) # Включаем "игровой режим" utils.set_user_game(message.chat.id, row[2]) # Отсоединяемся от БД db_worker.close() elif message.text == 'Cтатистика': Res = utils.return_res(message.chat.id) bot.send_message(message.chat.id, 'Ваш cчет: ' + str(Res)) else: bot.send_message(message.chat.id, 'Чтобы начать игру, напишите команду /game') else: # Уберём клавиатуру с вариантами ответа, и вернём предыдущую. markup = utils.menu() # Если ответ правильный/неправильный if message.text == answer: bot.send_message(message.chat.id, 'Верно', reply_markup=markup) res = True else: bot.send_message(message.chat.id, 'Не верно. Попробуйте еще раз!', reply_markup=markup) res = False utils.remove_res(message.chat.id, res) # Удаляем юзера из хранилища (игра закончена) utils.finish_user_game(message.chat.id)
def for_count_r(j): if config.debug == 1: return 2 else: return utils.get_rows_count(j)
import telebot
@bot.message_handler(commands=['game']) def game(message): db_worker = SQLLiter(config.DB_NAME) row = db_worker.fetch_single_record(row_number=random.randint(1, utils.get_rows_count()[0]))[0] markup = utils.generate_markup(right_answer=row[2], wrong_answers=row[3]) bot.send_voice(chat_id=message.chat.id, voice=row[1], reply_markup=markup) utils.set_user_game(chat_id=message.chat.id, right_answer=row[2]) db_worker.close_connection() @bot.message_handler(func=lambda message: True, content_types=['text']) def check_answer(message): right_answer = utils.get_right_answer_for_user(message.chat.id) if not right_answer: bot.send_message(chat_id=message.chat.id, text="To start the game choose '/game' command!") else: keyboard_hider = telebot.types.ReplyKeyboardRemove() if message.text == right_answer: msg = "Congrats! Your answer is correct!" else: msg = "Incorrect! Try again!" bot.send_message(chat_id=message.chat.id, text=msg, reply_markup=keyboard_hider) utils.finish_user_game(chat_id=message.chat.id) if __name__ == "__main__": logging.info("Bot is starting...") utils.get_rows_count() random.seed() bot.infinity_polling()
def game_10(message): code = utils.set_user_code_get(message.chat.id) if not code or code == '': markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) markup.row('/sсhoolalgorithm') markup.row('/basic', '/pascal') markup.row('/python') bot.send_message( message.chat.id, 'ВНИМАНИЕ! Не выбран предпочитаемый язык программирования!\nВыбери предпочитаемый язык программирования:\n * shoolAlgorithm - Алгоритмический язык (КУМИР)\n * basic - бейсик\n * pascal - Паскаль\n * Pyhon - Пайтон (Питон)', reply_markup=markup) else: #получаем сообщение пользователя message_namber = message.text #разбиваем сообщение на части, делитель - символ / answer_number = message_namber.split('/') # Подключаемся к БД db_worker = SQLighter(config.database_name) # Получаем случайную строку из БД по номеру таблицы взятую из сообщения answer_number row = db_worker.select_single( random.randint(1, utils.get_rows_count(answer_number[1])), answer_number[1]) #Отсоединяемся от БД db_worker.close() #Генерируем значение пременной для дополнительного сообщения: chat_message = { '2': 'Алгоритмический язык', '3': 'BASIC', '4': 'Pascal', '5': 'Pyhon' } #генерируем случайные числа для шаблона программы из базы данных Dat = [random.randint(10, 20) for i in range(10)] #Генерируем вспомогательное число для сравнения или подсчета t = random.randint(10, 20) #сохраняем в переменную текст шаюблона из базы данных result_code = row[int(code)] #заменяем данные в шаблоне for i in range(10): result_code = result_code.replace('{dat' + str(int(i)) + '}', str(Dat[i])) result_code = result_code.replace('{t}', str(t)) # Отправляем вводную часть вопроса bot.send_message(message.chat.id, row[1]) # Отправляем основную часть вопроса c форматированием bot.send_message(message.chat.id, '<pre>' + result_code + '</pre>', parse_mode='HTML') # Отправляем дополнительное сообщение bot.send_message( message.chat.id, 'Текст программы приведён на языке программирования: ' + chat_message[code]) #сохраняем в переменную текст шаюблона пояснения из базы данных result_memorial = row[7] #заеняем данные в шаблоне result_memorial = result_memorial.replace('{t}', str(t)) result_memorial = result_memorial.replace( '{answer}', utils.generate_right_answer_10(row[6], Dat, t)) # Включаем "игровой режим"... ждем ответа от пользователя utils.set_user_game(message.chat.id, utils.generate_right_answer_10(row[6], Dat, t), result_memorial)