Как можно реализовать условие в условии в телеграм боте
Пишу бота с помощью библиотеки PyTelegramBotApi.
Как можно реализовать условие в условии?
Сейчас на сообщение "мужской" выводит "Извините, у вас другой город".
А нужно, чтобы отвечал "Йоу, у тебя получилось!"
@bot.message_handler(commands=['start'])
def answer_to_start(message):
bot.send_message(message.chat.id, 'Укажите город, в котором вы проживаете.')
@bot.message_handler(content_types=["text"])
def answer_to_text(message):
if message.text.lower() == 'минск':
bot.send_message(message.chat.id, 'Укажите ваш пол (мужской/женский)')
if message.text.lower() == 'мужской':
bot.send_message(message.chat.id, 'Йоу, у тебя получилось!')
elif message.text.lower() == 'женский':
bot.send_message(message.chat.id, 'Тоже нормально!')
else:
bot.send_message(message.chat.id, "Извините, у вас другой город!")
Ответы (2 шт):
Автор решения: Alex Zab
→ Ссылка
Легче чем Вы думаете)
@bot.message_handler(commands=['start'])
def answer_to_start(message):
bot.send_message(message.chat.id, 'Укажите город, в котором вы проживаете.')
@bot.message_handler(content_types=["text"])
def answer_to_text(message):
global gorod_set
if message.text.lower() == 'минск':
bot.send_message(message.chat.id, 'Укажите ваш пол (мужской/женский)')
gorod_set = 1
elif message.text.lower() == 'мужской' and gorod_set == 1:
bot.send_message(message.chat.id, 'Йоу, у тебя получилось!')
# Если нужно изменить город и начать по новой добавьте 'gorod_set = 0'
elif message.text.lower() == 'женский' and gorod_set == 1:
bot.send_message(message.chat.id, 'Тоже нормально!')
# Здесь так же 'gorod_set = 0'
else:
bot.send_message(message.chat.id, "Извините, у вас другой город!")
Автор решения: Violet
→ Ссылка
я бы использовал bot.register_next_step_handler для выполнения сценария шагов:
@bot.message_handler(commands=['start'])
def start(message):
msg = bot.send_message(message.chat.id, 'Укажите город, в котором вы проживаете.')
bot.register_next_step_handler(msg, start_2, 'start')
def start_2(message, where_call, city=None):
if where_call == 'start':
town = message.text
else:
town = city
print('указанный город s2:', town)
if town == 'минск':
msg = bot.send_message(message.chat.id, 'Укажите ваш пол (мужской/женский)')
bot.register_next_step_handler(msg, start_3, town)
else:
bot.send_message(message.chat.id, "Извините, у вас другой город!")
start(message)
def start_3(message, town):
print('указанный город s3:', town)
print('указанный пол s3:', message.text)
if message.text.lower() == 'мужской':
bot.send_message(message.chat.id, 'Йоу, у тебя получилось!')
elif message.text.lower() == 'женский':
bot.send_message(message.chat.id, 'Тоже нормально!')
else:
bot.send_message(message.chat.id, "Либо мужской либо женский")
start_2(message, 'start_3', city=town)
bot.polling(none_stop=True, interval=0)