def com_duration(update, context): try: user_chat_id = update.effective_chat.id team_db_id, err_message = get_team_db_id(user_chat_id) if team_db_id is False: raise BotUserException(err_message) if not is_owner(team_db_id, user_chat_id=user_chat_id): raise BotUserException( "Данное действие доступно только владельцу команды.\n") nec_args_numb = 2 duration = ''.join(list(context.args)) duration = duration.split(':') if len(duration) != nec_args_numb: raise BotUserException("Неверный формат ввода.\n") new_duration = get_duration_db_format(hour=duration[0], minute=duration[1]) db_teams.update_one({"_id": team_db_id}, {"$set": { "duration": new_duration }}) context.bot.send_message( chat_id=user_chat_id, text="Продолжительность стендапов обновлена.\n") except BotUserException as bue: context.bot.send_message(chat_id=update.effective_chat.id, text=bue.message)
def com_remove_question(update, context): user_chat_id = update.effective_chat.id # здесь будет проверка на права доступа к добавлению вопроса и # соответствующее сообщение при ошибке доступа if not existing_user(user_chat_id): context.bot.send_message( chat_id=user_chat_id, text="Сначала зарегистрируйте команду (/new_team) " "или введите id вашей команды (/set_id [id])") return team_db_id, err_message = get_team_db_id(user_chat_id) if not team_db_id: context.bot.send_message(chat_id=user_chat_id, text=err_message) return if not is_owner(team_db_id, user_chat_id=user_chat_id): context.bot.send_message( chat_id=user_chat_id, text="Данное действие доступно только владельцу команды.") return keyboard = get_questions_list_inline_keyboard(team_db_id) context.bot.send_message(chat_id=user_chat_id, text="Выберите вопрос для удаления: ", reply_markup=keyboard)
def add_question(update, context): user_chat_id = update.effective_chat.id team_db_id, err_message = get_team_db_id(user_chat_id) if not team_db_id: context.bot.send_message(chat_id=user_chat_id, text=err_message) return if not is_owner(team_db_id, user_chat_id=user_chat_id): context.bot.send_message( chat_id=user_chat_id, text="Данное действие доступно только владельцу команды.") return if not context.args: context.bot.send_message(chat_id=user_chat_id, text="Пожалуйста, добавьте текст вопроса" " после команды.") return text = ' '.join(list(context.args)) # пока команда одна => вопросы добавляем без вопроса в какую команду team_questions = get_team_questions_list(team_db_id) if text in team_questions: context.bot.send_message(chat_id=user_chat_id, text="В вашей команде уже есть такой вопрос") return question = get_new_question_document(text) question_db_id = db_questions.insert_one(question).inserted_id db_teams.update_one({'_id': team_db_id}, {'$addToSet': { 'questions': question_db_id }}) context.bot.send_message(chat_id=user_chat_id, text="Был добавлен вопрос: " + text)
def set_standups(update, context): chat_id = update.effective_chat.id team_db_id, err_message = get_team_db_id(chat_id) if not team_db_id: context.bot.send_message(chat_id=chat_id, text=err_message) return if not is_owner(team_db_id, user_chat_id=chat_id): context.bot.send_message( chat_id=chat_id, text="Данное действие доступно только владельцу команды.") return err_message = check_standups_input(chat_id, context.args) if err_message is not None: context.bot.send_message(chat_id=chat_id, text=err_message) return team = db_teams.find_one({'_id': team_db_id}) prev_standups = team['standups'] db_teams.update_one( {'_id': team_db_id}, {'$set': { 'last_send_standup': len(prev_standups) - 1 }}) write_schedule_to_db(context.args, team_db_id) # остановим старые работы этой команды, если они были old_jobs = jobs[team_db_id] for weekday_jobs in old_jobs: for job in weekday_jobs: job.schedule_removal( ) # остановили работу по отправке вопросов и ответов send_questions_jobs, send_answers_jobs = create_first_standup( team_db_id, context, chat_id, update) # вернули список с указателями на созданные работы, теперь они хранятся в словаре jobs[team_db_id] = [send_questions_jobs, send_answers_jobs] context.bot.send_message(chat_id=update.effective_chat.id, text="Расписание стендапов обновлено.")
def set_timezone(update, context): try: user_chat_id = update.effective_chat.id team_db_id, err_message = get_team_db_id(user_chat_id) if team_db_id is False: raise BotUserException(err_message) if not is_owner(team_db_id, user_chat_id=user_chat_id): raise BotUserException("Данное действие доступно только владельцу команды.\n") nec_args_numb = 2 timezone = ''.join(list(context.args)) timezone = timezone.split(':') if len(timezone) != nec_args_numb: raise BotUserException("Неверный формат ввода часового пояса.\n") new_timezone = get_timezone_db_format(hour=timezone[0], minute=timezone[1]) db_teams.update_one({"_id": team_db_id}, {"$set": {"timezone": new_timezone}}) context.bot.send_message(chat_id=update.effective_chat.id, text="Часовой пояс обновлен.\n") except BotUserException as bue: context.bot.send_message(chat_id=update.effective_chat.id, text=bue.message)
def delete_question(update, team_db_id, question_id): user_chat_id = update.effective_chat.id team_db_id = is_valid_id(team_db_id) del_question_id = is_valid_id(question_id) team = db_teams.find_one({'_id': team_db_id}) if not team: err_message = 'Данная команда была удалена.' return False, err_message if not is_owner(team_db_id, user_chat_id=user_chat_id): err_message = 'Данное действие доступно только владельцу команды.' return False, err_message db_teams.update_one({'_id': team_db_id}, {'$pull': { 'questions': del_question_id }}) questions = get_team_questions_list(team_db_id) message = team_questions_text(questions) return True, message