Пример #1
0
def miss_event(update, context):
    chat_id = update.effective_chat.id
    event_args = context.args
    db_connector, events_col = db_handler('event')
    if len(event_args) != 1:
        message = f"Invalid message, the only parameter should be the event name."
        return send_message(context, chat_id, message)
    event_name = event_args[0]
    query = {"name": event_name.lower(), "chat_id": chat_id}
    event = events_col.find_one(query)
    if not event:
        message = f"Event {event_name} not found."
        return send_message(context, chat_id, message)
    not_assisting_users = event['not_assisting']
    participants = event['participants']

    not_assisting_user = create_participant(update.message.from_user)

    if not_assisting_user['id'] not in [not_assisting_user['id'] for not_assisting_user in not_assisting_users]:
        events_col.update_one(query, {"$push": {'not_assisting': not_assisting_user}}, upsert=False)

    if not_assisting_user['id'] in [participant['id'] for participant in participants]:
        events_col.update_one(query, {"$pull": {'participants': not_assisting_user}}, upsert=False)

    message = f"{not_assisting_user['name']} will not assist {event['name'].capitalize()}"
    return send_message(context, chat_id, message)
Пример #2
0
def events(update, context):
    chat_id = update.effective_chat.id
    db_connector, events_col = db_handler('event')

    query = {"date": {"$gte": datetime.datetime.today()}, "chat_id": chat_id}
    events_query = db_connector.search_records(events_col, query)
    message = list_events(events_query)
    return send_message(context, chat_id, message)
Пример #3
0
def birthdays(update, context):
    chat_id = update.effective_chat.id
    db_connector, birthdays_col = db_handler('birthday')

    query = {"chat_id": chat_id}
    birthdays_query = db_connector.search_records(birthdays_col, query)
    message = list_birthdays(birthdays_query)
    return send_message(context, chat_id, message)
Пример #4
0
def next_birthday(update, context):
    chat_id = update.effective_chat.id
    db_connector, birthdays_col = db_handler('birthday')

    query = {"chat_id": chat_id}
    next_birthday = db_connector.search_records(birthdays_col, query)

    distance = 365
    nearest_birthday = None
    now = datetime.now()
    for birthday in next_birthday:
        difference_in_days = get_difference_between_dates_in_days(birthday['date'], now)
        if difference_in_days < distance:
            distance = difference_in_days
            nearest_birthday = birthday
    if not nearest_birthday:
        return send_message(context, chat_id, "Please load birthdays first.")
    message = f"Next birthday is in {difference_in_days} day(s): {parse_birthday(nearest_birthday)}"
    return send_message(context, chat_id, message)
Пример #5
0
def add_event(update, context):
    chat_id = update.effective_chat.id
    event_args = context.args
    db_connector, events_col = db_handler('event')

    if len(event_args) < 4:
        message = f"Invalid message, the format should be exactly: name(One word) dd/mm/yyyy hh:mm place."
        return send_message(context, chat_id, message)

    try:
        parsed_date = parse_date_time(f'{event_args[1]} {event_args[2]}')
    except:
        message = f"Invalid date format in message, the format should be exactly: name(One word)" \
                  f" dd/mm/yyyy hh:mm place."
        return send_message(context, chat_id, message)

    event_document = create_event(chat_id, event_args, parsed_date, update.message.from_user)

    db_connector.insert_record(events_col, event_document)

    message = f"Event {event_document['name']} created for {event_document['date'].strftime('%d/%m %H:%M')}."

    return send_message(context, chat_id, message)
def add_birthday(update, context):
    chat_id = update.effective_chat.id
    birthday_args = context.args
    db_connector, birthdays_col = db_handler('birthday')

    if len(birthday_args) != 2:
        message = f"Invalid message, the format should be exactly: name(One word) dd/mm/yyyy."
        return send_message(context, chat_id, message)

    try:
        parsed_date = parse_date(f'{birthday_args[1]}')
    except:
        message = f"Invalid date format in message, the format should be exactly: name(One word) dd/mm/yyyy."
        return send_message(context, chat_id, message)

    birthday_document = create_birthday(chat_id, birthday_args, parsed_date)

    db_connector.insert_record(birthdays_col, birthday_document)

    message = f"Birthday for {birthday_document['name'].capitalize()} " \
              f"added: {birthday_document['date'].strftime('%d/%m')}."

    return send_message(context, chat_id, message)
def delete_event(update, context):
    chat_id = update.effective_chat.id
    event_args = context.args
    db_connector, events_col = db_handler('event')
    message = None
    if len(event_args) != 1:
        message = f"Invalid message, the only parameter should be the event name."
        return send_message(context, chat_id, message)

    event_name = event_args[0]

    query = {'name': event_name.lower(), "chat_id": chat_id}
    event = db_connector.search_record(events_col, query)
    if not event:
        message = f"Event {event_name} not found."
    if not message and event['creator']['id'] == update.message.from_user.id:
        deleted = db_connector.delete_record(events_col, query)
        if deleted == 0:
            message = f"There was an error deleting the event."
        else:
            message = f"Event {event_name} deleted."
    if not message:
        message = "Only the creator of the event can delete it."
    return send_message(context, chat_id, message)