Потому что переменная является локальной, т.е объектом метода
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, 'Пришлите мне геолокацию')