def tag_data(message): try: bot.delete_message(message.from_user.id, message.message_id - 1) except: pass # Если несколько раз нажали на кнопку if message.from_user.id not in TASK_TAGS: return if message.text == button_text['closed']: bot.send_message(message.from_user.id, 'Новые теги сохраенын', reply_markup=mark_conf.menu()) util.add_tag_to_task(TASK_TAGS[message.from_user.id]['task_id'], TASK_TAGS[message.from_user.id]['selected_tags']) task = util.get_task_by_id(TASK_TAGS[message.from_user.id]['task_id']) bot.send_message(message.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML') try: del TASK_TAGS[message.from_user.id] except Exception as e: print('Error in delete TASK_TAGS[message.from_user.id] (1): ', e) elif message.text == button_text['cancel']: bot.send_message(message.from_user.id, msg_text['cancel_do'], reply_markup=mark_conf.menu()) task = util.get_task_by_id(TASK_TAGS[message.from_user.id]['task_id']) bot.send_message(message.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML') try: del TASK_TAGS[message.from_user.id] except Exception as e: print('Error in delete TASK_TAGS[message.from_user.id] (2): ', e) elif not TASK_TAGS[message.from_user.id]['selected_tags']: msg = bot.send_message(message.from_user.id, 'Выберите хотя бы один тег') bot.register_next_step_handler(msg, tag_data) else: bot.send_message( message.from_user.id, f'Нажмите на кнопку {button_text["closed"]} или {button_text["cancel"]}' )
def set_time_remind(message): task = util.get_task_by_id( EDIT_TASK_REMIND[message.from_user.id]['task_id']) if message.text == button_text['closed']: task = util.update_task( task_id=EDIT_TASK_REMIND[message.from_user.id]['task_id'], time=EDIT_TASK_REMIND[message.from_user.id]['time']) del EDIT_TASK_REMIND[message.from_user.id] bot.send_message(message.from_user.id, 'Время установлено', reply_markup=mark_conf.menu()) bot.send_message(message.from_user.id, timer_task(task), reply_markup=mark_conf.set_remind_task(task), parse_mode='HTML') elif message.text == button_text['cancel']: bot.send_message(message.from_user.id, msg_text['cancel_do'], reply_markup=mark_conf.menu(), parse_mode='HTML') bot.send_message(message.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML') del EDIT_TASK_REMIND[message.from_user.id] else: msg = bot.send_message( message.from_user.id, f'Нажмите на кнопку <b>{button_text["closed"]}</b>', parse_mode='HTML') bot.register_next_step_handler(msg, set_time_remind)
def task_remind(call): bot.delete_message(call.from_user.id, call.message.message_id) res = call.data.split('_') task_id = res[2] task = util.get_task_by_id(task_id) if res[1] == 'back': bot.send_message(call.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML') elif res[1] == 'remind': bot.send_message(call.from_user.id, timer_task(task), reply_markup=mark_conf.set_remind_task(task), parse_mode='HTML') elif res[1] == 'setdate': EDIT_TASK_REMIND[call.from_user.id] = {} EDIT_TASK_REMIND[call.from_user.id]['task_id'] = task_id now = datetime.datetime.now() # Get the current date bot.send_message(call.from_user.id, "Выберите дату события:", reply_markup=telebot_calendar.create_calendar( name=calendar_1.prefix, year=now.year, month=now.month)) elif res[1] == 'settime': EDIT_TASK_REMIND[call.from_user.id] = {} EDIT_TASK_REMIND[call.from_user.id]['task_id'] = task_id EDIT_TASK_REMIND[call.from_user.id]['time'] = datetime.time(hour=12, minute=0) bot.send_message( call.from_user.id, 'Выберите время в которое сотрудники должны высылать отчет', reply_markup=mark_conf.clock_inline( hour=datetime.time.strftime( EDIT_TASK_REMIND[call.from_user.id]['time'], '%H'), minute=datetime.time.strftime( EDIT_TASK_REMIND[call.from_user.id]['time'], '%M'))) msg = bot.send_message(call.from_user.id, msg_text['set_time_and_ok'], reply_markup=mark_conf.create_timer_button(), parse_mode='HTML') bot.register_next_step_handler(msg, set_time_remind) elif res[1] == 'back': bot.send_message(call.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML')
def input_task_name(message): if message.text == button_text['cancel']: bot.send_message(message.from_user.id, msg_text['cancel_create_task'], reply_markup=mark_conf.menu()) return task_id = util.add_task(message.from_user.id, message.text) task = util.get_task_by_id(task_id) bot.send_message(message.from_user.id, 'Задача создана', reply_markup=mark_conf.menu()) bot.send_message(message.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML')
def test(message): task = util.get_task_by_id(1) bot.send_message(message.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML')
def task_edit(call): bot.delete_message(call.from_user.id, call.message.message_id) res = call.data.split('_') task_id = res[2] print(res[1]) if res[1] == 'view': task = util.get_task_by_id(task_id) bot.send_message(call.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML') return elif res[1] == 'tittle': msg = bot.send_message(call.from_user.id, 'Новый заголовок', reply_markup=mark_conf.create_custom_button( button_text['cancel'])) bot.register_next_step_handler(msg, change_task_name) global message_id message_id = task_id return elif res[1] == 'search': bot.send_message(call.from_user.id, msg_text['input_task_name'], reply_markup=mark_conf.create_custom_button( button_text['cancel'])) return elif res[1] == 'tags': # Удаляем словарь. если он уже существоватл if call.from_user.id in TASK_TAGS: del TASK_TAGS[call.from_user.id] TASK_TAGS[call.from_user.id] = {} TASK_TAGS[call.from_user.id]['task_id'] = task_id TASK_TAGS[call.from_user.id]['tag_list'] = [] TASK_TAGS[call.from_user.id]['selected_tags'] = [] # Создаем меню и словарь и создае меню тегов inline_key = telebot.types.InlineKeyboardMarkup() for tag in util.get_user_tags(call.from_user.id, task_id=task_id): TASK_TAGS[call.from_user.id]['tag_list'].append(tag) if tag['status']: TASK_TAGS[call.from_user.id]['selected_tags'].append({ 'id': tag['id'], 'name': tag['name'] }) button_name = '✅ ' + tag['name'] else: button_name = tag['name'] inline_btn = telebot.types.InlineKeyboardButton( text=button_name, callback_data=inline_conf.tag + 'choise_' + str(tag['id'])) inline_key.add(inline_btn) bot.send_message(call.from_user.id, 'Выберите теги:', reply_markup=inline_key) custom_key = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True) custom_key.row(button_text['closed'], button_text['cancel']) bot.clear_step_handler(call.message) msg = bot.send_message( call.from_user.id, 'После выбора нужных пунктов нажмите на кнопку <b>Готово ✅</b>.', parse_mode='HTML', reply_markup=custom_key) bot.register_next_step_handler(msg, tag_data) return elif res[1] == 'favorite': task = util.update_favorite_task(util.get_task_by_id(task_id)) bot.send_message(call.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML') return elif res[1] == 'closed': util.change_active_task(task_id) bot.send_message(call.from_user.id, 'Задача перемещена в 🗄 Архив') elif res[1] == 'activate': util.change_active_task(task_id, activate=1) bot.send_message(call.from_user.id, 'Задача перемещена в ✅ Активные') task = util.get_task_by_id(task_id) bot.send_message(call.from_user.id, create_task_text(task), reply_markup=mark_conf.task_menu(task), parse_mode='HTML') return elif res[1] == 'delete': util.delete_task(task_id) bot.send_message(call.from_user.id, 'Напоминалка удалено ;)') elif res[1] == 'invite': # TODO доделать интеграцию с гугл диском или др. сервисами return elif res[1] == 'back': bot.send_message(call.from_user.id, msg_text['back'], parse_mode='HTML') return # По окончанию действий выводим список активных тасков для дальнейшей работы с ними task_list = util.get_task_list_by_user(call.from_user.id, not_closed=True) if task_list: bot.send_message(call.from_user.id, msg_text['chose_task'], reply_markup=mark_conf.task_list_menu(task_list)) else: bot.send_message(call.from_user.id, msg_text['task_not_found'], reply_markup=mark_conf.menu())