Не работает конструкция if в if в python с библиотекой telebot
import contextlib
import telebot
bot = telebot.TeleBot('')
@bot.message_handler(content_types=['text'])
def gg(message):
if message.text == '/start':
bot.send_message(message.chat.id, 'Привет, я бот '+ 'что-то' +"еще что-то")
elif message.text == 'группа':
bot.send_message(message.chat.id, "чет или нечет")
if message.text == 'чет':
bot.send_message(message.chat.id, 'нечет')
bot.polling(none_stop=True, interval=0)
не работает if в if . бот не отправляет сообщение "нечет" во втором if elif, все условия соблюдены. в простых кодах с цифрами конструкция работает, но с библиотекой - нет. очень много всего попробовал, ниче не помогает. токен убрал из кода по объективным причинам. заранее спасибо
Ответы (1 шт):
Автор решения: Tehnorobot
→ Ссылка
Если я правильно понял, то у вас не совсем верна логика алгоритма. То есть:
- Приходит сообщение, например,
группа - Процесс переходит в конструкцию
elif - Отправляется сообщение
чёт или нечет - А вот далее, вы получаете сообщение, например,
чёт, но вы обрабатываете опять же конструкцию начальную, то есть:
if message.text == '/start':
bot.send_message(message.chat.id, 'Привет, я бот '+ 'что-то' +"еще что-то")
elif message.text == 'группа':
Следовательно, у вас ничего не происходит.
Вам нужно добавить ещё одну функцию, которая будет обрабатывать дальнейшие сообщения, либо все условия установить на одном уровне, то есть, к примеру:
if message.text == '/start':
bot.send_message(message.chat.id, 'Привет, я бот '+ 'что-то' +"еще что-то")
elif message.text == 'группа':
bot.send_message(message.chat.id, "чет или нечет")
elif message.text == 'чет':
bot.send_message(message.chat.id, 'нечет')
Но, лучше добавить ещё один обработчик. То есть, написать, например, так:
@bot.message_handler(content_types=['text'])
def gg(message):
if message.text == '/start':
bot.send_message(message.chat.id, 'Привет, я бот '+ 'что-то' +"еще что-то")
elif message.text == 'группа':
bot.send_message(message.chat.id, "чет или нечет")
bot.register_next_step_handler(message, chet_or_nechet)
def chet_or_nechet(message):
if message.text == 'чет':
bot.send_message(message.chat.id, 'нечет')
bot.polling(none_stop=True, interval=0)