Exemplo n.º 1
0
def change_remind(update, context):
    """Change meeting reminder callback query handler

    Args:
        update (Update): the Telegram update object
        context (Context): the Telegram context object
    """
    query = update.callback_query
    _, meeting_id = query.data.split(",")
    chat_id = query.message.chat.id
    query.answer()
    meeting = database.get_meeting_by_id(meeting_id)

    if meeting is not None:
        if meeting.has_reminder:
            status = "off"
            database.cancel_remind(meeting_id, chat_id)
        else:
            status = "on"
            database.set_remind(meeting_id, chat_id)

        text = (f"You've <b>turned {status}</b> the reminder for "
                f"the meeting on <b>{meeting.formatted_datetime()}</b>")
    else:
        text = "Invalid meeting, please try again."

    query.edit_message_text(text=text, parse_mode=ParseMode.HTML)
Exemplo n.º 2
0
def remind_first_menu(update, context):
    """Show the current status of the meeting reminder, and allow user to change it

    Args:
        update (Update): the Telegram update object
        context (Context): the Telegram context object
    """
    query = update.callback_query
    query.answer()
    meeting_id = query.data[2:]
    meeting = database.get_meeting_by_id(meeting_id)

    if meeting is not None:
        if meeting.has_reminder:
            status = "on"
        else:
            status = "off"

        query.edit_message_text(
            text=(f"Reminder is currently <b>turned {status}</b> for "
                  f"the meeting on <b>{meeting.formatted_datetime()}</b>"),
            reply_markup=remind_first_menu_keyboard(meeting_id,
                                                    meeting.has_reminder),
            parse_mode=ParseMode.HTML,
        )
    else:
        query.edit_message_text("Invalid meeting, please try again.")
Exemplo n.º 3
0
def edit_store_notes_msg(context, query, meeting_id):
    """Edit store notes query message

    Args:
        context (Context): the Telegram context object
        query (CallbackQuery): the Telegram callback query object
        meeting_id (int): the meeting ID
    """
    meeting = database.get_meeting_by_id(meeting_id)

    # Check if user has confirmed to replace existing meeting notes file
    if consts.CONFIRM_STORE_NOTES in context.user_data:
        del context.user_data[consts.CONFIRM_STORE_NOTES]
        if meeting is None:
            query.edit_message_text(
                "The meeting is invalid. Please try again.")
        else:
            context.user_data[consts.STORE_NOTES] = meeting
            text = "Please send me the meeting notes file."
            utils.edit_query_message(context, query, text)
    else:

        # User has picked a meeting and notes file exists,
        # ask if user wants to replace it
        if meeting.notes:
            context.user_data[consts.CONFIRM_STORE_NOTES] = True
            query.edit_message_text(
                "A meeting notes file already exists for this meeting, "
                "do you want to replace it?",
                reply_markup=store_notes_confirm_keyboard(meeting_id),
            )
        else:
            context.user_data[consts.STORE_NOTES] = meeting
            text = "Please send me the meeting notes file."
            utils.edit_query_message(context, query, text)
def cancel_meeting(update, context):
    """Cancel meeting callback query handler

    Args:
        update (Update): the Telegram update object
        context (Context): the Telegram context object

    """
    query = update.callback_query
    meeting_id = query.data[2:]
    query.answer()
    meeting = database.get_meeting_by_id(meeting_id)

    if meeting:
        if meeting.datetime < arrow.now():
            temp_text = "Cannot cancel a meeting in the past!"
        else:
            temp_text = (
                f"You've canceled the meeting on <b>{meeting.formatted_datetime()}</b>"
            )
            database.cancel_remind(meeting_id, query.message.chat.id)
            database.delete_meeting(meeting_id)
    else:
        temp_text = "Invalid meeting, please try again."

    query.edit_message_text(text=temp_text, parse_mode=ParseMode.HTML)
Exemplo n.º 5
0
def edit_store_agenda_msg(context, query, meeting_id):
    """Edit the store agenda message

    Args:
        context (Context): the Telegram context object
        query (CallbackQuery): the Telegram callback query object
        meeting_id (int): the meeting ID
    """
    meeting = database.get_meeting_by_id(meeting_id)

    # Check if user has confirmed to replace existing agenda file
    if consts.CONFIRM_STORE_AGENDA in context.user_data:
        del context.user_data[consts.CONFIRM_STORE_AGENDA]
        if meeting is None:
            query.edit_message_text(
                "The meeting is invalid. Please try again.")
        else:
            context.user_data[consts.STORE_AGENDA] = meeting
            text = "Please send me the meeting agenda file."
            utils.edit_query_message(context, query, text)

    # This callback query is to select a meeting, follow it up with either
    # replace existing agenda file or ask user to send through the file
    else:
        if meeting.agenda:
            context.user_data[consts.CONFIRM_STORE_AGENDA] = True
            query.edit_message_text(
                "A meeting agenda file already exists for this meeting, "
                "do you want to replace it?",
                reply_markup=store_agenda_confirm_keyboard(meeting_id),
            )
        else:
            context.user_data[consts.STORE_AGENDA] = meeting
            text = "Please send me the meeting agenda file."
            utils.edit_query_message(context, query, text)
Exemplo n.º 6
0
def get_notes_callback(update, context):
    """Get meeting notes if available

    Args:
        update (Update): the Update object
        context (Context): the Context object
    """
    query = update.callback_query
    query.answer()
    _, meeting_id = query.data.split(",")
    meeting = database.get_meeting_by_id(meeting_id)

    if meeting is None:
        query.edit_message_text("The meeting is invalid. Please try again.")
    elif not meeting.notes:
        query.edit_message_text(
            "There's no meeting notes found for this meeting.")
    else:
        query.edit_message_text("Please see below for your meeting notes.")
        context.bot.send_document(query.message.chat.id, meeting.notes)