@colcefer

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

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('Геолокация', 'Адрес')

@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, 'Пришлите мне геолокацию')
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
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, 'Пришлите мне геолокацию')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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