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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #6
0
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