Добрый день, я ещё начинающий программист и вот уже прошёл основы и пишу бота, которые использует API
Вот мой код:
Я пишу бота, которому вводят команду /lowprice далее вводят Город в котором будет производиться поиск и потом уже, когда запрос API Обработан бот просит ввести максимальное кол-во отелей, так вот я хочу сделать так, чтобы при каждом выведенном отеле бот спрашивал нужно ли вывести фотографию этого отеля. Сам запрос у меня работает, выводит отели цены, но бот сразу выводит n количество раз, нужно ли ввести фото не дожидаясь ответа пользователя.
Мой вопрос состоит в том, как сделать так, чтобы бот дождался ответа пользователя, а потом уже выводил нужную информацию, не прошу написать код за меня, хотел бы услышать ваше мнение на этот счёт, например, что нужно использовать генераторы или например какую-то функцию бота. И ещё мини вопрос(Чтобы в функции запрашивать у пользователя какую-то новую информацию всегда нужно использовать bot.register_next_step_handler(message, low_price_hotels) и писать новую функцию:?) Спасибо!
from decouple import config
import telebot
from bots_requests.low_price_req import Lowprice
from requests import get
bot = telebot.TeleBot(config('KEY'))
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
if message.text == "/lowprice":
bot.send_message(message.from_user.id, "Введите город: ")
bot.register_next_step_handler(message, low_price_hotels)
else:
bot.send_message(message.from_user.id, 'Я вас не понимаю')
def low_price_hotels(message):
hotels_request = Lowprice(message.text)
sorted_function = hotels_request.sorted_hotels()
bot.reply_to(message, f'Введите количетсво отелей(max: {len(sorted_function)}): ')
bot.register_next_step_handler(message, hotels_max, sorted_function)
def hotels_max(message, *args):
maximum_hotels = int(message.text)
for sorted_hotels in range(0, maximum_hotels):
hotel_name, hotel_price, hotel_id = args[0][sorted_hotels].split(',')
bot.send_message(message.from_user.id, hotel_name, hotel_price)
bot.send_message(message.from_user.id, 'Хотите ли вы получить фото?')
bot.register_next_step_handler(message, photo_funct, hotel_id)
def photo_funct(message, *args):
if message.text == 'да':
bot.send_photo(message.chat.id, get("https://exp.cdn-hotels.com/hotels/37000000/36790000/36789900/36789845/895ded4a.jpg").content)
if __name__ == '__main__':
bot.polling(none_stop=True, interval=0)