コード例 #1
0
def approve_request(bot, update):
    query = update.callback_query
    telegram_id = query.message.chat_id
    session = database.RegistrySession[telegram_id]

    request = list(database.Request.select(lambda c: c.status == 0))[session.request_c]

    database.Actions(implementer=str(telegram_id), action="approved registry request for",
                     implementee=str(request.telegramID))

    enrolled_user = database.User(telegramID=request.telegramID,
                                  phone=request.phone,
                                  address=request.address,
                                  priority=request.faculty,
                                  alias=request.alias,
                                  name=request.name)

    database.Request[request.id].status = 1

    session.request_c = 0
    # Editing message
    bot.edit_message_text(text="Request has been successfully approved (Telegram ID: " + str(request.telegramID) + ")", chat_id=query.message.chat_id,
                          message_id=query.message.message_id)
    bot.send_message(text="Your request has been approved!", chat_id=int(enrolled_user.telegramID))
    request.delete()
    database.RegistrySession[telegram_id].request_c = 0
    commit()
コード例 #2
0
def book_media(bot, update):
    query = update.callback_query

    user = database.User.get(telegramID=query.message.chat_id)
    if user is not None:
        telegram_id = query.message.chat_id
        session = database.RegistrySession[telegram_id]
        media = list(database.Media.select())[session.media_c]

        status = user.book_media(media, datetime.datetime.now())
        if status == -1:
            database.Actions(implementer=str(telegram_id), action="tried to book unavailable media #",
                             implementee=str(media.mediaID))
            bot.edit_message_text(text="This media is unavailable :( ",
                                  chat_id=query.message.chat_id,
                                  message_id=query.message.message_id)
        elif status == -2:
            database.Actions(implementer=str(telegram_id), action="tried to book already taken media #",
                             implementee=str(media.mediaID))
            bot.edit_message_text(text="You already have this media copy 🤦🏻‍♂",
                                  chat_id=query.message.chat_id,
                                  message_id=query.message.message_id)

        elif status == 0:
            bot.edit_message_text(text="🤘 Media has been successfully booked. Please visit the library to get it.",
                                  chat_id=query.message.chat_id,
                                  message_id=query.message.message_id)
            # Media cursor - to 0
            session.media_c = 0

        else:
            database.Actions(implementer=str(telegram_id), action="raised error while booking media #",
                             implementee=str(media.mediaID))
            bot.edit_message_text(text="Sorry, error has been occurred",
                                  chat_id=query.message.chat_id,
                                  message_id=query.message.message_id)
    else:
        database.Actions(implementer="", action="Unenrolled user tried to book media",
                         implementee="")
        bot.edit_message_text(text="🤦🏻‍♂️ You're not enrolled into the System. Shame on you! Enroll now! /enroll",
                              chat_id=query.message.chat_id,
                              message_id=query.message.message_id)
コード例 #3
0
def make_return_request(bot, update, copy_id):
    telegram_id = update.callback_query.message.chat_id
    database.ReturnRequest(
        telegramID=telegram_id,
        copyID=copy_id
    )
    database.Actions(implementer=str(telegram_id), action="has placed a return request for media #",
                     implementee=str(copy_id))
    bot.edit_message_text(
        text="Return request has been successfully added",
        message_id=update.callback_query.message.message_id,
        chat_id=telegram_id
    )
