@mikazyaka

Как вернуться к началу def?

Знаю, вопрос мегатупой, но на самоизоляции, видимо, мозги атрофировались настолько, что я уже ничего не соображаю.
До последнего не хотел задавать вопрос по настолько тупой проблеме, но нервы уже на исходе.
Пишу бота в телегу на python
import telebot
import config

from telebot import types

bot = telebot.TeleBot(config.TOKEN)

@bot.message_handler(commands=['start'])
def welcome(message):
    sti = open('sticker.webp', 'rb')
    bot.send_sticker(message.chat.id, sti)

    # keyboard
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("Я хочу сделать заказ.")
    item2 = types.KeyboardButton("Я хочу принять заказ.")

    markup.add(item1, item2)

    bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот заказчик, ты можешь заказать у меня еду в школьной столовке, после чего твой заказ увидит любой человек из очереди и купит тебе еду.".format(message.from_user, bot.get_me()),
        parse_mode='html', reply_markup=markup)




@bot.message_handler(content_types=['text'])
def lalala(message):
    if message.chat.type == 'private':
        if message.text == 'Я хочу сделать заказ.':
            global busket
            busket = []
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            item3 = ('Пицца')
            item4 = ('☕Чай☕')
            item5 = ('Круассан')
            item6 = ('Колобок')
            item7 = ('Сырная')
            item8 = ('Сосиска в тесте')
            item9 = ('На этом все')
            markup.add(item3, item4, item5, item6, item7, item8, item9)
            bot.send_message(message.chat.id, 'Хорошо, что ты хочешь заказать?', reply_markup=markup)
    if message.chat.type == 'private':
        if message.text == 'Пицца':
            busket.append('Пицца,')
        elif message.text == '☕Чай☕':
            busket.append('☕Чай,')
        elif message.text == 'Круассан':
            busket.append('Круассан,')
        elif message.text == 'Колобок':
            busket.append('Колобок,')
        elif message.text == 'Сырная':
            busket.append('Сырная,')
        elif message.text == 'Сосиска в тесте':
            busket.append('Сосиска в тесте,')
        elif message.text == 'На этом все':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            item10 = ('Да')
            item11 = ('Нет')
            markup.add(item10, item11)
            answer = ''
            for i in busket:
                answer += i
            bot.send_message(message.chat.id, 'Хорошо, получается ты заказал:' + answer + ' так?', reply_markup=markup)
    if message.chat.type == 'private':
        if message.text =='Да':
            bot.send_message(message.chat.id, 'Отлично, добавляю это в список заказов, жди когда примут.')


# RUN
bot.polling(none_stop=True)

Нужно, чтобы при конечном ответе 'Нет', бот возращался к началу функции def lalala. По началу решил просто переписать
if message.text == 'Я хочу сделать заказ.':
на
if message.text == 'Я хочу сделать заказ.' or 'Нет':

Но после настолько дерзкого хода бот начал отвечать на каждое сообщение 'Хорошо, что ты хочешь заказать?'
Понимаю, что данный вопрос можно решить циклом, но каждая моя попытка завершалась тем, что бот начинал спамить сообщением 'Хорошо, что ты хочешь заказать?'.
В порывах потери надежды, пишу сюда, чтобы здравые умы сие божественного сайта сказали, что надо делать.
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
Сделать цикл, только после отправки "хорошо, что ты хочешь заказать?" поставь break
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы