Генератор qr код в боте телеграмм

У меня есть бот по генерация qr кодов ,но дело в том что он делает обычный qr код Вот он

Но мне нужно делать вот такие

Вот

Кто может помочь вот код который уже имеется

def make_image_qrcode(data: Union[int, str]) -> str:
"""
Формирует QRCode из входных данных и сохраняет в временных файлах.
:return: Путь до qrcode
"""
code = str(data)
format = '.png'
image_title = f'{data}{format}'
dir = f'data{os.sep}tmp{os.sep}{image_title}'
qr = qrcode.QRCode(
    version=1,
    error_correction=constants.ERROR_CORRECT_M,
    box_size=20,
    border=2
)
qr.add_data(data)
image = qr.make_image()
image.save(f'{dir}')

return dir

Ответы (2 шт):

Автор решения: Andy Pavlov

Баркод создаем с помощью библиотеки python-barcode. Чтобы она сохраняла не только svg, нужна обязательно установка Pillow.

Нужно учитывать при составлении пути, что расширение добавляется автоматом и его не нужно лишний раз указывать. Путь сохранения выдается на методе save().

import os
from typing import Union

import barcode
from barcode.writer import ImageWriter


def make_image_barcode(data: Union[int, str]) -> str:
    try:
        code = str(data)
        ean = barcode.get('ean13', code, writer=ImageWriter())
        filepath = ean.save(f'data{os.sep}tmp{os.sep}{code}')
        return f'{filepath}'
    except (barcode.errors.IllegalCharacterError, barcode.errors.NumberOfDigitsError) as e:
        return print(e)  # Выводит в консоль ошибку, если ввод не по EAN13
        # return None  # Можно использовать возврат None, чтобы бот понимал, что картинки нет.


inp = input('введите 12 цифр')
filepath = make_image_barcode(inp)
→ Ссылка
Автор решения: Violet
@bot.message_handler(commands=['start'])
def start(message):
    msg = bot.send_message(message.chat.id, 'введите 12 цифр')
    bot.register_next_step_handler(msg, start_2)


def start_2(message):
    # проверка на количество и цифры
    bot.send_photo(message.chat.id, open(
        barcode.get('ean13', str(message.text), writer=ImageWriter()).save(f'files/{str(message.text)}'), 'rb'))
→ Ссылка