def allresults(bot, updater): time.sleep(random.uniform(0, 0.7)) if 'callback_query' in str(updater): id = updater.callback_query.message.chat.id else: id = updater.message.chat.id try: players = wr.read_results() players = calc(id, players) wr.write_results(players) resus = players[str(id)][2] for resu in resus: if resu[1]: text = 'Ваш финальный результат на {} '.format( str(resu[0])[:-7]) if resu[3][:11] != 'not contest': text += 'на Карусели :\n' else: text += 'на Дорешке :\n' for res in list(str(i) for i in range(1, 7)): text += '№{} - {} |'.format(res, resu[1][res][0]) + ' ' text = text[:-2] + '\n' for res in list(str(i) for i in range(7, 13)): text += '№{} - {} |'.format(res, resu[1][res][0]) + ' ' text = text[:-2] + '\n' if resu[3][:11] != 'not contest': text += 'И сумма ваших очков: ' + \ str(sum(resu[1][i][0] for i in resu[1].keys())) + '.' else: text += 'И количество решённых вами задач: ' + \ str(sum(resu[1][i][0] for i in resu[1].keys())) + '.' bot.send_message(chat_id=id, text=text) except KeyError: bot.send_message(chat_id=id, text='Ты ещё не начал.')
def start_carousel(bot, updater, compete, job_queue): time.sleep(random.uniform(0, 0.7)) today = pidr_cd(bot, updater)[1] players = wr.read_results() name = str(updater.callback_query.message.chat.username) + ' ' + str(updater.callback_query.message.chat.first_name) + ' ' + str(updater.callback_query.message.chat.last_name) if str(updater.callback_query.message.chat.id) in players: players[str(updater.callback_query.message.chat.id)][2].append([today.strftime("%Y-%m-%d %H:%M:%S.%f"), {'1': [0], '2': [0], '3': [0], '4': [0], '5': [0], '6': [0], '7': [0], '8': [0], '9': [0], '10': [0], '11': [0], '12': [0]}, compete, 'started']) else: players[str(updater.callback_query.message.chat.id)] = [updater.callback_query.message.chat.id, '@' + name, [[today.strftime("%Y-%m-%d %H:%M:%S.%f"), {'1': [0], '2': [0], '3': [0], '4': [0], '5': [0], '6': [0], '7': [0], '8': [0], '9': [0], '10': [0], '11': [0], '12': [0]}, compete, 'started']]] wr.write_results(players) time.sleep(random.uniform(0, 0.7)) bot.send_message( chat_id=updater.callback_query.message.chat.id, text='Тур стартует! Решайте внимательно и осторожно...') time.sleep(random.uniform(0, 0.7)) print_problem(bot, updater, 1) if pidr_cd(bot, updater): end = dt.datetime(2019, 3, 6, 1, tzinfo=pytz.timezone('Europe/Moscow')) job_queue.run_once(timer, (end-today).total_seconds(), context=updater.callback_query.message.chat.id)
def timer(bot, job): players = wr.read_results() if players[str(job.context)][2][len( players[str(job.context)][2]) - 1][3] == 'started': bot.send_message(chat_id=job.context, text='ВРЕМЯ ИСТЕКЛО!') players[str(job.context)][2][len( players[str(job.context)][2]) - 1][3] = 'ended' wr.write_results(players) bot.send_message( chat_id=job.context, text='Ура! Тур завершён!\nРезультаты будут опубликованы в боте и на странице: vk.com/sashashivarov') result(bot, job.context) bot.send_message( chat_id=job.context, text='А сейчас вы сможете оставить свой комментарий/пожелания, например, какая задача вам понравилась больше всего, какая меньше.\nСпасибо большое, за то что приняли участие в проекты, если вы хотите поддержать нас, то ') donate(bot, job.context) select_problems(bot, updater)
def answer_problem(bot, updater): time.sleep(random.uniform(0, 0.7)) message = updater.message players = wr.read_results() try: if players[str(message.from_user.id)][2][len( players[str(message.from_user.id)][2]) - 1][3] == 'ended': bot.send_message(chat_id=message.chat.id, text='Уже всё(') else: res = players[str(message.from_user.id)][2][len( players[str(message.from_user.id)][2]) - 1][1] markup = telegram.ReplyKeyboardRemove(selective=False) ans = message.text rep = message.reply_to_message.text num = int(rep[19:-2]) try: a = float(ans) if len(res[str(num)]) == 2: bot.send_message( chat_id=message.chat.id, text='Ты уже ответил на этот вопрос!') else: if players[str(message.chat.id)][2][len(players[str(message.chat.id)][2]) - 1][3] == 'started': res[str(num)].append(ans) if ans == problems[num-1][1]: bot.send_message(chat_id=message.chat.id, text='Ответ верный!') else: bot.send_message(chat_id=message.chat.id, text='Ответ неверный!') if num == len(problems): players[str(message.from_user.id)][2][len( players[str(message.from_user.id)][2]) - 1][3] = "ended" wr.write_results(players) bot.send_message( chat_id=message.chat.id, text='Ура! Тур завершён!\nРезультаты будут опубликованы в группе:\nvk.com/economic_carousel') result(bot, updater) bot.send_message( chat_id=message.chat.id, text='А сейчас вы сможете оставить свой комментарий/пожелания, например, какая задача вам понравилась больше всего, какая меньше.\nhttps://goo.gl/forms/XBIyXoYEEQUrB9IB2\nСпасибо большое, за то что приняли участие в проекты, если вы хотите поддержать нас, то ') donate(bot, updater) select_problems(bot, updater) else: wr.write_results(players) print_problem(bot, updater, num + 1) else: if problems[num - 1][1] == ans: if len(res[str(num)]) == 1: res[str(num)].append(ans) else: res[str(num)][1] = ans wr.write_results(players) bot.send_message( chat_id=message.chat.id, text="Верно!", reply_markup=markup) else: bot.send_message( chat_id=message.chat.id, text="Неправильно(\nПопробуй еще!", reply_markup=markup) markup = telegram.ForceReply(selective=False) bot.send_message( chat_id=message.chat.id, text='Ваш ответ к задаче {} :'.format(num), reply_markup=markup) except ValueError: bot.send_message( chat_id=message.chat.id, text="Неправильный формат ответа!\nПопробуй еще!", reply_markup=markup) markup = telegram.ForceReply(selective=False) bot.send_message( chat_id=message.chat.id, text='Ваш ответ к задаче {} :'.format(num), reply_markup=markup) except KeyError: bot.send_message(chat_id=message.chat.id, text='Ты ещё не начал.')
def select_problems(bot, updater): time.sleep(random.uniform(0, 0.7)) if 'callback_query' in str(updater): message = updater.callback_query.message else: message = updater.message players = wr.read_results() today = pidr_cd(bot, updater)[1] state = pidr_cd(bot, updater)[0] name = str(message.chat.username) + ' ' + str(message.chat.first_name) + ' ' + str(message.chat.last_name) contest = players[str(message.chat.id)][2][len(players[str(message.chat.id)][2])-1][3] if str(message.chat.id) not in players: players[str(message.chat.id)] = [message.chat.id, '@' + name, [[today.strftime("%Y-%m-%d %H:%M:%S.%f"), {'1': [0], '2': [0], '3': [0], '4': [0], '5': [0], '6': [0], '7': [0], '8': [0], '9': [0], '10': [0], '11': [0], '12': [0]}, 2, 'not contest{}'.format(state)]]] wr.write_results(players) elif contest[:11] != 'not contest': players[str(message.chat.id)][2].append([today.strftime("%Y-%m-%d %H:%M:%S.%f"), {'1': [0], '2': [0], '3': [0], '4': [0], '5': [0], '6': [0], '7': [0], '8': [0], '9': [0], '10': [0], '11': [0], '12': [0]}, 2, 'not contest{}'.format(state)]) wr.write_results(players) if contest[:11] == 'not contest': btnlist = [] for i in range(1, 8, 6): btnlist.append(telegram.InlineKeyboardButton( str(i), callback_data='pr_{}'.format(i))) btnlist.append(telegram.InlineKeyboardButton( str(i + 1), callback_data='pr_{}'.format(i + 1))) btnlist.append(telegram.InlineKeyboardButton( str(i + 2), callback_data='pr_{}'.format(i + 2))) btnlist.append(telegram.InlineKeyboardButton( str(i + 3), callback_data='pr_{}'.format(i + 3))) btnlist.append(telegram.InlineKeyboardButton( str(i + 4), callback_data='pr_{}'.format(i + 4))) btnlist.append(telegram.InlineKeyboardButton( str(i + 5), callback_data='pr_{}'.format(i + 5))) markup = telegram.InlineKeyboardMarkup(wr.build_menu(btnlist, n_cols=6)) bot.send_message( chat_id=message.chat.id, text='Выбери задачу из списка!', reply_markup=markup) else: bot.send_message(chat_id=message.chat.id, text='Ты уже начал контест!')