コード例 #1
0
def handle_report_plan(bot, update):
    user = User.get(update.user_id)
    plan = Plan.get(update.cmd_args['plan_id'])
    text = f'{status_icons[plan.status_array[0]]} {plan.plan_array[0]}'

    bot.send_message(
        update.user_id,
        text,
        keyboard=keyboards.get_plan_item_keyboard(
            user,
            plan.id,
            0,
            pending=plan.status_array[0] == CheckStatus.PENDING.value),
        update=update.update_current)
コード例 #2
0
def handle_plan_item_change(bot, update):
    user = User.get(update.user_id)
    plan = Plan.get(update.cmd_args['plan_id'])
    cur_item_idx = update.cmd_args['item_idx']
    new_item_dx = ((cur_item_idx + 1) % len(plan.plan_array)) if update.cmd_args['to'] == 'next' \
        else ((cur_item_idx - 1) % len(plan.plan_array))
    text = f'{status_icons[plan.status_array[new_item_dx]]} {plan.plan_array[new_item_dx]}'

    bot.send_message(update.user_id,
                     text,
                     keyboard=keyboards.get_plan_item_keyboard(
                         user,
                         plan.id,
                         new_item_dx,
                         pending=plan.status_array[new_item_dx] ==
                         CheckStatus.PENDING.value),
                     update=update.update_current)
コード例 #3
0
def handle_plan_item_report(bot, update):
    user = User.get(update.user_id)
    plan = Plan.get(update.cmd_args['plan_id'])
    item_idx = update.cmd_args['item_idx']
    status = update.cmd_args['status']
    plan.status_array[item_idx] = status
    plan.save()

    if status == CheckStatus.SUCCESS.value:
        user.score += 1
    elif status == CheckStatus.FAIL.value:
        user.score -= 1
    user.save()

    if CheckStatus.PENDING.value in plan.status_array:
        text = f"{status_icons[status]} {plan.plan_array[item_idx]}\n\n"
        sign = '+' if status == CheckStatus.SUCCESS.value else '-'
        point = '1 очко' if user.language_code == 'ru' else '1 point'
        text += sign + point

        bot.send_message(update.user_id,
                         text,
                         keyboard=keyboards.get_plan_item_keyboard(
                             user,
                             plan.id,
                             item_idx,
                             pending=(status == CheckStatus.PENDING.value)),
                         update=update.update_current)
        return False

    else:
        handle_show_plan(bot, update)
        ru_text = 'Теперь можно и отдохнуть😊'
        en_text = 'Now you can relax😊'
        text = ru_text if user.language_code == 'ru' else en_text

        bot.send_message(update.user_id, text)
        return True
コード例 #4
0
def handle_show_plan(bot, update):
    user = User.get(update.user_id)
    if update.cmd_args:
        plan = Plan.get(update.cmd_args['plan_id'])
    else:
        plan = user.today_plan

    today = datetime.datetime.now(tz=pytz.timezone(user.timezone)).date()
    if today == plan.date:
        plan_text = "*План на сегодня*\n\n" if user.language_code == 'ru' else '*Plan for today*\n\n'
    else:
        plan_text = "*План на завтра*\n\n" if user.language_code == 'ru' else '*Plan for tomorrow*\n\n'

    for item, status in zip(plan.plan_array, plan.status_array):
        plan_text += f'{status_icons[status]} {item}\n'

    if CheckStatus.PENDING.value in plan.status_array:
        bot.send_message(update.user.user_id,
                         plan_text,
                         keyboard=keyboards.get_report_plan_keyboard(
                             user, plan.id),
                         update=update.update_current)
    else:
        bot.send_message(update.user.user_id, plan_text)