コード例 #4
0
def add_in_line(bot, update):
    query = update.callback_query
    telegram_id = query.message.chat_id
    session = database.RegistrySession[telegram_id]
    media = list(database.Media.select())[session.media_c]
    user = database.User[telegram_id]
    a = list(database.Log.select(
        lambda c: c.libID == telegram_id and c.mediaID.startswith(str(media.mediaID))))
    if not user.is_in_line(media) and len(list(database.Log.select(
            lambda c: c.libID == telegram_id and c.mediaID.startswith(str(media.mediaID))))) == 0:
        user.add_to_queue(media)
        database.Actions(implementer=str(telegram_id), action="got in line for media #",
                         implementee=str(media.mediaID))
        bot.edit_message_text(text="You have been successfully added to the line!",
                              chat_id=query.message.chat_id,
                              message_id=query.message.message_id)
    else:
        database.Actions(implementer=str(telegram_id), action="tried to reenter the line for media #",
                         implementee=str(media.mediaID))
        bot.edit_message_text(text="Sorry, mate, but you are already in line!",
                              chat_id=query.message.chat_id,
                              message_id=query.message.message_id)
    """
コード例 #5
0
def reject_request(bot, update):
    query = update.callback_query
    telegram_id = query.message.chat_id
    session = database.RegistrySession[telegram_id]
    request = list(database.Request.select(lambda c: c.status == 0))[session.request_c]
    declined_id = request.telegramID
    database.Actions(implementer=str(telegram_id), action="rejected registry request for",
                     implementee=str(request.telegramID))
    database.Request[request.id].delete()
    session.request_c = 0
    commit()

    #   Editing message
    bot.edit_message_text(text="Request has been successfully rejected", chat_id=query.message.chat_id,
                          message_id=query.message.message_id)
    bot.send_message(text="Your request has been rejected :( You can try again or contact librarian @librarian",
                     chat_id=declined_id)
コード例 #6
0
def reject_return(bot, update, request_id):
    request = database.ReturnRequest[request_id]
    copy_id = request.copyID
    user_id = request.telegramID

    request.delete()

    commit()
    bot.send_message(
        text="Return request for Media #%s has been rejected. Please, contact librarian @librarian" % copy_id,
        chat_id=user_id)
    database.Actions(implementer=str(update.callback_query.message.chat_id),
                     action="has rejected a return request for media #",
                     implementee=str(copy_id))
    bot.edit_message_text(text="Return request for Media #%s has been rejected" % copy_id,
                          message_id=update.callback_query.message.message_id,
                          chat_id=update.callback_query.message.chat_id)
コード例 #7
0
def accept_return(bot, update, request_id):
    request = database.ReturnRequest[request_id]
    copy_id = request.copyID
    user_id = request.telegramID
    media = database.MediaCopies.get(copyID=copy_id).mediaID

    status = database.Librarian.get(telegramID=update.callback_query.message.chat_id).accept_return(copy_id)

    if status[0] == 1:
        request.delete()
        commit()
        database.Actions(implementer=str(update.callback_query.message.chat_id),
                         action="has accepted a return request for media #",
                         implementee=str(media.mediaID))
        bot.send_message(text="Media %s has been successfully returned" % copy_id, chat_id=user_id)
        user = database.RegistrySession(telegramID=user_id)
        user.my_medias_c = 0
        bot.edit_message_text(text="Media %s has been successfully returned" % copy_id,
                              message_id=update.callback_query.message.message_id,
                              chat_id=update.callback_query.message.chat_id)

    elif status[0] == 2:
        user = status[1]
        # Making a record in log
        database.Log(libID=user.telegramID, mediaID=copy_id,
                     expiry_date=generate_expiry_date(media, user, datetime.datetime.now()))
        bot.send_message(text="Media %s has been successfully returned" % copy_id, chat_id=user_id)
        database.Actions(implementer=str(update.callback_query.message.chat_id),
                         action="has accepted a return request for media #",
                         implementee=str(media.mediaID))
        bot.edit_message_text(text="Media %s has been successfully returned" % copy_id,
                              message_id=update.callback_query.message.message_id,
                              chat_id=update.callback_query.message.chat_id)
        database.Actions(implementer=str(user.telegramID),
                         action="got his turn in line for media #",
                         implementee=str(media.mediaID))
        bot.send_message(text="Dear %s, media #%s is available now! You can take it from library, time starts now!" % (
            user.name, copy_id),
                         chat_id=user.telegramID)

    elif status[0] == -1:
        database.Actions(implementer=str(update.callback_query.message.chat_id),
                         action="needs to return " + str(status[1]) + " for media #",
                         implementee=str(media.mediaID))
        bot.edit_message_text(text="This user needs to pay %s rubles to return this media item." % status[1],
                              message_id=update.callback_query.message.message_id,
                              chat_id=update.callback_query.message.chat_id, reply_markup=InlineKeyboardMarkup([[
                InlineKeyboardButton(
                    "Pay",
                    callback_data=json.dumps(
                        {
                            'type': 'pay',
                            'argument': user_id,
                            'media': media.mediaID}))]]))

    else:
        database.Actions(implementer=str(update.callback_query.message.chat_id),
                         action="raised an error for return request for media #",
                         implementee=str(media.mediaID))
        bot.edit_message_text(text="Sorry, error has been occurred",
                              chat_id=update.callback_query.message.chat_id,
                              message_id=update.callback_query.message.message_id)