Ответы пользователя по тегу Telegram
  • Почему переменная where не может быть использована за пределами конструкции?

    total4c
    @total4c
    Говнокодер
    Потому что переменная является локальной, т.е объектом метода start_taxi.
    Если хотите использовать её в других функциях, то обозначьте ей глобальный спектр:

    import telebot
    
    bot = telebot.TeleBot('866884193:AAGmm6AXUDXt-8P1ZHzd1VqsV8sx0HvdCNg')
    keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True)
    keyboard2 = telebot.types.ReplyKeyboardMarkup(True, True)
    keyboard3 = telebot.types.ReplyKeyboardMarkup(True, True)
    keyboard1.row('Богдан', 'Межгород')
    keyboard2.row('Наличка', 'Перевод')
    keyboard3.row('Геолокация', 'Адрес')
    
    global where
    
    @bot.message_handler(commands=['start'])
    def start_message(message):
        bot.send_message(message.chat.id, 'Привет, Куда хотим отправиться?', reply_markup=keyboard1)
    
    @bot.message_handler(content_types=['text, location'])
    def start_taxi(message):
        if message.text.lower() == 'богдан':
            bot.send_message(message.chat.id, 'понял. Как оплачивать будете?', reply_markup=keyboard2)
            where = 'зирган'
            bot.register_next_step_handler(message, oplata);
        elif message.text.lower() == 'межгород':
            bot.send_message(message.chat.id, 'понял по межгороду. Как оплачивать будете?', reply_markup=keyboard2)
            where = 'межгород'
            bot.register_next_step_handler(message, oplata);
    def oplata(message):
        if message.text.lower() == 'наличка':
            bot.send_message(message.chat.id, 'Наличкой. куда ехать?', reply_markup=keyboard3)
            babki = 'наличка'
            bot.register_next_step_handler(message, adres);
        elif message.text.lower() == 'перевод':
            bot.send_message(message.chat.id, 'Перевод. куда ехать?', reply_markup=keyboard3)
            babki = 'перевод'
            bot.register_next_step_handler(message, adres);   
    def adres(message):
        if message.text.lower() == 'адрес':
            bot.send_message(message.chat.id, 'Напишите адрес')
            bot.register_next_step_handler(message, information);
        else: bot.send_message(message.chat.id, 'Пришлите мне геолокацию')
    Ответ написан
    Комментировать