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)
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)
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
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)