@Nicky03
Новенький

Есть 2 блока, на погоду и на поговорить. Как сделать так чтоб если я выбрал «Погода» то он показывал погоду без повторного запроса?

@bot.message_handler(commands=['start'])
def start_message(message):
    keyboard = telebot.types.ReplyKeyboardMarkup(True)
    keyboard.row('Погода', 'Поговори со мной')
    bot.send_message(message.chat.id, 'Привет!', reply_markup=keyboard) 

@bot.message_handler(content_types = ["text"])
def send_msg(message):
	if message.text == 'Погода':
		bot.send_message(message.chat.id, "Введите город");
		bot.register_next_step_handler(message, send_weather);

	elif message.text == 'Поговори со мной':
		bot.send_message(message.chat.id, "Напиши мне");
		bot.register_next_step_handler(message, send_echo);

def send_weather(message):
	observation = mgr.weather_at_place (message.text)
	w = observation.weather
	temp = w.temperature('celsius')["temp"]
	wind = w.wind()["speed"] 
	answer = "В городе " + message.text + " сейчас " + w.detailed_status + ".\n" "За окном " + str(int(temp)) + " градусов.\n" "Скорость ветра " + str(wind) + " м/с."
	bot.send_message(message.chat.id, answer)

def send_echo (message):
	bot.send_message (message.chat.id, message.text)
	
bot.polling (none_stop = True)
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Храни состояние для пользователя.
Т.е. для каждого пользователя нужна какая-то структура данных, которая будет хранить информацию - запрашивал ли пользователь погоду (и если да, то в каком городе), находится ли пользователь в режиме разговора, и так далее.
Кроме того, нужно решить - хочешь ли ты, чтобы бот запоминал это между перезапусками? Если можно ограничиться запоминанием в рамках одной рабочей сессии, то дело упрощается. Если нет, то нужно будет разбираться с базами данных.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы