Создаю бота, который в Telegram генерирует QR-код. Мой код не работает

import pyqrcode
import telebot
import png


bot = telebot.TeleBot('')


@bot.message_handler(content_types=['text'])
def start_message(message):
    def make_qrcode(url):
        qrcode = pyqrcode.create(url)
        qrcode.png('QR CODE.png', scale=6)
        with open('QR CODE.png', made='rb') as file:
            bot.send_photo(message.chat.id, photo=file)
    if message.text.find == "/make" != 1:
        get_url = message.text.replace("/make ", "")
        make_qrcode(url=get_url)
    else:
        bot.send_message(message.chat.id, "Чтобы получить ваш QR CODE, попробуйте написать /make [ссылка]")


bot.polling(none_stop=True)

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

Автор решения: Мандапорец

Для начала создаем объект QR

qr = qrcode.QRCode(version=1,                        
                   error_correction=qrcode.constants.ERROR_CORRECT_H,
                   box_size=10,
                   border=2,
                   )

Передаем в него данные, которые надо "зашифровать"

qr.add_data(data)

Создаем маску. В примере используется SquareGradiantColorMask квадратный цветовой градиент. Передаем в него цвета: цвет фона, цвет начала градиента из центра и цвет конца градиента по краям.

color_mask = SquareGradiantColorMask(back_color=(12, 12, 12),
                                     center_color=(255, 254, 114),
                                     edge_color=(85, 50, 43))

Создаем изображение используя модуль Pillow, добавляем в центр QR кода изображение параметром embeded_image_path

img = qr.make_image(image_factory=StyledPilImage,
                    embeded_image_path=f"{base_dir}/src/embedded.png",
                    module_drawer=RoundedModuleDrawer(
                                               radius_ratio=0.5),
                                               color_mask=color_mask)

И сохраняем готовое изображение

path = Path(f"{base_dir}/img")

if not os.path.exists(path):
    os.mkdir(path)

img.save(Path(f"{path}/{img_name}.png"))
→ Ссылка
Автор решения: Amgarak

Идея мне показалась забавной, так что вот мои варианты фикса.

  1. Вариант, QR - код сохраняется в файл и отправляется:
import pyqrcode
import telebot
import png

bot = telebot.TeleBot('!!!-ТОКЕН-!!!')

@bot.message_handler(content_types=['text'])
def start_message(message):
    def make_qrcode(url):
        qrcode = pyqrcode.create(url)
        with open('QR_CODE.png', 'wb') as file:
            qrcode.png(file, scale=6)
        with open('QR_CODE.png', 'rb') as file:
            bot.send_photo(message.chat.id, photo=file)

    if message.text.startswith("/make "):
        get_url = message.text.replace("/make ", "")
        make_qrcode(url=get_url)
    else:
        bot.send_message(message.chat.id, "Чтобы получить ваш QR CODE, попробуйте написать /make [ссылка]")

bot.polling(none_stop=True)
  1. Вариант, через буфер:
import pyqrcode
import telebot
import io

bot = telebot.TeleBot('!!!-ТОКЕН-!!!')

@bot.message_handler(content_types=['text'])
def start_message(message):
    def make_qrcode(url):
        qrcode = pyqrcode.create(url)
        buffer = io.BytesIO()
        qrcode.png(buffer, scale=6)
        buffer.seek(0)
        bot.send_photo(message.chat.id, photo=buffer, caption='Ваш QR код')

    if message.text.startswith("/make "):
        get_url = message.text.replace("/make ", "")
        make_qrcode(url=get_url)
    else:
        bot.send_message(message.chat.id, "Чтобы получить ваш QR CODE, попробуйте написать /make [ссылка]")

bot.polling(none_stop=True)
→ Ссылка