コード例 #1
0
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='Ты ещё не начал.')
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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='Ты ещё не начал.')
コード例 #5
0
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='Ты уже начал контест!')