@Innaro

Как Телеграмм бота заставить перейти в режим ожидания и не реагировать на сообщения?

Есть вот такой код, и есть проблема, хотелось бы чтобы бот после отправки
bot.send_message(message.chat.id, 'Марка: ' + brand_t + '\nГос.номер: ' + number_t + '\nДата вьезда: ' + arrivaldate_t + '\nЧтобы сделать на Эйдос-Медицина то /sendeidos, а на Смартлайфкея /sendsmart.');

уходил в режим ожидания
а так ввел /pass, потом данные и всё он ждет дальше чтобы ему отправили команду, а не реагировал на любое текстовое сообщение

patheidos = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'ЗАЯВКА НА ВЪЕЗД НА склад.docx')
doceidos = DocxTemplate("Eidos.docx")
pathsmart = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'ЗАЯВКА НА ВЪЕЗД СМАРТЛАЙФКЕА.docx')
docsmart = DocxTemplate("Smart.docx")
record_dict = {};
brand_t = "";
number_t = "";
arrivaldate_t = "";

# Функция, обрабатывающая команду /start
# Команда start

@bot.message_handler(commands=["start"])
def start(m, res=False):
        bot.send_message(m.chat.id, 'Чтобы сделать пропуск, нужна марка автомобиля, гос.номер, и дата вьезда. \nМарка автомобиля с большой буквы.\nГос.номер нужно писать формате, А 111 АА. \nА дата вьезда, это дата вьезда автомобиля, и писать ее нужно формате ДД.ММ.ГГГГ. \nЧтобы сделать пропуск нужно отправить в чат /pass. \nЧтобы сделать на Эйдос-Медицина то /sendeidos, а на Смартлайфкея /sendsmart.');

#Блок ЭЙДОС-МЕДИЦИНА
    
@bot.message_handler(commands=["sendeidos"])
#Сохранием файл
def sendeidos(message, res=False):
    if os.path.isfile(patheidos) == True:
        os.remove(patheidos)
    else:
        print("Файла нет, идем дальше")
    context = {'Brand' : brand_t, 'Number' : number_t, 'ArrivalDate' : arrivaldate_t}
    print(context)
    doceidos.render(context)
    doceidos.save("ЗАЯВКА НА ВЪЕЗД НА склад.docx")
    print('Марка: ' + brand_t + '\nГос.номер: ' + number_t + '\nДата вьезда: ' + arrivaldate_t)
    time.sleep(2)
    SendEidos.checkem()
    bot.send_message(message.chat.id, 'Пропуск отправлен ');

#Блок СМАРТЛАЙФКЕЯ

@bot.message_handler(commands=["sendsmart"])
#Сохранием файл
def sendsmart(message, res=False):
    if os.path.isfile(pathsmart) == True:
        os.remove(pathsmart)
    else:
        print("Файла нет, идем дальше")
    context = {'Brand' : brand_t, 'Number' : number_t, 'ArrivalDate' : arrivaldate_t}
    print(context)
    docsmart.render(context)
    docsmart.save("ЗАЯВКА НА ВЪЕЗД СМАРТЛАЙФКЕА.docx")
    print('Марка: ' + brand_t + '\nГос.номер: ' + number_t + '\nДата вьезда: ' + arrivaldate_t)
    time.sleep(2)
    SendSmart.sendslk()
    bot.send_message(message.chat.id, 'Пропуск отправлен ');
    
# Функция, обрабатывающая команду /pass
# Команда pass

@bot.message_handler(commands=["pass"])
def passn(message, res=False):
    bot.send_message(message.chat.id, 'Марка Автомобиля? ');
    @bot.message_handler(content_types=['text'])
    def brand(message): #получаем марку Автомобиля
        global brand_t;
        brand_t = message.text;
        print('Марка: ' + brand_t)
        bot.send_message(message.chat.id, 'Номера Автомобиля? ');
        bot.register_next_step_handler(message, number);
        
    def number(message):
        global number_t; #получаем номер Автомобиля
        number_t = message.text;
        print('Гос.номер: ' + number_t)
        bot.send_message(message.chat.id, 'Какого числа должен заехать? ');
        bot.register_next_step_handler(message, arrivaldate);
        
    def arrivaldate(message):
        global arrivaldate_t; #получаем дату въезда
        arrivaldate_t = message.text;
        print('Дата вьезда: ' + arrivaldate_t)
        bot.send_message(message.chat.id, 'Марка: ' + brand_t + '\nГос.номер: ' + number_t + '\nДата вьезда: ' + arrivaldate_t + '\nЧтобы сделать на Эйдос-Медицина то /sendeidos, а на Смартлайфкея /sendsmart.');
  

while True:
    try:
        bot.polling(none_stop=True,interval=0)
    except Exception as e:
        print(e)
  • Вопрос задан
  • 236 просмотров
Пригласить эксперта
Ответы на вопрос 1
comandante_ss
@comandante_ss
Как вариант можно использовать состояния, те после определённого сообщения машина встаёт в состояние 1 и ждёт /pass
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
16 июн. 2024, в 11:11
25000 руб./за проект
16 июн. 2024, в 10:55
2000 руб./за проект