Задача в том, чтобы спросить сначала желаемый цвет, потом сам текст. Далее передаём это в функцию по созданию QR-кода

Вот код:

import qrcode
import telebot
import setting as a
@bot.message_handler(commands=["makeqr"], content_types=['text'])
    def choose_color(message):
        bot.send_message (message.chat.id, "*Выберите цвет:\n 1. Синий/тёмно-бежевый\n2. Серый/бежевый\n3. Хаки/белый\n4. Тёмно-красный/бирюзовый\n5. Фиолетовый/желый*\n\nВведите цифру:", parse_mode="Markdown")
        users_color = bot.register_next_step_handler(users_color, makeqr)


    def trigger_makeqr(message):
        bot.send_message (message.chat.id, "*Пришлите ссылку на сайт или текст:*", parse_mode="Markdown")
        users_text = bot.register_next_step_handler(users_text, makeqr)


    def makeqr(message, users_color, users_text):
        extractor = urlextract.URLExtract() #Проверяем, ссылка это или нет
        urls = extractor.find_urls(users_text)  
        qrcod = qrcode.QRCode( #Создаем qr-код
                version = 1,
                error_correction=qrcode.constants.ERROR_CORRECT_L,
                box_size=20,
                border=5,)
        if urls != []: #Если сообщение от пользователя ссылка - сокращаем её
            tinylink = pyshorteners.Shortener()
            tiny_user_link = tinylink.tinyurl.short(users_text)
            qrcod.add_data(tiny_user_link)
        else:
            qrcod.add_data(users_text) #Иначе создаём qr-код с текстом
        qrcod.make(fit=True)
        if users_color == '1': #Тут уже и начинается проверка на цвета, применяем скругление и цвет
            img = qrcod.make_image(image_factory = StyledPilImage,  module_drawer = RoundedModuleDrawer(radius_ratio = 1), color_mask = SolidFillColorMask(a.colors['color_one']))
        elif users_color == '2':
            img = qrcod.make_image(image_factory = StyledPilImage,  module_drawer = RoundedModuleDrawer(radius_ratio = 1), color_mask = SolidFillColorMask(a.colors['color_two']))
        elif users_color == '3':
             img = qrcod.make_image(image_factory = StyledPilImage,  module_drawer = RoundedModuleDrawer(radius_ratio = 1), color_mask = SolidFillColorMask(a.colors['color_three']))
        elif users_color == '4':
            img = qrcod.make_image(image_factory = StyledPilImage,  module_drawer = RoundedModuleDrawer(radius_ratio = 1), color_mask = SolidFillColorMask(a.colors['color_four']))
        elif users_color == '5':
            img = qrcod.make_image(image_factory = StyledPilImage,  module_drawer = RoundedModuleDrawer(radius_ratio = 1), color_mask = SolidFillColorMask(a.colors['color_five'])) 
        
        img.save("file.png") #Сохраняем
        bot.send_document(message.chat.id, open("file.png", "rb")) #Отправляем
        os.remove("file.png") #Удаляем, чтобы не занимало места

#Из файла setting:
colors = {'color_one': ((40, 48, 68), (139, 120, 109)), 'color_two': ((47, 36, 44), (238, 180, 179)), 'color_three': ((84, 86, 67), (241, 222, 222)),
'color_four': ((136, 13, 30), (203, 238, 243)), 'colore_five': ((128, 0, 255), (255, 255, 0))}```


**Ещё интересен вопрос, как обрабатывать сообщения от юзера, которые бот не может никак обработать/ответить. И вообще, бот умирает после пары команд и приходится перезапускать код/бота(в самой телеге), но это иногда не помогает и бот просто встаёт((**
Потому что вот это не помогает:


```@bot.message_handler(content_types=['text'])
    def welcome(message):
        rand = random.randint(0, 5)
        if message.text.lower() == 'привет':
            bot.send_message(message.chat.id, a.ans_hello[rand])
        elif message.text.lower() == 'как дела' or message.text.lower() == 'как дела?':
            bot.send_message(message.chat.id, a.ans_howareu[rand])
        elif message.text.lower() == 'что делаешь' or message.text.lower() == 'что делаешь?':
            bot.send_message(message.chat.id, a.ans_whatdoudo[rand])
        else:
            bot.send_message(message.chat.id, "*Бот учится, чтобы отвечать на это :(*", parse_mode="Markdown")
        bot.register_next_step_handler(message, welcome)```

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