Beispiel #1
0
def process_file(update: Update, context: CallbackContext):
    '''Accept a file from a user and set up a print job.'''
    if not context.user_data.get('authenticated', False):
        update.message.reply_text(
            'I will not fulfill your request until you prove your worth.\n'
            'Scan the QR code above the student printer on the 5th floor')
        return

    if update.message.document.file_size > MAX_DOWNLOAD_SIZE:
        update.message.reply_text(
            f'Sorry, I only work with files up to {MAX_DOWNLOAD_SIZE_MB} MB')
        return

    file = update.message.document.get_file()
    container = NamedTemporaryFile()
    file.download(out=container)
    container.original_name = update.message.document.file_name

    converted = convert_to_pdf(container, update.message.document.mime_type)

    job = PrintJob(container,
                   converted,
                   update.message.caption,
                   toner_save=context.user_data.get('toner_save', True))
    context.bot_data.setdefault('jobs', {})[job.id] = job

    job.status_message = update.message.reply_text(
        job.get_message_text(),
        parse_mode=ParseMode.HTML,
        reply_to_message_id=update.message.message_id,
        reply_markup=job.get_keyboard(),
    )